www.pudn.com > 嵌入式linux9应用开发祥解.rar > dlgdemo.c
#include#include #include #include #include #include #include #include #include #include #include #include #include "dlgdemo.h" #include "resouce.h" static HMENU createpmenuabout (void) { HMENU hmnu; MENUITEMINFO mii; memset (&mii, 0, sizeof(MENUITEMINFO)); mii.type = MFT_STRING; mii.id = 0; mii.typedata = (DWORD)"About"; hmnu = CreatePopupMenu (&mii); memset (&mii, 0, sizeof(MENUITEMINFO)); mii.type = MFT_STRING ; mii.state = 0; mii.id = IDM_ABOUT; mii.typedata = (DWORD)"About MiniGUI..."; InsertMenuItem(hmnu, 3, TRUE, &mii); return hmnu; } static HMENU createpmenufile (void) { HMENU hmnu; MENUITEMINFO mii; memset (&mii, 0, sizeof(MENUITEMINFO)); mii.type = MFT_STRING; mii.id = 0; mii.typedata = (DWORD)"File"; hmnu = CreatePopupMenu (&mii); memset (&mii, 0, sizeof(MENUITEMINFO)); mii.type = MFT_STRING; mii.state = 0; mii.id = IDM_NEW; mii.typedata = (DWORD)"New"; InsertMenuItem(hmnu, 0, TRUE, &mii); mii.type = MFT_STRING; mii.state = 0; mii.id = IDM_OPEN; mii.typedata = (DWORD)"Open..."; InsertMenuItem(hmnu, 1, TRUE, &mii); mii.type = MFT_STRING; mii.state = 0; mii.id = IDM_SAVE; mii.typedata = (DWORD)"Save"; InsertMenuItem(hmnu, 2, TRUE, &mii); mii.type = MFT_STRING; mii.state = 0; mii.id = IDM_SAVEAS; mii.typedata = (DWORD)"Save As..."; InsertMenuItem(hmnu, 3, TRUE, &mii); mii.type = MFT_STRING; mii.state = 0; mii.id = IDM_CLOSE; mii.typedata = (DWORD)"Close"; InsertMenuItem(hmnu, 4, TRUE, &mii); mii.type = MFT_SEPARATOR; mii.state = 0; mii.id = 0; mii.typedata = 0; InsertMenuItem(hmnu, 5, TRUE, &mii); mii.type = MFT_STRING; mii.state = 0; mii.id = IDM_EXIT; mii.typedata = (DWORD)"Exit"; InsertMenuItem(hmnu, 6, TRUE, &mii); return hmnu; } static HMENU createpmenudialogs (void) { HMENU hmnu; MENUITEMINFO mii; memset (&mii, 0, sizeof(MENUITEMINFO)); mii.type = MFT_STRING; mii.id = 0; mii.typedata = (DWORD)"Dialogs"; hmnu = CreatePopupMenu (&mii); mii.type = MFT_STRING ; mii.state = 0; mii.id = IDM_DIALOG1; mii.typedata = (DWORD)"Dialog1..."; InsertMenuItem(hmnu, 0, TRUE, &mii); mii.type = MFT_STRING ; mii.state = 0; mii.id = IDM_DIALOG2; mii.typedata = (DWORD)"Dialog2..."; InsertMenuItem(hmnu, 1, TRUE, &mii); mii.type = MFT_STRING ; mii.state = 0; mii.id = IDM_DIALOG3; mii.typedata = (DWORD)"Dialog3..."; InsertMenuItem(hmnu, 2, TRUE, &mii); mii.type = MFT_STRING; mii.state = 0; mii.id = IDM_DIALOG4; mii.typedata = (DWORD)"Dialog4..."; InsertMenuItem(hmnu, 3, TRUE, &mii); mii.type = MFT_STRING; mii.state = 0; mii.id = IDM_DIALOG5; mii.typedata = (DWORD)"Property Sheet..."; InsertMenuItem(hmnu, 4, TRUE, &mii); return hmnu; } static HMENU createmenu (void) { HMENU hmnu; MENUITEMINFO mii; hmnu = CreateMenu(); memset (&mii, 0, sizeof(MENUITEMINFO)); mii.type = MFT_STRING; mii.id = 100; mii.typedata = (DWORD)"File"; mii.hsubmenu = createpmenufile (); InsertMenuItem(hmnu, 0, TRUE, &mii); mii.type = MFT_STRING; mii.id = 110; mii.typedata = (DWORD)"Dialogs"; mii.hsubmenu = createpmenudialogs (); InsertMenuItem(hmnu, 1, TRUE, &mii); mii.type = MFT_STRING; mii.id = 120; mii.typedata = (DWORD)"About"; mii.hsubmenu = createpmenuabout (); InsertMenuItem(hmnu, 2, TRUE, &mii); return hmnu; } static int DialogBoxProc1 (HWND hDlg, int message, WPARAM wParam, LPARAM lParam) { switch (message) { case MSG_INITDIALOG: return 1; case MSG_COMMAND: switch (wParam) { case IDOK: case IDCANCEL: EndDialog (hDlg, wParam); break; } break; } return DefaultDialogProc (hDlg, message, wParam, lParam); } static int DialogBoxProc2 (HWND hDlg, int message, WPARAM wParam, LPARAM lParam) { int i; char temp [20]; switch (message) { case MSG_INITDIALOG: for (i = 0; i < 20; i++) { sprintf (temp, "%d-Welcome", i); SendDlgItemMessage (hDlg, IDC_BOX1, CB_ADDSTRING, 0, (LPARAM)temp) ; SendDlgItemMessage (hDlg, IDC_BOX2, CB_ADDSTRING, 0, (LPARAM)temp) ; SendDlgItemMessage (hDlg, IDC_BOX4, CB_ADDSTRING, 0, (LPARAM)temp) ; } return 1; case MSG_COMMAND: switch (wParam) { case IDOK: case IDCANCEL: EndDialog (hDlg, wParam); break; } break; } return DefaultDialogProc (hDlg, message, wParam, lParam); } static int DialogBoxProc3 (HWND hDlg, int message, WPARAM wParam, LPARAM lParam) { switch (message) { case MSG_INITDIALOG: return 1; case MSG_COMMAND: switch (wParam) { case IDOK: case IDCANCEL: EndDialog (hDlg, wParam); break; } break; } return DefaultDialogProc (hDlg, message, wParam, lParam); } static int DialogBoxProc4 (HWND hDlg, int message, WPARAM wParam, LPARAM lParam) { switch (message) { case MSG_INITDIALOG: return 1; case MSG_COMMAND: switch (wParam) { case IDOK: case IDCANCEL: EndDialog (hDlg, wParam); break; } break; } return DefaultDialogProc (hDlg, message, wParam, lParam); } static void testDialogBox1 (HWND hWnd) { DlgInitProgress.controls = CtrlInitProgress; DialogBoxIndirectParam (&DlgInitProgress, hWnd, DialogBoxProc1, 0L); } static void testDialogBox2 (HWND hWnd) { DlgStartupMode.controls = CtrlStartupMode; DialogBoxIndirectParam (&DlgStartupMode, hWnd, DialogBoxProc2, 0L); } static void testDialogBox3 (HWND hWnd) { DlgPassword.controls = CtrlPassword; DialogBoxIndirectParam (&DlgPassword, hWnd, DialogBoxProc3, 0L); } static void testDialogBox4 (HWND hWnd) { DlgStructParams.controls = CtrlStructParams; DialogBoxIndirectParam (&DlgStructParams, hWnd, DialogBoxProc4, 0L); } int DialogTestMainWinProc (HWND hWnd, int message, WPARAM wParam, LPARAM lParam) { switch (message) { case MSG_CREATE: break; case MSG_COMMAND: switch (wParam) { case IDM_NEW: case IDM_OPEN: case IDM_SAVE: case IDM_SAVEAS: case IDM_CLOSE: break; case IDM_EXIT: SendMessage (hWnd, MSG_CLOSE, 0, 0L); break; case IDM_DIALOG1: testDialogBox1 (hWnd); break; case IDM_DIALOG2: testDialogBox2 (hWnd); break; case IDM_DIALOG3: testDialogBox3 (hWnd); break; case IDM_DIALOG4: testDialogBox4 (hWnd); break; case IDM_DIALOG5: testPropertySheet (hWnd); break; case IDM_ABOUT: #ifndef _LITE_VERSION OpenAboutDialog (); #else OpenAboutDialog (hWnd); #endif break; } break; case MSG_CLOSE: if (MessageBox (hWnd, "Are you sure to quit?", "DlgTest", MB_YESNOCANCEL | MB_ICONQUESTION | MB_BASEDONPARENT) != IDYES) return 0; DestroyMainWindow (hWnd); PostQuitMessage (hWnd); return 0; } return DefaultMainWinProc (hWnd, message, wParam, lParam); } static void InitCreateInfo (PMAINWINCREATE pCreateInfo) { pCreateInfo->dwStyle = WS_CAPTION | WS_BORDER | WS_SYSMENU; pCreateInfo->dwExStyle = WS_EX_NONE | WS_EX_USEPRIVATECDC; pCreateInfo->spCaption = "The dialog and control demo"; pCreateInfo->hMenu = createmenu (); pCreateInfo->hCursor = GetSystemCursor (IDC_ARROW); pCreateInfo->hIcon = 0; pCreateInfo->MainWindowProc = DialogTestMainWinProc; pCreateInfo->lx = 0; pCreateInfo->ty = 0; pCreateInfo->rx = 800; pCreateInfo->by = 400; pCreateInfo->iBkColor = COLOR_lightwhite; pCreateInfo->dwAddData = 0; pCreateInfo->hHosting = HWND_DESKTOP; } int MiniGUIMain (int args, const char* arg[]) { MSG Msg; MAINWINCREATE CreateInfo; HWND hMainWnd; #ifdef _LITE_VERSION int i; const char* layer = NULL; RECT max_rect = {0, 0, 0, 0}; for (i = 1; i < args; i++) { if (strcmp (arg[i], "-layer") == 0) { layer = arg[i + 1]; break; } } GetLayerInfo (layer, &max_rect, NULL, NULL, NULL); if (JoinLayer (layer, arg[0], max_rect.left, max_rect.top, max_rect.left + 1024, max_rect.top + 768) == INV_LAYER_HANDLE) { printf ("JoinLayer: invalid layer handle.\n"); exit (1); } #endif InitCreateInfo (&CreateInfo); hMainWnd = CreateMainWindow (&CreateInfo); if (hMainWnd == HWND_INVALID) return -1; ShowWindow (hMainWnd, SW_SHOWNORMAL); while( GetMessage (&Msg, hMainWnd) ) { TranslateMessage (&Msg); DispatchMessage (&Msg); } MainWindowThreadCleanup (hMainWnd); return 0; } #ifndef _LITE_VERSION #include #endif