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

【安富莱STemWin教程】第57章 WINDOW-窗口控件

[复制链接]
baiyongbin2009 发布时间:2015-3-13 11:51
特别说明:完整STemWin的1-60期教程和配套实例下载地址:链接
第57章 WINDOW-窗口控件

   本期教程讲解STemWin支持的窗口控件,窗口控件和前面讲的窗口本质上面是一样的,只不过这里是以控件的形式存在,专门用于对话框中创建窗口。
    57. 1窗口控件介绍
    57. 2 官方WIDGET_Window实例
    57. 3 总结

57.1 窗口控件介绍
    WINDOW控件的作用是从资源表创建对话框窗口。如果对话框看起来不象框架窗口,则应当使用WINDOW控件。窗口控件充当的是背景以及子窗口的容器:它可包含子窗口,通常采用灰色来作为背景的填充色。它类似于没有框架和标题栏的框架窗口,供对话框所使用。
57.2 官方WIDGET_Window实例
    官方的这个实例很好的演示了window的使用,这个例子在模拟器中的位置:
57.1.png
源码如下(程序中进行了详细的注释):
  1. #include "GUI.h"
  2. #include "DIALOG.h"


  3. /*********************************************************************
  4. *
  5. *       _aDialog
  6. *   对话框创建资源
  7. */
  8. static const GUI_WIDGET_CREATE_INFO _aDialog[] = {
  9.   { WINDOW_CreateIndirect, "",       0,               0,  0,   260, 200, 0               },
  10.   { TEXT_CreateIndirect,   "Dialog", 0,               80, 5,   100, 20,  TEXT_CF_HCENTER },
  11.   { BUTTON_CreateIndirect, "Close",  GUI_ID_BUTTON0,  80, 160, 100, 20,  0               }
  12. };

  13. /*********************************************************************
  14. *
  15. *       _cbDialog
  16. *    对话框回调函数
  17. */
  18. static void _cbDialog(WM_MESSAGE *pMsg) {
  19.   int NCode;
  20.   int Id;

  21.   switch (pMsg->MsgId) {
  22.   case WM_PAINT:
  23.     GUI_SetBkColor(GUI_GREEN);
  24.     GUI_Clear();
  25.     break;
  26.   case WM_NOTIFY_PARENT:
  27.     Id    = WM_GetId(pMsg->hWinSrc);    // Id of widget
  28.     NCode = pMsg->Data.v;               // Notification code
  29.     switch (NCode) {
  30.     case WM_NOTIFICATION_RELEASED:      // React only if released
  31.       switch (Id) {
  32.       case GUI_ID_BUTTON0:
  33.         GUI_EndDialog(pMsg->hWin, 0);
  34.         break;
  35.       }
  36.       break;
  37.     }
  38.     break;
  39.   default:
  40.     WM_DefaultProc(pMsg);
  41.   }
  42. }

  43. /*********************************************************************
  44. *
  45. *       MainTask
  46. */
  47. void MainTask(void) {
  48.   GUI_Init();
  49.   while(1) {
  50.     GUI_DispStringHCenterAt("WIDGET_Window sample\nshows how to use a WINDOW widget", 160, 5);
  51. /* 阻塞式对话框 */
  52.     GUI_ExecDialogBox(_aDialog, GUI_COUNTOF(_aDialog), _cbDialog, WM_HBKWIN, 30, 30);
  53.     GUI_Clear();
  54.     GUI_DispStringHCenterAt("Dialog has been closed", 160, 5);
  55.     GUI_Delay(1000);
  56.     GUI_Clear();
  57.   }
  58. }
复制代码
实际显示效果如下:
57.2.png
57.3 总结
    本期教程主要是跟大家讲解了窗口控件的使用,窗口控件使用同上期讲的文本控件一样,都比较的容易些,只是现在的uCGUIBulder4.0和GUIBulder5.22都还不支持在对话框上面创建窗口控件。

收藏 评论3 发布时间:2015-3-13 11:51

举报

3个回答
大浪10010 回答时间:2015-3-13 20:12:32
学习了,,,,,,
kqh1120 回答时间:2015-3-13 21:15:57
谢谢分享! 14.gif
_ilikerome_ 回答时间:2015-3-14 08:49:57
谢谢,学习了。。

所属标签

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