📄 controls.c
字号:
#else "进度条",
#endif NULL};int progressbar_scene_init (HWND hWnd, MDSCENE *pScene){ control_scene_init (hWnd, pScene); SendDlgItemMessage (hWnd, IDC_PB2, PBM_SETRANGE, 0, 1000); SendDlgItemMessage (hWnd, IDC_PB2, PBM_SETSTEP, 10, 0); SetWindowElementColorEx (GetDlgItem(hWnd, IDC_PB3), BKC_HILIGHT_NORMAL, PIXEL_green); SetWindowElementColorEx (GetDlgItem(hWnd, IDC_PB4), BKC_HILIGHT_NORMAL, PIXEL_green); SendDlgItemMessage (hWnd, IDC_PB5, PBM_SETRANGE, 0, 1000); SendDlgItemMessage (hWnd, IDC_PB5, PBM_SETSTEP, 10, 0); return 0;}static intprogressbar_scene_proc (HWND hWnd, int message, WPARAM wParam, LPARAM lParam){ switch (message) { case MSG_TIMER: { static int pos = 0; if (wParam == IDC_DKTIMER) { pos += 4; SendDlgItemMessage (hWnd, IDC_PB1, PBM_SETPOS, pos, 0); SendDlgItemMessage (hWnd, IDC_PB2, PBM_STEPIT, 0, 0); SendDlgItemMessage (hWnd, IDC_PB3, PBM_DELTAPOS, 10, 0); SendDlgItemMessage (hWnd, IDC_PB4, PBM_DELTAPOS, 2, 0); SendDlgItemMessage (hWnd, IDC_PB5, PBM_STEPIT, 0, 0); return 0; } } } /* end switch */ return default_desktop_win_proc (hWnd, message, wParam, lParam);}#define IDC_TREEVIEW 501#define CHAPTER_NUM 5static TVITEMINFO bookInfo ={
#ifdef MGDEMO_ENGLISH
"MiniGUI Programmer Guide",
#else
"MiniGUI编程指南"
#endif };static CTRLDATA CtrlBook[] ={ { "treeview", WS_BORDER | WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL, 10, 10, 300, 160, IDC_TREEVIEW,
#ifdef MGDEMO_ENGLISH
"Treeview Control",
#else
"treeview控件",
#endif (LPARAM)&bookInfo },};static const char *chapter[] ={
#ifdef MGDEMO_ENGLISH
"Chapter16 Treeview",
"Chapter17 Listview",
"Chapter18 MonthCanlendar",
"Chapter19 SpinBox",
"Chapter20 CoolBar",
#else
"第十六章 树型控件",
"第十七章 列表型控件",
"第十八章 月历控件",
"第十九章 旋钮控件",
"第二十章 酷工具栏控件",
#endif };static const char *section[] ={
#ifdef MGDEMO_ENGLISH
"Style",
"Message",
"Notification Code"
#else "控件风格", "控件消息", "控件通知码"
#endif};const char * ctrl_treeview_tips[] = {
#ifdef MGDEMO_ENGLISH
"Treeview",
#else "树型控件",
#endif NULL};int treeview_scene_init (HWND hWnd, MDSCENE *pScene){ TVITEMINFO tvItemInfo; int item; int i, j; control_scene_init (hWnd, pScene); for (i = 0; i < CHAPTER_NUM; i++) { tvItemInfo.text = (char*)chapter[i]; item = SendMessage (GetDlgItem(hWnd, IDC_TREEVIEW), TVM_ADDITEM, 0, (LPARAM)&tvItemInfo); for (j = 0; j < 3; j++) { tvItemInfo.text = (char*)section[j]; SendMessage (GetDlgItem(hWnd, IDC_TREEVIEW), TVM_ADDITEM, item, (LPARAM)&tvItemInfo); } } return 0;}/* ------------------------------- combobox ---------------------------------- */#define IDC_CB1 501#define IDC_CB2 502#define IDC_CB3 503#define IDC_CB4 504#define IDC_CB5 505static CTRLDATA my_ctrl_combobox[] ={ { "combobox", WS_VISIBLE | CBS_DROPDOWNLIST | CBS_NOTIFY | CBS_READONLY, 10, 10, 120, 24, IDC_PB1, "", 100 }, { "combobox", WS_VISIBLE | CBS_SPINLIST | CBS_SPINARROW_LEFTRIGHT | WS_TABSTOP | CBS_SORT, 10, 40, 120, 24, IDC_PB2, "", 0 }, { "combobox", WS_VISIBLE | CBS_AUTOSPIN | WS_TABSTOP, 10, 70, 120, 24, IDC_PB3, "", 0 }, { "combobox", WS_VISIBLE | CBS_SIMPLE | CBS_SORT | WS_TABSTOP, 170, 10, 100, 24, IDC_PB4, "", 100 }, { "combobox", WS_VISIBLE | CBS_SPINLIST | CBS_SPINARROW_TOPBOTTOM | CBS_EDITNOBORDER | WS_TABSTOP | CBS_SORT, 10, 110, 120, 40, IDC_PB5, "", 0 },};const char * ctrl_combobox_tips[] = {#ifdef MGDEMO_ENGLISH
"Combobox",
#else
"组合框",
#endif NULL};int combobox_scene_init (HWND hWnd, MDSCENE *pScene){ int i; const char *names[] = { "Unix OS", "Linux", "FreeBSD", "Solaris", "SVR4", "AIX", "MacOSX" }; const char *names2[] = { "RedHat", "Debian", "SuSE", "Gentoo", "Mandrake", "Slackware" }; control_scene_init (hWnd, pScene); for (i=0; i<TABLESIZE(names); i++) { SendDlgItemMessage (hWnd, IDC_CB1, CB_ADDSTRING, i, (LPARAM)names[i]); SendDlgItemMessage (hWnd, IDC_CB2, CB_ADDSTRING, i, (LPARAM)names[i]); } SendDlgItemMessage (hWnd, IDC_CB1, CB_SETCURSEL, 0, 0); SendDlgItemMessage (hWnd, IDC_CB2, CB_SETCURSEL, 1, 0); for (i=0; i<TABLESIZE(names2); i++) { SendDlgItemMessage (hWnd, IDC_CB4, CB_ADDSTRING, i, (LPARAM)names2[i]); SendDlgItemMessage (hWnd, IDC_CB5, CB_ADDSTRING, i, (LPARAM)names2[i]); } SendDlgItemMessage (hWnd, IDC_CB4, CB_SETCURSEL, 0, 0); SendDlgItemMessage (hWnd, IDC_CB5, CB_SETCURSEL, 4, 0); SendDlgItemMessage (hWnd, IDC_CB3, CB_SETSPINVALUE, 13, 0); return 0;}/* ------------------------------- trackbar ---------------------------------- */#define IDC_TK1 501#define IDC_TK2 502#define IDC_TK3 503#define IDC_TK4 504#define IDC_TK5 505static CTRLDATA my_ctrl_trackbar[] ={ { "trackbar", WS_VISIBLE | TBS_NOTIFY, 10, 10, 100, 50, IDC_TK1, "", 0 }, { "trackbar", WS_VISIBLE | TBS_NOTIFY | TBS_TIP, 120, 10, 150, 50, IDC_TK2, "", 0 }, { "trackbar", WS_VISIBLE | TBS_NOTIFY | TBS_VERTICAL, 20, 70, 50, 90, IDC_TK3, "", 0 }, { "trackbar", WS_VISIBLE | TBS_NOTIFY | TBS_VERTICAL | TBS_NOTICK, 80, 70, 50, 90, IDC_TK4, "", 0 },};const char * ctrl_trackbar_tips[] = {
#ifdef MGDEMO_ENGLISH
"Slider",
#else "滑块",
#endif NULL};int trackbar_scene_init (HWND hWnd, MDSCENE *pScene){ control_scene_init (hWnd, pScene); SendDlgItemMessage (hWnd, IDC_TK1, TBM_SETRANGE, 0, 1000); SendDlgItemMessage (hWnd, IDC_TK1, TBM_SETLINESIZE, 1, 0); SendDlgItemMessage (hWnd, IDC_TK1, TBM_SETPAGESIZE, 10, 0); SendDlgItemMessage (hWnd, IDC_TK1, TBM_SETTICKFREQ, 1000, 0); SendDlgItemMessage (hWnd, IDC_TK2, TBM_SETTIP, (WPARAM)"Min", (LPARAM)"Max"); SendDlgItemMessage (hWnd, IDC_TK3, TBM_SETRANGE, 0, 10000); SendDlgItemMessage (hWnd, IDC_TK3, TBM_SETLINESIZE, 1, 0); SendDlgItemMessage (hWnd, IDC_TK3, TBM_SETPAGESIZE, 10, 0); SendDlgItemMessage (hWnd, IDC_TK3, TBM_SETTICKFREQ, 10000, 0); return 0;}/* ------------------------------- newtoolbar ---------------------------------- */#define IDC_NT1 501#define IDC_NT2 502#define IDC_NT3 503#define IDC_NT4 504static NTBINFO ntb_info = {bmp_wordtb, 5, 0, 0, 0};static CTRLDATA my_ctrl_newtoolbar[] ={ { "newtoolbar", WS_VISIBLE, 10, 10, 180, 0, IDC_NT1, "", (DWORD)&ntb_info, },};static const char * ctrl_newtoolbar_tips[] = {
#ifdef MGDEMO_ENGLISH
"Toolbar",
#else
"工具条",
#endif NULL};static int newtoolbar_scene_init (HWND hWnd, MDSCENE *pScene){ NTBITEMINFO ntbii; int i; control_scene_init (hWnd, pScene); memset (&ntbii, 0, sizeof(ntbii)); for (i=0; i<5; i++) { ntbii.flags = NTBIF_PUSHBUTTON; ntbii.id = 1000+i; ntbii.bmp_cell = i; SendDlgItemMessage (hWnd, IDC_NT1, TBM_ADDITEM, 0, (LPARAM)&ntbii); } return 0;}/* ------------------------------- listview ---------------------------------- */#define IDC_LV1 501static CTRLDATA my_ctrl_listview[] ={ { "listview", WS_VISIBLE | WS_BORDER | WS_HSCROLL | WS_VSCROLL, 10, 10, 300, 160, IDC_LV1, "", 0 },};static const char * ctrl_listview_tips[] = {
#ifdef MGDEMO_ENGLISH
"Listview",
#else
"列表型控件",
#endif NULL};static int listview_scene_init (HWND hWnd, MDSCENE *pScene){ LVCOLUMN lvcol; int i; char *heads[] = {
#ifdef MGDEMO_ENGLISH
"GUI",
"Fuction",
"capability",
"Stability",
"Cubage",
"RAM Requirement",
"Customizable",
"Portable ",
#else
"GUI",
"功能",
"性能",
"稳定性",
"体积",
"RAM需求",
"可定制性",
"可移植性",
#endif
}; char *minigui[] = {
#ifdef MGDEMO_ENGLISH
"MiniGUI",
"strong",
"fast",
"stable",
"500K",
"more than 4M",
"good",
"very good",
#else "MiniGUI", "强", "快", "稳定", "500K", "4M以上", "很好", "非常好",
#endif }; char *qt[] = {
#ifdef MGDEMO_ENGLISH
"Qt/Embedded",
"strong",
"slowly",
"stable",
"1.5M",
"more than 16M",
"normal",
"bad",
#else "Qt/Embedded", "很强", "较慢", "稳定", "1.5M", "16M以上", "一般", "差",
#endif }; char *microwin[] = {
#ifdef MGDEMO_ENGLISH
"MicroWindows",
"bad",
"very slowly",
"instability",
"800K",
"more than 8M",
"normal",
"bad",
#else "MicroWindows", "差", "很慢", "不稳定", "800K", "8M以上", "一般", "较差",
#endif }; char **gui[3]; int col_nr = TABLESIZE(heads); gui[0] = minigui; gui[1] = qt; gui[2] = microwin; control_scene_init (hWnd, pScene); for (i=0; i < col_nr; i++) { lvcol.nCols = i; lvcol.pszHeadText = heads[i]; lvcol.width = 80; lvcol.pfnCompare = NULL; lvcol.colFlags = 0; SendDlgItemMessage (hWnd, IDC_LV1, LVM_ADDCOLUMN, 0, (LPARAM)&lvcol); } for (i=0; i < TABLESIZE(gui); i++) { int j; LVITEM lvitem; GHANDLE item; LVSUBITEM subdata; lvitem.nItemHeight = 25; lvitem.nItem = i; item = SendDlgItemMessage (hWnd, IDC_LV1, LVM_ADDITEM, 0, (LPARAM)&lvitem); subdata.flags = 0; subdata.image = 0; subdata.nItem = i; for (j=0; j < col_nr; j++) { subdata.subItem = j; subdata.nTextColor = PIXEL_black; subdata.pszText = gui[i][j]; SendDlgItemMessage (hWnd, IDC_LV1, LVM_SETSUBITEM, item, (LPARAM)&subdata); } } SetFocus (GetDlgItem(hWnd, IDC_LV1)); SendDlgItemMessage (hWnd, IDC_LV1, LVM_SELECTITEM, 0, 0); return 0;}/* ------------------------------- monthcalendar ---------------------------------- */#define IDC_MC1 501static CTRLDATA my_ctrl_monthcal[] ={ { "monthcalendar",
#ifdef MGDEMO_ENGLISH
WS_VISIBLE | MCS_ENG_S,
#else WS_VISIBLE | MCS_CHN,
#endif 10, 10, 300, 160, IDC_MC1, "", 0 },};static const char * ctrl_monthcal_tips[] = {
#ifdef MGDEMO_ENGLISH
"MonthCanlendar Control",
#else "月历控件",
#endif NULL};/* ------------------------------- Total scenes ---------------------------------- */int control_scene_init (HWND hWnd, MDSCENE *pScene){ int i; CTRLSCENE *pCtrlScene = (CTRLSCENE *) pScene; SetWindowBkColor (hWnd, GetWindowElementColor(BKC_CONTROL_DEF)); UpdateWindow (hWnd, TRUE); for (i=0; i<pCtrlScene->controlnr; i++) { PCTRLDATA pCtrlData = pCtrlScene->controls + i; CreateWindowEx (pCtrlData->class_name, pCtrlData->caption, pCtrlData->dwStyle | WS_CHILD, pCtrlData->dwExStyle, pCtrlData->id, pCtrlData->x, pCtrlData->y, pCtrlData->w, pCtrlData->h, hWnd, pCtrlData->dwAddData); } return 0;}void control_scene_deinit (HWND hWnd, MDSCENE *pScene){ DestroyAllControls (hWnd);}CTRLSCENE my_ctrl_scenes [] ={ { NULL, NULL, control_scene_init, control_scene_deinit, NULL, ctrl_static_tips, TABLESIZE(my_ctrl_static), my_ctrl_static, }, { NULL, NULL, control_scene_init, control_scene_deinit, NULL, ctrl_static2_tips, TABLESIZE(my_ctrl_static2), my_ctrl_static2, }, { NULL, NULL, control_scene_init, control_scene_deinit, NULL, ctrl_button_tips, TABLESIZE(my_ctrl_button), my_ctrl_button, }, { NULL, NULL, control_scene_init, control_scene_deinit, NULL, ctrl_button2_tips, TABLESIZE(my_ctrl_button2), my_ctrl_button2, }, { NULL, NULL, control_scene_init, control_scene_deinit, NULL, ctrl_sledit_tips, TABLESIZE(my_ctrl_sledit), my_ctrl_sledit, }, { NULL, NULL, control_scene_init, control_scene_deinit, NULL, ctrl_medit_tips, TABLESIZE(my_ctrl_medit), my_ctrl_medit, }, { NULL, NULL, menubutton_scene_init, control_scene_deinit, NULL, ctrl_menubutton_tips, TABLESIZE(my_ctrl_menubutton), my_ctrl_menubutton, }, { NULL, NULL, listbox_scene_init, control_scene_deinit, NULL, ctrl_listbox_tips, TABLESIZE(my_ctrl_listbox), my_ctrl_listbox, }, { NULL, NULL, progressbar_scene_init, control_scene_deinit, progressbar_scene_proc, ctrl_progressbar_tips, TABLESIZE(my_ctrl_progressbar), my_ctrl_progressbar, }, { NULL, NULL, combobox_scene_init, control_scene_deinit, NULL, ctrl_combobox_tips, TABLESIZE(my_ctrl_combobox), my_ctrl_combobox, }, { NULL, NULL, trackbar_scene_init, control_scene_deinit, NULL, ctrl_trackbar_tips, TABLESIZE(my_ctrl_trackbar), my_ctrl_trackbar, }, { NULL, NULL, newtoolbar_scene_init, control_scene_deinit, NULL, ctrl_newtoolbar_tips, TABLESIZE(my_ctrl_newtoolbar), my_ctrl_newtoolbar, }, { NULL, NULL, listview_scene_init, control_scene_deinit, NULL, ctrl_listview_tips, TABLESIZE(my_ctrl_listview), my_ctrl_listview, }, { NULL, NULL, control_scene_init, control_scene_deinit, NULL, ctrl_monthcal_tips, TABLESIZE(my_ctrl_monthcal), my_ctrl_monthcal, }, { NULL, NULL, treeview_scene_init, control_scene_deinit, NULL, ctrl_treeview_tips, TABLESIZE(CtrlBook), CtrlBook, },};int ctrl_scene_nr = TABLESIZE(my_ctrl_scenes);int InitControlScenes (MDSCENE *start_scene, MDSCENE *end_scene){ int i; if (ctrl_scene_nr == 0) return -1; my_ctrl_scenes[0].prev = start_scene; if (ctrl_scene_nr > 1) my_ctrl_scenes[0].next = (MDSCENE *)&my_ctrl_scenes[1]; for (i = 1; i < ctrl_scene_nr-1; i++) { my_ctrl_scenes[i].prev = (MDSCENE *)&my_ctrl_scenes[i-1]; my_ctrl_scenes[i].next = (MDSCENE *)&my_ctrl_scenes[i+1]; } if (ctrl_scene_nr > 1) { my_ctrl_scenes[ctrl_scene_nr-1].prev = (MDSCENE *)&my_ctrl_scenes[ctrl_scene_nr-2]; my_ctrl_scenes[ctrl_scene_nr-1].next = end_scene; } return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -