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

📄 lab_main.c

📁 minigui的实验代码
💻 C
字号:
#include <minigui/common.h>#include <minigui/minigui.h>#include <minigui/gdi.h>#include <minigui/window.h>#include <minigui/control.h>#include <minigui/mgext.h>#include <minigui/skin.h>#include "lab_main.h"//皮肤元素的坐标#define BUTTON_X        53  //button x#define BUTTON_Y        56  //button y#define BUTTON_W        84  //button width#define BUTTON_H        52  //button height#define BUTTON_H_SPACE  10  //button horizontal space#define BUTTON_V_SPACE  15  //button vertical space//按钮控件的数量#define BUTTON_NUM      13//皮肤元素的ID#define BUTTON_LED      101#define BUTTON_KEY      102#define BUTTON_BL       103#define BUTTON_DC       104#define BUTTON_STEP     105#define BUTTON_RS       106#define BUTTON_GPRS     107#define BUTTON_AUDIO    108#define BUTTON_BT       109#define BUTTON_CAN      110#define BUTTON_AD       111#define BUTTON_CAMERA   112#define BUTTON_CLOSE   113//皮肤元素使用的皮肤图片static char *main_bmp_name[] = {    "./res/main/bj.png",    "./res/main/led.png",     "./res/main/key.png",    "./res/main/bklight.png",    "./res/main/dcmotor.png",    "./res/main/stmotor.png",    "./res/main/rs232.png",    "./res/main/gprs.png",    "./res/main/audio.png",    "./res/main/bt.png",    "./res/main/can.png",    "./res/main/ad.png",    "./res/main/camera.png",     "./res/main/cl.png"};//保存皮肤图片的位图static BITMAP main_bmp[BUTTON_NUM+1];//皮肤元素数据结构static skin_item_t main_skin_items[] ={    {BUTTON_LED, SI_TYPE_CMDBUTTON | SI_TEST_SHAPE_RECT | SI_STATUS_VISIBLE,         BUTTON_X, BUTTON_Y, {}, 1, "", 1, NULL},    {BUTTON_KEY, SI_TYPE_CMDBUTTON | SI_TEST_SHAPE_RECT | SI_STATUS_VISIBLE,         BUTTON_X + (BUTTON_W+BUTTON_H_SPACE)*1, BUTTON_Y , {}, 2, "", 0, NULL},    {BUTTON_BL, SI_TYPE_CMDBUTTON | SI_TEST_SHAPE_RECT | SI_STATUS_VISIBLE,         BUTTON_X + (BUTTON_W+BUTTON_H_SPACE)*2, BUTTON_Y , {}, 3, ""},    {BUTTON_DC, SI_TYPE_CMDBUTTON | SI_TEST_SHAPE_RECT | SI_STATUS_VISIBLE,         BUTTON_X + (BUTTON_W+BUTTON_H_SPACE)*3, BUTTON_Y , {}, 4, ""},    {BUTTON_STEP, SI_TYPE_CMDBUTTON | SI_TEST_SHAPE_RECT | SI_STATUS_VISIBLE,         BUTTON_X, BUTTON_Y + (BUTTON_H+BUTTON_V_SPACE), {}, 5, ""},	    {BUTTON_RS, SI_TYPE_CMDBUTTON | SI_TEST_SHAPE_RECT | SI_STATUS_VISIBLE,         BUTTON_X + (BUTTON_W+BUTTON_H_SPACE)*1, BUTTON_Y + (BUTTON_H+BUTTON_V_SPACE), {}, 6, ""},    {BUTTON_GPRS, SI_TYPE_CMDBUTTON | SI_TEST_SHAPE_RECT | SI_STATUS_VISIBLE,         BUTTON_X + (BUTTON_W+BUTTON_H_SPACE)*2, BUTTON_Y + (BUTTON_H+BUTTON_V_SPACE), {}, 7, ""},    {BUTTON_AUDIO, SI_TYPE_CMDBUTTON | SI_TEST_SHAPE_RECT | SI_STATUS_VISIBLE,         BUTTON_X + (BUTTON_W+BUTTON_H_SPACE)*3, BUTTON_Y + (BUTTON_H+BUTTON_V_SPACE), {}, 8, ""},    {BUTTON_BT, SI_TYPE_CMDBUTTON | SI_TEST_SHAPE_RECT | SI_STATUS_VISIBLE,         BUTTON_X, BUTTON_Y + (BUTTON_H+BUTTON_V_SPACE)*2, {}, 9, ""},	    {BUTTON_CAN, SI_TYPE_CMDBUTTON | SI_TEST_SHAPE_RECT | SI_STATUS_VISIBLE,         BUTTON_X + (BUTTON_W+BUTTON_H_SPACE)*1, BUTTON_Y + (BUTTON_H+BUTTON_V_SPACE)*2, {}, 10, ""},    {BUTTON_AD, SI_TYPE_CMDBUTTON | SI_TEST_SHAPE_RECT | SI_STATUS_VISIBLE,         BUTTON_X + (BUTTON_W+BUTTON_H_SPACE)*2, BUTTON_Y + (BUTTON_H+BUTTON_V_SPACE)*2, {}, 11, ""},    {BUTTON_CAMERA, SI_TYPE_CMDBUTTON | SI_TEST_SHAPE_RECT | SI_STATUS_VISIBLE,         BUTTON_X + (BUTTON_W+BUTTON_H_SPACE)*3, BUTTON_Y + (BUTTON_H+BUTTON_V_SPACE)*2, {}, 12, ""},    {BUTTON_CLOSE, SI_TYPE_CMDBUTTON | SI_TEST_SHAPE_RECT | SI_STATUS_VISIBLE,         460, 10, {}, 13, ""},};//皮肤对象数据结构static skin_head_t main_skin = {    "main", SKIN_STYLE_TOOLTIP, NULL, NULL, 0, 13, main_skin_items, 0};//装载或释放皮肤图片void load_main_skin_bmps(skin_head_t *skin, BOOL load){    int i, bmp_num = sizeof(main_bmp_name)/sizeof(char *);    if(load) {        for(i=0; i<bmp_num; i++)            (void)LoadBitmapFromFile(HDC_SCREEN, &main_bmp[i], main_bmp_name[i]);        skin->bmps = main_bmp;    }    else {        for(i=0; i<bmp_num; i++)            UnloadBitmap(&main_bmp[i]);        skin->bmps = NULL;    }}//皮肤界面的事件回调函数static int main_event_cb(HWND hWnd, skin_item_t *item, int event, void *data){    if (event == SIE_BUTTON_CLICKED) {//按钮点击事件        switch(item->id) {            case BUTTON_LED:                //CreateLEDWindow(hWnd);                break;            case BUTTON_KEY:                //CreateKEYWindow(hWnd);                break;            case BUTTON_BL:                //CreateBkLightWindow(hWnd);                break;            case BUTTON_DC:                //CreateDCWindow(hWnd);                break;            case BUTTON_STEP:                //CreateSMWindow(hWnd);                break;            case BUTTON_RS:                CreateRSWindow(hWnd);                break;            case BUTTON_GPRS:                //CreateGPRSWindow(hWnd);                break;            case BUTTON_AUDIO:                //CreateAudioWindow(hWnd);                break;            case BUTTON_BT:                //CreateBTWindow(hWnd);                break;            case BUTTON_CAN:                //CreateCanWindow(hWnd);                break;            case BUTTON_AD:                //CreateADWindow(hWnd);                break;            case BUTTON_CAMERA:                //CreateCameraWindow(hWnd);                break;	      case BUTTON_CLOSE:                SendMessage (hWnd, MSG_CLOSE, 0, 0);               break;		            default:                break;        }    }    return 0;}//皮肤界面的消息回调函数static int main_msg_cb(HWND hWnd, int message, WPARAM wparam, LPARAM lparam, int *result){    switch(message) {        case MSG_KEYDOWN: {            int scancode = (int)wparam;            if (scancode == SCANCODE_Q)                SendMessage(hWnd, MSG_CLOSE, 0, 0);            break;        }			case MSG_CLOSE:    {	DestroyAllControls (hWnd);      MainWindowThreadCleanup (hWnd);	DestroyMainWindow (hWnd);    //撤销皮肤对象   	 skin_deinit(&main_skin);    //释放皮肤图片    load_main_skin_bmps(&main_skin, FALSE);    //释放MiniGUIExt库的函数    	MiniGUIExtCleanUp();	PostQuitMessage (hWnd);	printf("demo for dmatek quit!!\n");        return 0;        }        default:            break;    }    return 0;}	//MiniGUI程序入口点int MiniGUIMain (int argc, const char* argv[]){    MSG Msg;    HWND hMainWnd=HWND_INVALID;//#ifdef _MGRM_PROCESSES    //将自己添加到层中    JoinLayer(NULL, "lab" , 0 , 0);//#endif    //初始化MiniGUIExt库的函数    InitMiniGUIExt();    load_main_skin_bmps(&main_skin, TRUE);    //初始化皮肤对象    if (! skin_init(&main_skin, main_event_cb, main_msg_cb) ) {        fprintf(stderr, "skin init fail!\n");    }    else {        //创建皮肤窗口        hMainWnd = create_skin_main_window(&main_skin, HWND_DESKTOP, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, FALSE);        ShowCursor(FALSE);        if(hMainWnd == HWND_INVALID)            goto err;        //获取消息,分发消息        while (GetMessage(&Msg, hMainWnd)) {            TranslateMessage(&Msg);            DispatchMessage(&Msg);        }        //清除主窗口的消息队列等系统资源        MainWindowThreadCleanup (hMainWnd);	  DestroyMainWindow (hMainWnd);    }err:    //撤销皮肤对象    skin_deinit(&main_skin);    //释放皮肤图片    load_main_skin_bmps(&main_skin, FALSE);    //释放MiniGUIExt库的函数    MiniGUIExtCleanUp();    return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -