?? menu.c
字號:
/***************************************************************************** 文件名:Menu.C* 功能:MiniGUI應用例子。* 創建一個包含有下拉菜單的主窗口。* 說明:使用MiniGUI for uC/OS-II,使用ADS 1.2編譯器。****************************************************************************/#include <string.h>/* 包含MiniGUI的配置頭文件(編譯配置選項) */#include "MiniGUI_config.h"/* 包含MiniGUI頭文件 */#include "common.h"#include "minigui.h"#include "gdi.h"#include "window.h"#include "control.h"/* 主窗口起始位置及大小 */#define MWINDOW_LX 5 /* 窗口左邊框的x值 */#define MWINDOW_TY 50 /* 窗口上邊框的y值 */#define MWINDOW_RX 235 /* 窗口右邊框的x值 */#define MWINDOW_BY 200 /* 窗口下邊框的y值 *//* 定義菜單資源ID */#define IDM_FILE 2010#define IDM_EXIT 2011 #define IDM_HELP 2020#define IDM_ABOUT 2021HWND hMainWnd; // 主窗口句柄/***************************************************************************** 名稱:CreatFileMenu()* 功能:建立子菜單"File"。* 入口參數:無* 出口參數:返回菜單句柄。****************************************************************************/static HMENU CreatFileMenu(void){ HMENU hmenu; MENUITEMINFO mii; /* 建立下拉式子菜單"File" */ memset(&mii, 0, sizeof(MENUITEMINFO)); // 初始化mii所有單元為0 mii.type = MFT_STRING; mii.id = 0; mii.typedata = (DWORD)"File"; hmenu = CreatePopupMenu(&mii); /* 添加菜單項"Exit" */ memset(&mii, 0, sizeof(MENUITEMINFO)); mii.type = MFT_STRING; mii.state = 0; mii.id = IDM_EXIT; mii.typedata = (DWORD)"Exit"; InsertMenuItem(hmenu, 0, TRUE, &mii); return(StripPopupHead(hmenu));}/***************************************************************************** 名稱:CreatAboutMenu()* 功能:建立子菜單"Help"。* 入口參數:無* 出口參數:返回菜單句柄。****************************************************************************/static HMENU CreatAboutMenu(void){ HMENU hmenu; MENUITEMINFO mii; /* 建立下拉式子菜單"Help" */ memset(&mii, 0, sizeof(MENUITEMINFO)); mii.type = MFT_STRING; mii.id = 0; mii.typedata = (DWORD)"Help"; hmenu = CreatePopupMenu(&mii); /* 添加菜單項"About" */ memset(&mii, 0, sizeof(MENUITEMINFO)); mii.type = MFT_STRING; mii.state = 0; mii.id = IDM_ABOUT; mii.typedata = (DWORD)"About"; InsertMenuItem(hmenu, 0, TRUE, &mii); return(StripPopupHead(hmenu));}/***************************************************************************** 名稱:CreateMainMenu()* 功能:建立主菜單(下拉式)。* 入口參數:無* 出口參數:返回菜單句柄。****************************************************************************/static HMENU CreateMainMenu(void){ HMENU hmenu; MENUITEMINFO mii; hmenu = CreateMenu(); /* 添加"File"菜單 */ memset(&mii, 0, sizeof(MENUITEMINFO)); // 初始化mii所有單元為0 mii.type = MFT_STRING; mii.id = IDM_FILE; mii.typedata = (DWORD)"File..."; mii.hsubmenu = CreatFileMenu(); // 建立子菜單 InsertMenuItem(hmenu, 0, TRUE, &mii); /* 添加"Help"菜單 */ memset(&mii, 0, sizeof(MENUITEMINFO)); mii.type = MFT_STRING; mii.id = IDM_HELP; mii.typedata = (DWORD)"Help..."; mii.hsubmenu = CreatAboutMenu(); InsertMenuItem(hmenu, 1, TRUE, &mii); return(hmenu);}/***************************************************************************** 名稱:WinProc()* 功能:主窗口過程函數。* 處理MSG_COMMAND消息,執行相應的菜單功能。* 入口參數:hWnd 窗口句柄* message 消息* wParam 消息附加參數1* lParam 消息附加參數2* 出口參數:消息已處理則返回0。****************************************************************************/static int WinProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam){ HDC hdc; switch(message) { case MSG_PAINT: hdc = BeginPaint(hWnd); TextOut(hdc, 10, 50, "This is MiniGUI Window!"); EndPaint(hWnd, hdc); break; case MSG_CLOSE: DestroyMainWindow(hWnd); PostQuitMessage(hWnd); break; case MSG_COMMAND: switch(wParam) { case IDM_EXIT: DestroyMainWindow(hWnd); PostQuitMessage(hWnd); break; case IDM_ABOUT: MessageBox(hWnd, "Menu demo V1.0", "About", MB_OK); break; } break; default: return(DefaultMainWinProc(hWnd, message, wParam, lParam)); } return(0);}/***************************************************************************** 名稱:InitMainWindow()* 功能:建立主窗口。* 入口參數:無* 出口參數:建立成功返回1,否則返回0。****************************************************************************/int InitMainWindow(void){ MAINWINCREATE window_info; window_info.dwStyle = WS_VISIBLE | WS_BORDER | WS_CAPTION; window_info.dwExStyle = WS_EX_NONE; window_info.spCaption = "Menu demo"; // 窗口標題 window_info.hMenu = CreateMainMenu(); // 使用下拉式菜單 window_info.hCursor = GetSystemCursor(0); window_info.hIcon = 0; window_info.MainWindowProc = WinProc; window_info.lx = MWINDOW_LX; window_info.ty = MWINDOW_TY; window_info.rx = MWINDOW_RX; window_info.by = MWINDOW_BY; window_info.iBkColor = COLOR_lightwhite; window_info.dwAddData = 0; window_info.hHosting = HWND_DESKTOP; hMainWnd = CreateMainWindow (&window_info); if (hMainWnd == HWND_INVALID) return(0); else return(1);}/***************************************************************************** 名稱:MiniGUIMain()* 功能:MiniGUI程序入口點。* 入口參數:argc 參數個數* argv 參數字符串指針* 出口參數:返回0。****************************************************************************/int MiniGUIMain(int argc, const char *argv[]){ MSG Msg;#ifdef _LITE_VERSION SetDesktopRect(0,0, 800,600);#endif InitMainWindow(); ShowWindow(hMainWnd, SW_SHOWNORMAL); while (GetMessage(&Msg, hMainWnd)) { TranslateMessage(&Msg); DispatchMessage(&Msg); } MainWindowThreadCleanup (hMainWnd); return(0);}#ifndef _LITE_VERSION #include "dti.c"#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -