menu.c
资源名称:GPRS_work.rar [点击查看]
上传用户:sdaoma
上传日期:2013-08-07
资源大小:3838k
文件大小:6k
源码类别:
GPS编程
开发平台:
C/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 2021
- HWND 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