你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【安富莱STemWin教程】第49章 MESSAGEBOX-消息框控件

[复制链接]
baiyongbin2009 发布时间:2015-3-9 15:45
特别说明:完整STemWin的1-60期教程和配套实例下载地址:链接
第49章 MESSAGEBOX-消息框控件

    本期教程讲解STemWin支持的消息框控件。
    49. 1 消息框控件介绍
    49. 2 官方DIALOG_MessageBox实例
    49. 3官方DIALOG_MessageBoxUser实例
    49. 4 总结
49.1 消息框控件介绍
    使用MESSAGEBOX控件可在带有标题栏和 “确定”按钮 (必须按下才能关闭窗口)的框架窗口中显示消息。创建消息框或者创建并执行消息框仅需一行代码。下表显示MESSAGEBOX小工具的外观:
49.1.png
    消息控件的使用比较简单,仅有两个相关的API:GUI_MessageBox()和MESSAGEBOX_Create()。
49.2 官方DIALOG_MessageBox实例
    官方的这个实例很好的演示了MessageBox的使用,这个例子在模拟器中的位置:
49.2.png
源码如下(程序中进行了详细的注释):
  1. ----------------------------------------------------------------------
  2. File        : DIALOG_MessageBox.c
  3. Purpose     : Example demonstrating GUI_MessageBox
  4. Requirements: WindowManager - (x)
  5.               MemoryDevices - (x)
  6.               AntiAliasing  - ( )
  7.               VNC-Server    - ( )
  8.               PNG-Library   - ( )
  9.               TrueTypeFonts - ( )
  10. ----------------------------------------------------------------------
  11. */

  12. #include "GUI.h"
  13. #include "WM.h"

  14. /*******************************************************************
  15. *
  16. *       Static code
  17. *
  18. ********************************************************************
  19. */
  20. /*********************************************************************
  21. *
  22. *       _cbBkWindow
  23. *    桌面窗口的回调函数
  24. */
  25. static void _cbBkWindow(WM_MESSAGE* pMsg) {
  26.   switch (pMsg->MsgId) {
  27.   case WM_PAINT:
  28.     GUI_SetBkColor(GUI_RED);
  29.     GUI_Clear();
  30.     GUI_SetColor(GUI_WHITE);
  31.     GUI_SetFont(&GUI_Font24_ASCII);
  32.     GUI_DispStringHCenterAt("DIALOG_MessageBox - Sample", 160, 5);
  33.     break;
  34.   default:
  35.     WM_DefaultProc(pMsg);
  36.   }
  37. }

  38. /*********************************************************************
  39. *
  40. *       Public code
  41. *
  42. **********************************************************************
  43. */
  44. /*********************************************************************
  45. *
  46. *       MainTask
  47. */
  48. void MainTask(void) {
  49.   GUI_Init();

  50.   /* 开启窗口使用内存设备 */
  51.   #if GUI_SUPPORT_MEMDEV
  52.     WM_SetCreateFlags(WM_CF_MEMDEV);
  53.   #endif
  54.   /* 设置桌面窗口的回调函数 */
  55.   WM_SetCallback(WM_HBKWIN, &_cbBkWindow);

  56.   //
  57.   // 创建消息框,等待直到他被关闭
  58.   //
  59.   while (1) {
  60.     GUI_MessageBox("This text is shown\nin a message box",
  61. "Caption/Title", GUI_MESSAGEBOX_CF_MOVEABLE);
  62.     GUI_Delay(750);                    // 延迟一段时间
  63.     GUI_MessageBox("New message !",
  64. "Caption/Title", GUI_MESSAGEBOX_CF_MOVEABLE);
  65.     GUI_Delay(750);
  66.   }
  67. }
复制代码
实际显示效果如下:
49.3.png
收藏 评论5 发布时间:2015-3-9 15:45

举报

5个回答
baiyongbin2009 回答时间:2015-3-9 15:46:33
49.3 官方DIALOG_MessageBoxUser实例
    官方的这个实例很好的演示了MessageBox的使用,这个例子在模拟器中的位置:
