⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 controls.c

📁 这是ARM嵌入式系统的实验教程中的MINIGUI的实验源代码!
💻 C
📖 第 1 页 / 共 2 页
字号:
#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 + -