📄 lab_main.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 + -