http://blog.csdn.net/jia0511/article/details/8197897
分类:
- /*MINIGUi sample mitwindows*/
- /*gcc -o metext metext.c -lminigui -lpthread -lpng -ljpeg -lmgext*/
- #include <stdio.h>
- #include <string.h>
- #include <minigui/common.h>
- #include <minigui/minigui.h>
- #include <minigui/gdi.h>
- #include <minigui/window.h>
- #include <minigui/control.h>
- #define IDC_BUTTON1 102 //按钮
- #define IDC_BUTTON2 103 //按钮
- #define IDC_BUTTON3 104 //按钮
- #define IDC_BUTTON4 105 //按钮
- #define IDC_FANHUI 106 //按钮
- #define IDC_MAINMENU 107 //菜单
- static char *hello_str = "Hello MiniGUI!";
- static HWND hMainWnd; //窗口句柄
- static DLGTEMPLATE Dlgweihu= //DLGTEMPLATE 对话框模板
- {
- WS_BORDER | WS_CAPTION,
- WS_EX_NONE,
- 0, 0, 320, 240,
- "系统维护",
- 0, 0,
- 2, NULL,
- 0
- };static CTRLDATA Ctrlweihu[] = //对话框中的组件数组
- {
- {
- "button",
- WS_VISIBLE | WS_TABSTOP | WS_GROUP,
- 200, 150, 50, 30,
- IDC_FANHUI,
- "返回",
- 0
- }, {
- "button",
- WS_VISIBLE | WS_TABSTOP | WS_GROUP,
- 20, 150, 50, 30,
- IDC_MAINMENU,
- "主菜单",
- 0
- },
- };//=====================================================回调函数==DialogBoxProc3
- static int DialogBoxProc3 (HWND hDlg, int message, WPARAM wParam, LPARAM lParam)
- {
- switch (message) {
- case MSG_INITDIALOG:
- return 1;
- case MSG_COMMAND:
- {
- int id = LOWORD (wParam);
- int code = HIWORD (wParam);
- switch (wParam)
- {
- case IDC_MAINMENU:
- // if (id==IDC_MAINMENU && code==BN_CLICKED)
- if (id == IDC_MAINMENU && code == BN_DBLCLK)
- // if (id==IDC_MAINMENU && code==BN_PUSHED)
- {
- SetWindowText(hDlg,"Hello world!");
- }
- break;
- case IDC_FANHUI:
- case IDOK:
- case IDCANCEL:
- EndDialog (hDlg, wParam);//结束对话框
- break;
- }
- break;
- }
- }
- return DefaultDialogProc (hDlg, message, wParam, lParam);
- }
- //=====================================================================
- static void testDialogBox3 (HWND hWnd)
- {
- Dlgweihu.controls = Ctrlweihu; /*dialog controls */
- DialogBoxIndirectParam (&Dlgweihu, hWnd, DialogBoxProc3, 0L);
- }
- //下边是第二级窗口的代码******************************************************************
- static HWND hMainWnd1 = HWND_INVALID;
- static int InitOrderProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam) //第二及处理消息
- {
- switch (message) {
- case MSG_CREATE:
- CreateWindow (CTRL_BUTTON,
- "返回上级窗口",
- WS_CHILD | BS_PUSHBUTTON | BS_CHECKED | WS_VISIBLE,
- IDC_BUTTON3, /*button 3*/
- 10, 70, 80, 20, hWnd, 0);
- CreateWindow (CTRL_BUTTON,
- "到第三级窗口",
- WS_CHILD | BS_PUSHBUTTON | BS_CHECKED | WS_VISIBLE,
- IDC_BUTTON4, /*Button 4 */
- 100, 70, 80, 20, hWnd, 0);
- break;
- case MSG_COMMAND:
- {//-----------------Event
- int id = LOWORD(wParam);
- int code = HIWORD(wParam);
- char buffer [256];
- sprintf (buffer, "ID: %d, Code: %x", id, code);
- switch (id)
- {
- case (IDC_BUTTON3):
- SendMessage (hWnd, MSG_CLOSE, 0, 0);
- break;
- case (IDC_BUTTON4):
- if(code == BN_CLICKED)
- {
- testDialogBox3 (hWnd);
- }
- break;
- default:
- break;
- }
- }
- break;
- case MSG_DESTROY:
- DestroyAllControls (hWnd);
- hMainWnd1 = HWND_INVALID;
- return 0;
- case MSG_CLOSE:
- DestroyMainWindow (hWnd);
- MainWindowCleanup (hWnd);
- return 0;
- }
- return DefaultMainWinProc (hWnd, message, wParam, lParam);
- }
- //=============================================================================
- static void InitCreateInfoTWO (PMAINWINCREATE pCreateInfo)
- {
- pCreateInfo->dwStyle = WS_CHILD | WS_BORDER | WS_VISIBLE|WS_CAPTION;
- pCreateInfo->dwExStyle = WS_EX_NONE;
- pCreateInfo->spCaption = "第二级窗口";
- pCreateInfo->hMenu = 0;
- pCreateInfo->hCursor = GetSystemCursor(1);
- pCreateInfo->hIcon = 0;
- pCreateInfo->MainWindowProc = InitOrderProc; //窗体回调函数
- pCreateInfo->lx = 0;
- pCreateInfo->ty = 0;
- pCreateInfo->rx = 320;
- pCreateInfo->by = 240;
- pCreateInfo->iBkColor = COLOR_lightwhite;
- pCreateInfo->dwAddData = 0;
- pCreateInfo->hHosting = hMainWnd;
- }
- //=============================================================================
- void orderdesk (HWND hwnd)
- {
- MAINWINCREATE CreateInfo2; //新建一个窗口
- InitCreateInfoTWO (&CreateInfo2);
- hMainWnd1 = CreateMainWindow (&CreateInfo2);//建立窗口
- if (hMainWnd1 != HWND_INVALID)
- {
- ShowWindow (hMainWnd1, SW_SHOWNORMAL); //显示窗口
- return;
- }
- }
- //=====================================================================================
- //************************************************************************主窗口回调函数
- static int HelloWinProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam)
- {
- HDC hdc;
- RECT rc;
- switch (message) {
- case MSG_CREATE:
- CreateWindow (CTRL_BUTTON,//============CTRL_BUTTON 按钮
- "第二级窗口",
- WS_CHILD | BS_PUSHBUTTON | WS_VISIBLE,
- IDC_BUTTON1,//=========================按钮ID=IDC_BUTTON1
- 10, 70, 80, 20, hWnd, 0);
- CreateWindow (CTRL_BUTTON,//============CTRL_BUTTON 按钮
- "关闭",
- WS_CHILD | BS_PUSHBUTTON | WS_VISIBLE,
- IDC_BUTTON2,//=========================按钮ID=IDC_BUTTON2
- 100, 70, 80, 20, hWnd, 0);
- break;
- case MSG_COMMAND:
- {
- int id = LOWORD(wParam);//低
- int code = HIWORD(wParam);//高
- //printf ("Notification from buttons: ID: %d, Code: %x\n", id, code);
- switch (id)
- {
- case IDC_BUTTON1:
- printf ("opendisk: ID: %d, Code: %x\n", id, code);
- orderdesk(hWnd); //======================================函数调用
- break;
- case IDC_BUTTON2:
- SendMessage (hWnd, MSG_CLOSE, 0, 0L);//发送消息
- break;
- default:
- break;
- }
- break;
- }
- break;
- case MSG_PAINT://绘
- hdc = BeginPaint (hWnd);
- GetClientRect (hWnd, &rc);
- DrawText (hdc, hello_str, -1, &rc, DT_LEFT);
- EndPaint (hWnd, hdc);
- break;
- case MSG_CLOSE:
- DestroyMainWindow (hWnd);
- PostQuitMessage (hWnd);
- break;
- }
- return DefaultMainWinProc(hWnd, message, wParam, lParam);
- }
- //===========================================================================主窗口
- static void InitCreateInfo (PMAINWINCREATE pCreateInfo)
- {
- pCreateInfo->dwStyle = WS_CAPTION|WS_BORDER|WS_SYSMENU;
- pCreateInfo->dwExStyle = WS_EX_NONE;
- pCreateInfo->spCaption = "这是第一级窗口";
- pCreateInfo->hMenu = 0;
- pCreateInfo->hCursor = GetSystemCursor (0);
- pCreateInfo->hIcon = 0;
- pCreateInfo->MainWindowProc = HelloWinProc;//窗口回调函数
- pCreateInfo->lx = 0;
- pCreateInfo->ty = 0;
- pCreateInfo->rx = 320;
- pCreateInfo->by = 240;
- pCreateInfo->iBkColor = COLOR_lightwhite;
- pCreateInfo->dwAddData = 0;
- pCreateInfo->hHosting = HWND_DESKTOP;//======1
- }//========================================================================
- int MiniGUIMain (int argc, const char* argv[])
- {
- MSG Msg;
- MAINWINCREATE CreateInfo;
- #ifdef _LITE_VERSION
- SetDesktopRect(0, 0, 1024, 768);
- #endif
- InitCreateInfo (&CreateInfo);
- hMainWnd = CreateMainWindow (&CreateInfo);
- if (hMainWnd == HWND_INVALID)
- return -1;
- ShowWindow(hMainWnd, SW_SHOWNORMAL);
- printf ("The main window showed.\n");
- //==================================================================
- while (GetMessage(&Msg, hMainWnd))
- {
- TranslateMessage(&Msg);
- DispatchMessage(&Msg);
- }
- MainWindowThreadCleanup (hMainWnd);
- return 0;
- }
- #ifndef _LITE_VERSION
- #include <minigui/dti.c>
- #endif
-
顶
- 0
-
踩
- 0