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

GPS编程

开发平台:

C/C++

  1. /****************************************************************************
  2. * 文件名:Paint.C
  3. * 功能:MiniGUI应用例子。
  4. *       创建一个主窗口,对窗口的MSG_PAINT消息进行计数,并在窗口
  5. *       中显示计数值。鼠标左键按下时,认窗口重绘。
  6. * 说明:使用MiniGUI for uC/OS-II,使用ADS 1.2编译器。
  7. ****************************************************************************/
  8. /* 包含MiniGUI的配置头文件(编译配置选项) */
  9. #include "MiniGUI_config.h"
  10. /* 包含MiniGUI头文件 */
  11. #include "common.h"
  12. #include "minigui.h"
  13. #include "gdi.h"
  14. #include "window.h"
  15. #include "control.h"
  16. /* 主窗口起始位置及大小 */
  17. #define  MWINDOW_LX 10      /* 窗口左边框的x值 */
  18. #define  MWINDOW_TY 50      /* 窗口上边框的y值 */
  19. #define  MWINDOW_RX 230     /* 窗口右边框的x值 */
  20. #define  MWINDOW_BY 180     /* 窗口下边框的y值 */
  21. HWND hMainWnd;      // 主窗口句柄
  22. /****************************************************************************
  23. * 名称:WinProc()
  24. * 功能:主窗口过程函数。
  25. *       处理MSG_PAINT消息,先对计数变量进行加一计数,然后将计数值输
  26. *       出到窗口中显示。
  27. * 入口参数:hWnd        窗口句柄
  28. *           message     消息
  29. *           wParam      消息附加参数1
  30. *           lParam      消息附加参数2
  31. * 出口参数:消息已处理则返回0。
  32. ****************************************************************************/
  33. static int  WinProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam)
  34. {   HDC  hdc;
  35.     char  disp_buf[50];
  36.     static int  no = 0;
  37.     switch(message)
  38.     {   case MSG_PAINT:
  39.         hdc = BeginPaint(hWnd);
  40.         no++;
  41.         sprintf(disp_buf, "MSG_PAINT消息次数:%d", no);
  42.         TextOut(hdc, 10, 35, disp_buf); 
  43.         EndPaint(hWnd, hdc);
  44.         break;
  45.         case MSG_LBUTTONDOWN:     // 鼠标左键按下消息
  46.         //InvalidateRect(hWnd, NULL, TRUE); // 重绘整个窗口 (可以用UpdateWindow函数)
  47.             UpdateWindow(hWnd, TRUE);
  48.         break;
  49.         
  50.     case MSG_RBUTTONDOWN:
  51.             UpdateWindow(hWnd, TRUE);
  52.         break;
  53.         
  54.         case MSG_CLOSE:
  55.         DestroyMainWindow(hWnd);
  56.         PostQuitMessage(hWnd);
  57.         break;
  58.         default:
  59.         return(DefaultMainWinProc(hWnd, message, wParam, lParam));
  60.     }
  61.     return(0);
  62. }
  63. /****************************************************************************
  64. * 名称:InitMainWindow()
  65. * 功能:建立主窗口。
  66. * 入口参数:无
  67. * 出口参数:建立成功返回1,否则返回0。
  68. ****************************************************************************/
  69. int InitMainWindow(void)
  70. {   MAINWINCREATE  window_info;
  71.     window_info.dwStyle = WS_VISIBLE | WS_BORDER | WS_CAPTION;
  72.     window_info.dwExStyle = WS_EX_NONE;
  73.     window_info.spCaption = "MSG_PAINT消息";
  74.     window_info.hMenu = 0;
  75.     window_info.hCursor = GetSystemCursor(0);
  76.     window_info.hIcon = GetSmallSystemIcon(IDI_APPLICATION);
  77.     window_info.MainWindowProc = WinProc;
  78.     window_info.lx = MWINDOW_LX;
  79.     window_info.ty = MWINDOW_TY;
  80.     window_info.rx = MWINDOW_RX;
  81.     window_info.by = MWINDOW_BY;
  82.     window_info.iBkColor = COLOR_lightwhite;
  83.     window_info.dwAddData = 0;
  84.     window_info.hHosting = HWND_DESKTOP; 
  85.     
  86.     hMainWnd = CreateMainWindow(&window_info);
  87.     if(hMainWnd == HWND_INVALID) return(0);
  88.       else return(1);
  89. }
  90. /****************************************************************************
  91. * 名称:MiniGUIMain()
  92. * 功能:MiniGUI程序入口点。
  93. * 入口参数:argc    参数个数
  94. *           argv    参数字符串指针
  95. * 出口参数:返回0。
  96. ****************************************************************************/
  97. int  MiniGUIMain(int argc, const char *argv[])
  98. {   MSG Msg;
  99. #ifdef _LITE_VERSION
  100.     SetDesktopRect(0,0, 800,600);
  101. #endif
  102.     InitMainWindow();
  103.     ShowWindow(hMainWnd, SW_SHOWNORMAL);
  104.     while(GetMessage(&Msg, hMainWnd)) 
  105.     {   TranslateMessage(&Msg);
  106.         DispatchMessage(&Msg);
  107.     }
  108.     
  109.     MainWindowThreadCleanup(hMainWnd);
  110.     return(0);
  111. }
  112. #ifndef _LITE_VERSION
  113. #include "dti.c"
  114. #endif