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

GPS编程

开发平台:

C/C++

  1. /****************************************************************************
  2. * 文件名:DispBmp.C
  3. * 功能:MiniGUI应用例子。
  4. *       使用LoadBitmapFromMem装载一个BMP文件数据(内建资源),然后使用
  5. *       FillBoxWithBitmap在主窗口上显示该图片。
  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 20      /* 窗口左边框的x值 */
  18. #define  MWINDOW_TY 40      /* 窗口上边框的y值 */
  19. #define  MWINDOW_RX 220     /* 窗口右边框的x值 */
  20. #define  MWINDOW_BY 280     /* 窗口下边框的y值 */
  21. /* 声明bmp文件大小及数据指针 */
  22. extern const unsigned int   sz_bmp1;
  23. extern const unsigned char  bmp1_data[];
  24. HWND hMainWnd;      // 主窗口句柄
  25. /****************************************************************************
  26. * 名称:WinProc()
  27. * 功能:主窗口过程函数。
  28. *       处理MSG_PAINT消息,在窗口中显示BMP图片。
  29. * 入口参数:hWnd        窗口句柄
  30. *           message     消息
  31. *           wParam      消息附加参数1(对于不同的消息,有不同的用途)
  32. *           lParam      消息附加参数2(对于不同的消息,有不同的用途)
  33. * 出口参数:消息已处理则返回0。
  34. ****************************************************************************/
  35. static int  WinProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam)
  36. {   static BITMAP  s_bmp;
  37.     HDC  hdc;   // 定义一个图形设备上下文对象,输出字符时需要。
  38.     
  39.     switch(message)
  40.     {   case MSG_CREATE:
  41.             if(LoadBitmapFromMem( HDC_SCREEN,   // 设备上下文
  42.                                   &s_bmp,       // BITMAP变量地址
  43.                                   bmp1_data,    // 图形文件数据
  44.                                   sz_bmp1,      // 文件大小
  45.                                   "bmp") )      // 文件类型
  46.             {   return(-1);
  47.             }
  48.             break;            
  49.     
  50.         case MSG_PAINT:
  51.         hdc = BeginPaint(hWnd);         // 获得设备hdc         
  52.         FillBoxWithBitmap (hdc, 7, 10, 180, 200, &s_bmp);  // 显示图片          
  53.         EndPaint(hWnd, hdc);            // 释放设备hdc
  54.         break;
  55.         case MSG_CLOSE:
  56.             UnloadBitmap (&s_bmp);
  57.         DestroyMainWindow(hWnd);        // 销毁主窗口
  58.         PostQuitMessage(hWnd);          // 发送MSG_QUIT消息,通知"消息循环"结束
  59.         break;
  60.        default:
  61.         return(DefaultMainWinProc(hWnd, message, wParam, lParam));
  62.     }
  63.     return(0);
  64. }
  65. /****************************************************************************
  66. * 名称:InitMainWindow()
  67. * 功能:建立主窗口。
  68. * 入口参数:无
  69. * 出口参数:建立成功返回1,否则返回0。
  70. ****************************************************************************/
  71. int InitMainWindow(void)
  72. {   MAINWINCREATE  window_info;
  73.     window_info.dwStyle = WS_VISIBLE | WS_BORDER | WS_CAPTION;  
  74.     window_info.dwExStyle = WS_EX_NONE;         
  75.     window_info.spCaption = "MiniGUI";          
  76.     window_info.hMenu = 0;                      
  77.     window_info.hCursor = GetSystemCursor(0);   
  78.     window_info.hIcon = 0;                      
  79.     window_info.MainWindowProc = WinProc;       
  80.     window_info.lx = MWINDOW_LX;                
  81.     window_info.ty = MWINDOW_TY;
  82.     window_info.rx = MWINDOW_RX;
  83.     window_info.by = MWINDOW_BY;
  84.     window_info.iBkColor = COLOR_lightwhite;    
  85.     window_info.dwAddData = 0;
  86.     window_info.hHosting = HWND_DESKTOP;        
  87.     
  88.     hMainWnd = CreateMainWindow(&window_info);
  89.     if(hMainWnd == HWND_INVALID) return(0);
  90.        else return(1);
  91. }
  92. /****************************************************************************
  93. * 名称:MiniGUIMain()
  94. * 功能:MiniGUI程序入口点。
  95. * 入口参数:argc    参数个数
  96. *           argv    参数字符串指针
  97. * 出口参数:返回0。
  98. ****************************************************************************/
  99. int  MiniGUIMain(int argc, const char *argv[])
  100. {   MSG Msg;
  101. /* 虽然MiniGUI for uC/OS-II不支持"MiniGUI-Lite模式",
  102.    但为了保持代码的移植性,此段不要删除 
  103. */
  104. #ifdef _LITE_VERSION
  105.     SetDesktopRect(0,0, 800,600);
  106. #endif
  107.     InitMainWindow();       // 建立主窗口
  108.     ShowWindow(hMainWnd, SW_SHOWNORMAL);    // 显示主窗口
  109.     
  110.     /* 消息循环 */
  111.     while(GetMessage(&Msg, hMainWnd)) 
  112.     {   TranslateMessage(&Msg);
  113.         DispatchMessage(&Msg);
  114.     }
  115.     
  116.     MainWindowThreadCleanup(hMainWnd);
  117.     return(0);
  118. }
  119. /* 定义桌面接口函数 */
  120. #ifndef _LITE_VERSION
  121. #include "dti.c"
  122. #endif