硬汉嵌入式论坛

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

[emWin教程入门篇] 【emWin实战教程V2.0】第40章      窗口管理器之To

[复制链接]

740

主题

1326

回帖

3546

积分

管理员

春暖花开

Rank: 9Rank: 9Rank: 9

积分
3546
QQ
发表于 2017-2-21 16:22:52 | 显示全部楼层 |阅读模式
完整65章+12章附件教程下载地址:
http://www.armbbs.cn/forum.php?mod=viewthread&tid=19834





第40章      窗口管理器之ToolTip的使用


        本章节为大家讲解STemWin自带的ToolTip使用方法,对于外接鼠标设备的时候,这个控件就比较的有用,如果是用触摸进行操作的话,这个控件就用不上了,但作为emWin的知识点也跟大家进行简单的讲解,知道有这么个控件即可。
        40.1 初学者重要提示
        40.2 ToolTips介绍
        40.3 ToolTips实例
        40.4 总结
努力打造安富莱高质量微信公众号:点击扫描图片关注
回复

使用道具 举报

740

主题

1326

回帖

3546

积分

管理员

春暖花开

Rank: 9Rank: 9Rank: 9

积分
3546
QQ
 楼主| 发表于 2017-2-21 16:25:15 | 显示全部楼层
40.1  初学者重要提示


u  本章节作为一个介绍性的知识跟大家进行讲解,以后的项目中用到的机会很小。
u  窗口管理器这块的API函数应该是emWin手册所有章节中函数最多的,ToolTip的API函数也属于这部分。下图是中文版手册里面API函数位置:
40.1.png


下图是英文版手册里面API函数的位置:
40.2.png
努力打造安富莱高质量微信公众号:点击扫描图片关注
回复

使用道具 举报

740

主题

1326

回帖

3546

积分

管理员

春暖花开

Rank: 9Rank: 9Rank: 9

积分
3546
QQ
 楼主| 发表于 2017-2-21 16:26:29 | 显示全部楼层
40.2 ToolTips介绍


        关于ToolTips,大家应该比较熟悉,只是不知道它专业的名字,下面这个就是ToolTips:
                                              40.3.png

现在STemWin5.32版本支持的API如下:
                                                   40.4.png
关于这几个函数的就不给大家依次做介绍了,我们直接通过实例来看如何操作这些函数。
努力打造安富莱高质量微信公众号:点击扫描图片关注
回复

使用道具 举报

740

主题

1326

回帖

3546

积分

管理员

春暖花开

Rank: 9Rank: 9Rank: 9

积分
3546
QQ
 楼主| 发表于 2017-2-21 16:28:19 | 显示全部楼层
