?? menudemo.c
字號:
/* ** $Id: menudemo.c,v 1.7 2003/06/13 07:15:49 weiym Exp $**** Listing 2.1**** helloworld.c: Sample program for MiniGUI Programming Guide** The first MiniGUI application.**** Copyright (C) 2003 Feynman Software.**** License: GPL*/#include <stdio.h>#include <minigui/common.h>#include <minigui/minigui.h>#include <minigui/gdi.h>#include <minigui/window.h>#include <minigui/control.h>#include "menudemo.h"static void DrawDemo (HWND hwnd, HDC hdc){ int x = 320, y= 240; int tox = 320, toy = 240; int count; unsigned int nr_colors = GetGDCapability (hdc, GDCAP_COLORNUM); SetPenColor (hdc, PIXEL_green); MoveTo (hdc, 0, 0); LineTo (hdc, 320, 240); SetPenColor (hdc, PIXEL_red); Circle(hdc, 150, 140, 50); SetPenColor (hdc, PIXEL_cyan);// Ellipse (hdc, 90, 80, 80, 40); Rectangle (hdc, 20, 30, 150, 150); SetBrushColor (hdc, PIXEL_red); FillBox (hdc, 230, 50, 80, 90); }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:#if 0 for (i = 0; i < 5; 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) ; } #endif 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){ HDC hdc4; switch (message) { case MSG_INITDIALOG: return 1;#if 0 case MSG_PAINT: hdc4 = BeginPaint (hDlg); // TextOut (hdc, 100, 100, "Hello, world!");// DrawDemo (hDlg ,hdc4); EndPaint (hDlg, hdc4); return 0;#endif 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);// DlgListDemo.controls = CtrlListDemoFiles; // DialogBoxIndirectParam (&DlgListDemo, hWnd, DialogBoxProc4, 0L);}static int MenuWinProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam){ HDC hdc; switch (message) { case MSG_PAINT: hdc = BeginPaint (hWnd); TextOut (hdc, 130, 100, "Demos");// DrawDemo (hWnd ,hdc); EndPaint (hWnd, hdc);// TrackMenuBar (hWnd, 0); return 0; case MSG_CLOSE: DestroyMainWindow (hWnd); PostQuitMessage (hWnd); return 0; 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);// hdc = BeginPaint (hWnd);// DrawDemo(hWnd, hdc);// EndPaint (hWnd, hdc); break; case IDM_DIALOG5: testPropertySheet (hWnd); break; case IDM_ABOUT:// OpenAboutDialog (); break; break; } } return DefaultMainWinProc(hWnd, message, wParam, lParam);}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 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 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 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.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;}int MiniGUIMain (int argc, const char* argv[]){ MSG Msg; HWND hMainWnd; MAINWINCREATE CreateInfo;#ifdef _LITE_VERSION SetDesktopRect(0, 0, 1024, 768);#endif// CreateInfo.dwStyle = WS_VISIBLE | WS_BORDER | WS_CAPTION; CreateInfo.dwStyle = WS_SYSMENU | WS_BORDER | WS_CAPTION;// CreateInfo.dwExStyle = WS_EX_NONE; CreateInfo.dwExStyle = WS_EX_NONE | WS_EX_USEPRIVATECDC; CreateInfo.spCaption = "達盛MenuDemo";// CreateInfo.hMenu = 0; CreateInfo.hMenu = createmenu();// CreateInfo.hMenu = createpmenufile(); CreateInfo.hCursor = GetSystemCursor(0); CreateInfo.hIcon = 0; CreateInfo.MainWindowProc = MenuWinProc; CreateInfo.lx = 0; CreateInfo.ty = 0; CreateInfo.rx = 320; CreateInfo.by = 240; CreateInfo.iBkColor = COLOR_lightwhite; CreateInfo.dwAddData = 0; CreateInfo.hHosting = HWND_DESKTOP; hMainWnd = CreateMainWindow (&CreateInfo); if (hMainWnd == HWND_INVALID) return -1; ShowWindow(hMainWnd, SW_SHOWNORMAL);// PostMessage (hMainWnd, MSG_ACTIVEMENU, 0, 0); // TrackMenuBar (hMainWnd, 0);// HiliteMenuBarItem (hMainWnd, 0, HMF_DOWNITEM); while (GetMessage(&Msg, hMainWnd)) { TranslateMessage(&Msg); DispatchMessage(&Msg); } MainWindowThreadCleanup (hMainWnd); return 0;}#ifndef _LITE_VERSION#include <minigui/dti.c>#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -