minigui對話方塊+按鍵列表demo(加註釋)
阿新 • • 發佈:2018-12-17
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <minigui/common.h> #include <minigui/minigui.h> #include <minigui/gdi.h> #include <minigui/window.h> #include <minigui/control.h> #define IDC_1 100 #define IDC_2 101 #define IDC_3 102 #define IDC_4 103 static DLGTEMPLATE DlgFistWin = { WS_BORDER | WS_CAPTION |WS_MINIMIZEBOX | WS_MAXIMIZEBOX, //WS_CAPTION有題欄 WS_BORDER有邊框 WS_MINIMIZEBOX最小化 WS_EX_AUTOSECONDARYDC, 0, 0, 800, 480, //x y w h "this is static demo", //標題 0, 0, 5, //視窗個數 NULL, 0 }; static CTRLDATA SetDialogArr[] = { { "button", WS_VISIBLE | BS_AUTORADIOBUTTON | BS_CHECKED | WS_TABSTOP | WS_GROUP, //BS_CHECKED 初始選中 20, 28, 200, 20, IDC_1, "1", 0 }, { "button", WS_VISIBLE | BS_AUTORADIOBUTTON, //WS_VISIBLE 初始化可見 BS_AUTORADIOBUTTON顯示使用者的選擇 20, 48, 200, 20, IDC_2, "2", 0 }, { "button", WS_VISIBLE | BS_AUTORADIOBUTTON, 20, 68, 200, 20, IDC_3, "3", 0 }, { "button", WS_VISIBLE | BS_AUTORADIOBUTTON, 20, 88, 200, 20, IDC_4 , "4", 0 }, { "button", WS_VISIBLE | BS_PUSHBUTTON | WS_TABSTOP, //BS_PUSHBUTTON 按下 WS_TABSTOP tab停止 120, 230, 100, 30, IDCANCEL, "Exit", 0 }, }; static int DialogBlackProc(HWND hDlg, int message, WPARAM wParam, LPARAM lParam) { struct _DepInfo *info; switch (message) { //定義自己的對話方塊回撥函式時,需要處理 MSG_INITDIALOG 訊息 case MSG_INITDIALOG: info = (struct _DepInfo*)lParam; //資料初始化對話方塊 SetWindowAdditionalData (hDlg, (DWORD)lParam); break; //視窗空閒無事件發生的時候,會一直不停的傳送該訊息給主視窗 case MSG_IDLE: break; //監控修改 case MSG_COMMAND: switch (wParam) { case IDOK: // 使用 info 結構中的資料 case IDCANCEL: EndDialog (hDlg, wParam); break; } break; } return DefaultDialogProc (hDlg, message, wParam, lParam); } int MiniGUIMain (int argc, const char* argv[]) { #ifdef _MGRM_PROCESSES // MiniGUI-Processes 模式下加入層 JoinLayer(NAME_DEF_LAYER , "hello" , 0 , 0); #endif //設定為預設渲染器 一共四種渲染器classic、flat、fashion、skin SetDefaultWindowElementRenderer ("skin"); //對話方塊 controls指向定義控制元件的陣列 DlgFistWin.controls = SetDialogArr; //建立託管視窗為桌面視窗的對話方塊 DialogBoxIndirectParam (&DlgFistWin, HWND_DESKTOP, DialogBlackProc, 0L); return 0; }
效果圖