49.4.png
源码如下(程序中进行了详细的注释):
  1. /*********************************************************************
  2. *
  3. * Static code
  4. *
  5. **********************************************************************
  6. */
  7. /*********************************************************************
  8. *
  9. * _CreateMessageBox
  10. */
  11. static WM_HWIN _CreateMessageBox(const char * sMessage, const char * sCaption, int Flags, const GUI_FONT * pFont) {
  12. WM_HWIN hWin;
  13. WM_HWIN hItem;
  14. GUI_RECT Rect;

  15. hWin = MESSAGEBOX_Create(sMessage, sCaption, Flags);
  16. //
  17. // 设置消息框中标题的字体,消息框本质上也是框架窗口,所以这里可以直接的调用修改
  18. //
  19. FRAMEWIN_SetFont(hWin, pFont);
  20. //
  21. // 调整大小
  22. //
  23. WM_GetWindowRectEx(hWin, &Rect);
  24. WM_SetWindowPos(hWin, Rect.x0 - 15,
  25. Rect.y0 - 15,
  26. Rect.x1 - Rect.x0 + 1 + 30,
  27. Rect.y1 - Rect.y0 + 1 + 30);
  28. //
  29. // 设置按钮控件的字体
  30. //
  31. hItem = WM_GetDialogItem(hWin, GUI_ID_OK);
  32. BUTTON_SetFont(hItem, pFont);
  33. //
  34. // 调节按钮控件的大小
  35. //
  36. WM_GetWindowRectEx(hItem, &Rect);
  37. WM_SetWindowPos(hItem, Rect.x0,
  38. Rect.y0 + 10,
  39. Rect.x1 - Rect.x0 + 1 + 30,
  40. Rect.y1 - Rect.y0 + 1 + 5);
  41. //
  42. // 设置文本控件的字体
  43. //
  44. hItem = WM_GetDialogItem(hWin, GUI_ID_TEXT0);
  45. TEXT_SetFont(hItem, pFont);
  46. //
  47. // 调节文本控件的大小
  48. //
  49. WM_GetWindowRectEx(hItem, &Rect);
  50. WM_SetWindowPos(hItem, Rect.x0,
  51. Rect.y0,
  52. Rect.x1 - Rect.x0 + 1 + 30,
  53. Rect.y1 - Rect.y0 + 1 + 12);
  54. return hWin;
  55. }

  56. /*********************************************************************
  57. *
  58. * _EnableSkinning
  59. */
  60. static void _EnableSkinning(void) {
  61. FRAMEWIN_SetDefaultSkin(FRAMEWIN_SKIN_FLEX);
  62. BUTTON_SetDefaultSkin (BUTTON_SKIN_FLEX);
  63. }

  64. /*********************************************************************
  65. *
  66. * Public code
  67. *
  68. **********************************************************************
  69. */
  70. /*********************************************************************
  71. *
  72. * MainTask
  73. */
  74. void MainTask(void) {
  75. GUI_Init();
  76. /* 使能皮肤 */
  77. _EnableSkinning();
  78. while (1) {
  79. GUI_SetFont(&GUI_Font20B_ASCII);
  80. GUI_DispStringHCenterAt("Applicatoin defined MESSAGEBOX", 160, 5);
  81. /* 执行已经创建的对话框 */
  82. GUI_ExecCreatedDialog(_CreateMessageBox("Message", "Caption", 0, &GUI_Font24));
  83. GUI_Clear();
  84. GUI_Delay(1000);
  85. }
  86. }
复制代码
实际显示效果如下:
49.5.png
49.4 总结
    本期教程主要是跟大家讲解了消息框的两种创建方法,一种是系统自带的,直接调用即可显示,也就是本期教程中的第一个例子。另一种是用户的创建方式,这种模式下用户可以自定义在消息框中要显示的内容。

lkl0305 回答时间:2015-3-9 16:51:36
多谢分享!
bit 回答时间:2015-3-9 17:51:22
控件好搞不
caiyuhui74748 回答时间:2015-8-1 15:58:01
Mark            学习学习
mark0668 回答时间:2015-8-2 04:13:21
学习学习

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版