硬汉嵌入式论坛

 找回密码
 立即注册
查看: 4850|回复: 0
收起左侧

[emWin教程入门篇] 【STemWin教程】第57章 WINDOW-窗口控件

[复制链接]

740

主题

1326

回帖

3546

积分

管理员

春暖花开

Rank: 9Rank: 9Rank: 9

积分
3546
QQ
发表于 2015-3-13 11:34:23 | 显示全部楼层 |阅读模式
特别说明:完整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都还不支持在对话框上面创建窗口控件。
努力打造安富莱高质量微信公众号:点击扫描图片关注
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-6-4 09:41 , Processed in 0.228253 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表