40.3 ToolTips实例


       这个Demo主要是实现为对话框上面的两个按钮控件和一个文本控件都添加了ToolTip提示功能,源代码如下(可以将其直接复制到开发板或者模拟器上面运行)。
  1. #include "DIALOG.h"
  2. /*
  3. *********************************************************************************************************
  4. *                              变量
  5. *********************************************************************************************************
  6. */
  7. static const TOOLTIP_INFO _aInfo[] = //--------------(1)
  8. {
  9.      { GUI_ID_BUTTON0, "I am Button 0"},
  10.      { GUI_ID_BUTTON1, "I am Button 1" },
  11.      { GUI_ID_TEXT0, "I am TEXT 0" },
  12. };
  13. /*
  14. *********************************************************************************************************
  15. *                           GUI_WIDGET_CREATE_INFO类型数组
  16. *********************************************************************************************************
  17. */
  18. static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {
  19.     { FRAMEWIN_CreateIndirect,  "armfly",   0,               0,  0,  320,240,0,0},
  20.      { TEXT_CreateIndirect,      "ARM",     GUI_ID_TEXT0,    30,30,300,25, 0,0},
  21.      { BUTTON_CreateIndirect,    "BUTTON0",  GUI_ID_BUTTON0,  30, 70,120,40, 0,0},
  22.     { BUTTON_CreateIndirect,    "BUTTON1",  GUI_ID_BUTTON1,  30,125,120,40, 0,0},
  23. };
  24. /*
  25. *********************************************************************************************************
  26. *    函 数 名: _cbCallback
  27. *    功能说明: 对话框回调函数        
  28. *    形    参: pMsg  回调参数
  29. *    返 回 值: 无
  30. *********************************************************************************************************
  31. */
  32. static void _cbCallback(WM_MESSAGE * pMsg)
  33. {
  34.     int NCode, Id;
  35.     WM_HWIN hWin = pMsg->hWin;
  36.     switch (pMsg->MsgId)
  37.     {
  38.         case WM_INIT_DIALOG:
  39.               //
  40.               //初始化框架窗口
  41.               //
  42.               FRAMEWIN_SetFont(hWin,&GUI_Font24B_ASCII);
  43.               FRAMEWIN_SetTextAlign(hWin,GUI_TA_VCENTER|GUI_TA_CENTER);
  44.               FRAMEWIN_SetTitleHeight(hWin,30);
  45.               //
  46.               //初始化文本控件
  47.               //
  48.               TEXT_SetFont(WM_GetDialogItem(hWin,GUI_ID_TEXT0), &GUI_Font24B_ASCII);
  49.             break;
  50.             
  51.         case WM_KEY:
  52.             switch (((WM_KEY_INFO*)(pMsg->Data.p))->Key)
  53.             {
  54.                 case GUI_KEY_ESCAPE:
  55.                     GUI_EndDialog(hWin, 1);
  56.                     break;
  57.                 case GUI_KEY_ENTER:
  58.                     GUI_EndDialog(hWin, 0);
  59.                     break;
  60.             }
  61.             break;
  62.             
  63.         case WM_NOTIFY_PARENT:
  64.             Id = WM_GetId(pMsg->hWinSrc);
  65.             NCode = pMsg->Data.v;      
  66.             switch (Id)
  67.             {
  68.                 case GUI_ID_OK:
  69.                     if(NCode==WM_NOTIFICATION_RELEASED)
  70.                         GUI_EndDialog(hWin, 0);
  71.                     break;
  72.                 case GUI_ID_CANCEL:
  73.                     if(NCode==WM_NOTIFICATION_RELEASED)
  74.                         GUI_EndDialog(hWin, 0);
  75.                     break;
  76.             }
  77.             break;
  78.             
  79.         default:
  80.             WM_DefaultProc(pMsg);
  81.     }
  82. }
  83. /*
  84. *********************************************************************************************************
  85. *    函 数 名: MainTask
  86. *    功能说明: GUI主函数
  87. *    形    参: 无
  88. *    返 回 值: 无
  89. *********************************************************************************************************
  90. */
  91. void MainTask(void)
  92. {
  93.     WM_HWIN hDlg;
  94.      WM_TOOLTIP_HANDLE hInfo;
  95.    
  96.      /* 初始emWin */
  97.      GUI_Init();
  98.    
  99.      /* 窗口使能使用内存设备,防止闪烁 */
  100.      WM_SetCreateFlags(WM_CF_MEMDEV);
  101.     /* 创建一个对话框 */
  102.     hDlg = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), &_cbCallback, 0, 0, 0);
  103.      /* 给对话框上的文件控件和两个按钮控件都添加ToolTip */
  104.      hInfo = WM_TOOLTIP_Create(hDlg, _aInfo, GUI_COUNTOF(_aInfo)); //--------------(2)
  105.      while (1)
  106.      {
  107.          GUI_Delay(10);
  108.      }
  109. }
复制代码

1.     创建一个TOOLTIP_INFO类型的数组,用于给两个按钮和一个文本框使用。
        TOOLTIP_INFO类型结构体的定义如下:
40.5.png

2.     创建一个属于hDlg对话框的ToolTip,
        控件ID为GUI_ID_BUTTON0的按钮显示的文本是"I am Button 0"。
        控件ID为GUI_ID_BUTTON1的按钮显示的文本是"I am Button 1"。
        控件ID为GUI_ID_TEXT0的按钮显示的文本是"I am TEXT 0"。
实际现象效果如下,这个是鼠标放到按钮上面时的提示效果:
40.6.png
努力打造安富莱高质量微信公众号:点击扫描图片关注
回复

使用道具 举报

740

主题

1326

回帖

3546

积分

管理员

春暖花开

Rank: 9Rank: 9Rank: 9

积分
3546
QQ
 楼主| 发表于 2017-2-21 16:31:48 | 显示全部楼层
40.4   总结


        本章节简单的为大家介绍了ToolTip功能,对于初学者来说,知道有这么个功能即可。一般情况下,
在外接鼠标时,才能有效的利用ToolTip功能,如果没有外接鼠标的时候,这个功能的意义就不大了。
努力打造安富莱高质量微信公众号:点击扫描图片关注
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-16 23:51 , Processed in 0.277684 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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