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

GPS编程

开发平台:

C/C++

  1. /****************************************************************************
  2. * 文件名:Hello.C
  3. * 功能:MiniGUI应用例子。
  4. *       创建一个主窗口,并在窗口中显示字符串"Hello World!   --ZLGMCU"。
  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 10      /* 窗口左边框的x值 */
  17. #define  MWINDOW_TY 50      /* 窗口上边框的y值 */
  18. #define  MWINDOW_RX 230     /* 窗口右边框的x值 */
  19. #define  MWINDOW_BY 180     /* 窗口下边框的y值 */
  20. /* 主窗口需要显示的字符串 */
  21. const char hello_str_time[] = {"TIME: %d : %d : %d.%d"};
  22. const char hello_str_date[] = {"DATE: 20%02d / %d / %d"};
  23. const char hello_str_lat[] = {"LAT: %s %d.%d%d"};
  24. const char hello_str_lon[] = {"LON: %s %d.%d%d"};
  25. const char hello_str_att[] = {"ATT: %d.%dm"};
  26. char hello_str1[30];
  27. char hello_str2[30];
  28. char hello_str3[50];
  29. char hello_str4[50];
  30. char hello_str5[30];
  31. HWND hMainWnd;      // 主窗口句柄
  32. /****************************************************************************
  33. * 名称:WinProc()
  34. * 功能:主窗口过程函数。
  35. *       处理MSG_PAINT消息,在窗口中显示hello_str字符串。
  36. * 入口参数:hWnd        窗口句柄
  37. *           message     消息
  38. *           wParam      消息附加参数1(对于不同的消息,有不同的用途)
  39. *           lParam      消息附加参数2(对于不同的消息,有不同的用途)
  40. * 出口参数:消息已处理则返回0。
  41. ****************************************************************************/
  42. static int  WinProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam)
  43. {   HDC  hdc;   // 定义一个图形设备上下文对象,输出字符时需要。
  44.     RECT rc;    // 定一个RECT对象(矩形)
  45.     switch(message)
  46.     {   case MSG_PAINT:
  47.         hdc = BeginPaint(hWnd);         // 获得设备hdc
  48.         
  49.         //TextOut(hdc, 10, 50, hello_str);// 可以使用TextOut函数在指定位置上显示字符串
  50.             GetClientRect(hWnd, &rc);       // 取得窗口客户区矩形
  51.            
  52.             DrawText(hdc, hello_str1, -1, &rc, DT_LEFT);     // 输出hello_str字符串
  53.             rc.top = rc.top + 16;
  54.             DrawText(hdc, hello_str2, -1, &rc, DT_LEFT);     // 输出hello_str字符串
  55.             rc.top = rc.top + 16;
  56.             DrawText(hdc, hello_str3, -1, &rc, DT_LEFT);     // 输出hello_str字符串
  57. rc.top = rc.top + 16;
  58.             DrawText(hdc, hello_str4, -1, &rc, DT_LEFT);     // 输出hello_str字符串
  59. rc.top = rc.top + 16;
  60.             DrawText(hdc, hello_str5, -1, &rc, DT_LEFT);     // 输出hello_str字符串
  61.         EndPaint(hWnd, hdc);            // 释放设备hdc
  62.         break;
  63.         case MSG_CLOSE:
  64.         DestroyMainWindow(hWnd);        // 销毁主窗口
  65.         PostQuitMessage(hWnd);          // 发送MSG_QUIT消息,通知"消息循环"结束
  66.         break;
  67.        default:
  68.         return(DefaultMainWinProc(hWnd, message, wParam, lParam));
  69.     }
  70.     return(0);
  71. }
  72. /****************************************************************************
  73. * 名称:InitMainWindow()
  74. * 功能:建立主窗口。
  75. * 入口参数:无
  76. * 出口参数:建立成功返回1,否则返回0。
  77. ****************************************************************************/
  78. int InitMainWindow(void)
  79. {   MAINWINCREATE  window_info;
  80.     window_info.dwStyle = WS_VISIBLE | WS_BORDER | WS_CAPTION;  // 窗口风格设置
  81.     window_info.dwExStyle = WS_EX_NONE;         // 不使用窗口扩展风格
  82.     window_info.spCaption = "MiniGUI";          // 窗口标题
  83.     window_info.hMenu = 0;                      // 无菜单
  84.     window_info.hCursor = 0;//GetSystemCursor(0);   // 设置窗口光标
  85.     window_info.hIcon = 0;                      // 无窗口图标
  86.     window_info.MainWindowProc = WinProc;       // 窗口过程函数
  87.     window_info.lx = MWINDOW_LX;                // 窗口的位置及大小设置
  88.     window_info.ty = MWINDOW_TY;
  89.     window_info.rx = MWINDOW_RX;
  90.     window_info.by = MWINDOW_BY;
  91.     window_info.iBkColor = COLOR_lightwhite;    // 窗口背景色
  92.     window_info.dwAddData = 0;
  93.     window_info.hHosting = HWND_DESKTOP;        // 托管窗口句柄
  94.     
  95.     hMainWnd = CreateMainWindow(&window_info); // 建立主窗口
  96.     if(hMainWnd == HWND_INVALID) return(0);
  97.        else return(1);
  98. }
  99. /****************************************************************************
  100. * 名称:MiniGUIMain()
  101. * 功能:MiniGUI程序入口点。
  102. * 入口参数:argc    参数个数
  103. *           argv    参数字符串指针
  104. * 出口参数:返回0。
  105. ****************************************************************************/
  106. int  MiniGUIMain(int argc, const char *argv[])
  107. {   MSG Msg;
  108. /* 虽然MiniGUI for uC/OS-II不支持"MiniGUI-Lite模式",
  109.    但为了保持代码的移植性,此段不要删除 
  110. */
  111. #ifdef _LITE_VERSION
  112.     SetDesktopRect(0,0, 800,600);
  113. #endif
  114. _sprintf(hello_str1,hello_str_date,0,0,0,0);
  115. _sprintf(hello_str2,hello_str_time,0,0,0);
  116. _sprintf(hello_str3,hello_str_lat,"N",0,0,0);
  117. _sprintf(hello_str4,hello_str_lon,"E",0,0,0);
  118. _sprintf(hello_str5,hello_str_att,0,0);
  119.     InitMainWindow();       // 建立主窗口
  120.     ShowWindow(hMainWnd, SW_SHOWNORMAL);    // 显示主窗口
  121.         /* 消息循环 */
  122.     while(GetMessage(&Msg, hMainWnd)) 
  123.     {   TranslateMessage(&Msg);
  124.         DispatchMessage(&Msg);
  125.     }
  126.     
  127.     MainWindowThreadCleanup(hMainWnd);
  128.     return(0);
  129. }
  130. void POSTMSG()
  131. {
  132. SendMessage(hMainWnd ,MSG_PAINT,0,0 );
  133. }
  134. /* 定义桌面接口函数 */
  135. #ifndef _LITE_VERSION
  136. #include "dti.c"
  137. #endif