dlg.c
上传用户:sdaoma
上传日期:2013-08-07
资源大小:3838k
文件大小:6k
源码类别:

GPS编程

开发平台:

C/C++

  1. /****************************************************************************
  2. * 文件名:Dlg.C
  3. * 功能:MiniGUI应用例子。
  4. *       建立一个模式对话框,对话框包括2个命令按钮和1个静态文本框。
  5. * 说明:使用MiniGUI for uC/OS-II,使用ADS 1.2编译器。
  6. ****************************************************************************/
  7. /* 包含MiniGUI的配置头文件(编译配置选项) */
  8. #include "MiniGUI_config.h"
  9. /* 包含MiniGUI头文件 */
  10. #include "common.h"
  11. #include "minigui.h"
  12. #include "gdi.h"
  13. #include "window.h"
  14. #include "control.h"
  15. /* 主窗口起始位置及大小 */
  16. #define  MWINDOW_LX 5       /* 窗口左边框的x值 */
  17. #define  MWINDOW_TY 50      /* 窗口上边框的y值 */
  18. #define  MWINDOW_RX 235     /* 窗口右边框的x值 */
  19. #define  MWINDOW_BY 200     /* 窗口下边框的y值 */
  20. /* 定义静态文本框的ID */
  21. #define  IDC_DISP1 1001
  22. HWND  hMainWnd;     // 主窗口句柄
  23. /* 对话框属性设置 */
  24. static  DLGTEMPLATE  DlgInitProgress =
  25. {   WS_BORDER | WS_CAPTION, // 风格
  26.     WS_EX_NONE,             // 扩展风格
  27.     10, 10, 200, 130,       // 对话框起始坐标,宽度、高度
  28.     "Dlg demo",             // 对话框标题 
  29.     0,                      // 图标
  30.     0,                      // 菜单
  31.     3,                      // 内含控件个数
  32.     NULL,                   // 控件对象的地址
  33.     0                       // 附加数据
  34. };
  35. /* 对话框内的控件定义 */
  36. static CTRLDATA CtrlInitData[] = 
  37. {   
  38.     {   "static",
  39.         WS_VISIBLE | SS_SIMPLE,
  40.     10,30,  160, 16,
  41.     IDC_DISP1,
  42.     "This is MiniGUI dlg!",
  43.     0,
  44.         WS_EX_NONE
  45.     },
  46.     
  47.     {   "button",
  48.         WS_TABSTOP | WS_VISIBLE | BS_DEFPUSHBUTTON,
  49.         30,70,  60,25,
  50.         IDOK,
  51.         "OK",
  52.         0,
  53.         WS_EX_NONE
  54.     },
  55.     
  56.     {   "button",
  57.         WS_TABSTOP | WS_VISIBLE,
  58.         110,70, 60,25,
  59.         IDCANCEL,
  60.         "CANCEL",
  61.         0,
  62.         WS_EX_NONE
  63.     }
  64. };
  65. /****************************************************************************
  66. * 名称:DialogBoxProc()
  67. * 功能:对话框过程函数。
  68. *       处理MSG_COMMAND消息,执行命令按钮的功能。
  69. * 入口参数:hWnd        窗口句柄
  70. *           message     消息
  71. *           wParam      消息附加参数1
  72. *           lParam      消息附加参数2
  73. * 出口参数:返回消息处理结果。
  74. ****************************************************************************/
  75. static int  DialogBoxProc(HWND hdlg, int message, WPARAM wParam, LPARAM lParam)
  76. {   switch(message)
  77.     {   case MSG_INITDIALOG:
  78.            return(1);
  79.   
  80.         case MSG_COMMAND:
  81.         switch(wParam)
  82.         {   case IDOK:
  83.             case IDCANCEL:
  84.                 EndDialog(hdlg, wParam);
  85.                     DestroyAllControls(hdlg);
  86.                 break;
  87.         }
  88.         break;
  89.     }
  90.     
  91.     return(DefaultDialogProc(hdlg, message, wParam, lParam));
  92. }
  93. /****************************************************************************
  94. * 名称:InitDialogBox()
  95. * 功能:初始化对话框,然后启动对话框。 
  96. * 入口参数:hWnd        父窗口句柄
  97. * 出口参数:无
  98. ****************************************************************************/
  99. static void  InitDialogBox(HWND hWnd)
  100. {   DlgInitProgress.controls = CtrlInitData;    // 设置控件对象地址
  101.     /* 启动对话框"DlgInitProgress" */
  102.     DialogBoxIndirectParam(&DlgInitProgress, hWnd, DialogBoxProc, 0L);
  103. }
  104. /****************************************************************************
  105. * 名称:WinProc()
  106. * 功能:主窗口过程函数。
  107. *       当接收到MSG_LBUTTONDOWN消息,打开模式对话框。
  108. * 入口参数:hWnd        窗口句柄
  109. *           message     消息
  110. *           wParam      消息附加参数1
  111. *           lParam      消息附加参数2
  112. * 出口参数:消息已处理则返回0。
  113. ****************************************************************************/
  114. static int  WinProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam)
  115. {   HDC  hdc;
  116.     switch(message)
  117.     {   case MSG_PAINT:
  118.         hdc = BeginPaint(hWnd);
  119.         TextOut(hdc, 10, 50, "This is MiniGUI Window!");
  120.         EndPaint(hWnd, hdc);
  121.             break;
  122.         case MSG_CLOSE:
  123.         DestroyMainWindow(hWnd);
  124.         PostQuitMessage(hWnd);
  125.         break;
  126.         case MSG_LBUTTONDOWN:
  127.             InitDialogBox(hWnd);
  128.             break;
  129.         default:
  130.         return(DefaultMainWinProc(hWnd, message, wParam, lParam));
  131.     }
  132.     return(0);
  133. }
  134. /****************************************************************************
  135. * 名称:InitMainWindow()
  136. * 功能:建立主窗口。
  137. * 入口参数:无
  138. * 出口参数:建立成功返回1,否则返回0。
  139. ****************************************************************************/
  140. int InitMainWindow(void)
  141. {   MAINWINCREATE  window_info;
  142.     window_info.dwStyle = WS_VISIBLE | WS_BORDER | WS_CAPTION;
  143.     window_info.dwExStyle = WS_EX_NONE;
  144.     window_info.spCaption = "WWW.ZLGMCU.COM";
  145.     window_info.hMenu = 0;
  146.     window_info.hCursor = GetSystemCursor(0);
  147.     window_info.hIcon = 0;
  148.     window_info.MainWindowProc = WinProc;
  149.     window_info.lx = MWINDOW_LX;
  150.     window_info.ty = MWINDOW_TY;
  151.     window_info.rx = MWINDOW_RX;
  152.     window_info.by = MWINDOW_BY;
  153.     window_info.iBkColor = COLOR_lightwhite;
  154.     window_info.dwAddData = 0;
  155.     window_info.hHosting = HWND_DESKTOP; 
  156.     
  157.     hMainWnd = CreateMainWindow (&window_info);
  158.     if (hMainWnd == HWND_INVALID) return(0);
  159.       else  return(1);
  160. }
  161. /****************************************************************************
  162. * 名称:MiniGUIMain()
  163. * 功能:MiniGUI程序入口点。
  164. * 入口参数:argc    参数个数
  165. *           argv    参数字符串指针
  166. * 出口参数:返回0。
  167. ****************************************************************************/
  168. int  MiniGUIMain(int argc, const char *argv[])
  169. {   MSG Msg;
  170. #ifdef _LITE_VERSION
  171.     SetDesktopRect(0,0, 800,600);
  172. #endif
  173.     InitMainWindow();
  174.     ShowWindow(hMainWnd, SW_SHOWNORMAL);
  175.     while (GetMessage(&Msg, hMainWnd)) 
  176.     {   TranslateMessage(&Msg);
  177.         DispatchMessage(&Msg);
  178.     }
  179.     
  180.     MainWindowThreadCleanup (hMainWnd);
  181.     return(0);
  182. }
  183. #ifndef _LITE_VERSION
  184. #include "dti.c"
  185. #endif