前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【第3版emWin教程】第46章 emWin6.x窗口管理器之ToolTip的使用

【第3版emWin教程】第46章 emWin6.x窗口管理器之ToolTip的使用

作者头像
Simon223
发布2021-10-09 15:04:06
5250
发布2021-10-09 15:04:06
举报

教程不断更新中:http://www.armbbs.cn/forum.php?mod=viewthread&tid=98429

第46章 emWin6.x窗口管理器之ToolTip的使用

本章节为大家讲解emWin自带的ToolTip使用方法,对于外接鼠标设备的时候,这个控件就比较的有用,如果是用触摸进行操作的话,这个控件就用不上了,但作为emWin的知识点也跟大家进行简单的讲解,知道有这么个控件即可。

46.1 初学者重要提示

46.2 ToolTips介绍

46.3 ToolTips实例

46.4 总结

46.1 初学者重要提示

1、 本章节作为一个介绍性的知识跟大家进行讲解,以后的项目中用到的机会很小。

2、 窗口管理器这块的API函数应该是emWin手册所有章节中函数最多的,ToolTip的API函数也属于这部分。下图是中文版手册里面API函数位置:

下图是英文版手册里面API函数的位置:

46.2 ToolTips介绍

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

现在STemWin5.32版本支持的API如下:

关于这几个函数的就不给大家依次做介绍了,我们直接通过实例来看如何操作这些函数。

46.3 ToolTips实例

这个Demo主要是实现为对话框上面的两个按钮控件和一个文本控件都添加了ToolTip提示功能,源代码如下(可以将其直接复制到开发板或者模拟器上面运行)。

代码语言:javascript
复制
#include "DIALOG.h"



/*
*********************************************************************************************************
*                              变量
*********************************************************************************************************
*/
static const TOOLTIP_INFO _aInfo[] = //--------------(1)
{
    { GUI_ID_BUTTON0, "I am Button 0"},
    { GUI_ID_BUTTON1, "I am Button 1" },
    { GUI_ID_TEXT0, "I am TEXT 0" },
};

/*
*********************************************************************************************************
*                           GUI_WIDGET_CREATE_INFO类型数组
*********************************************************************************************************
*/
static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {
    { FRAMEWIN_CreateIndirect,  "armfly",   0,               0,  0,  320,240,0,0},
    { TEXT_CreateIndirect,      "ARM",     GUI_ID_TEXT0,    30,30,300,25, 0,0},
    { BUTTON_CreateIndirect,    "BUTTON0",  GUI_ID_BUTTON0,  30, 70,120,40, 0,0},
    { BUTTON_CreateIndirect,    "BUTTON1",  GUI_ID_BUTTON1,  30,125,120,40, 0,0},

};

/*
*********************************************************************************************************
*    函 数 名: _cbCallback
*    功能说明: 对话框回调函数        
*    形    参: pMsg  回调参数 
*    返 回 值: 无
*********************************************************************************************************
*/
static void _cbCallback(WM_MESSAGE * pMsg) 
{
    int NCode, Id;
    WM_HWIN hWin = pMsg->hWin;

    switch (pMsg->MsgId) 
    {
        case WM_INIT_DIALOG:

            //
            //初始化框架窗口
            //
            FRAMEWIN_SetFont(hWin,&GUI_Font24B_ASCII);
            FRAMEWIN_SetTextAlign(hWin,GUI_TA_VCENTER|GUI_TA_CENTER);
            FRAMEWIN_SetTitleHeight(hWin,30);

            //
            //初始化文本控件
            //
            TEXT_SetFont(WM_GetDialogItem(hWin,GUI_ID_TEXT0), &GUI_Font24B_ASCII);
            break;
            
        case WM_KEY:
            switch (((WM_KEY_INFO*)(pMsg->Data.p))->Key) 
            {
                case GUI_KEY_ESCAPE:
                    GUI_EndDialog(hWin, 1);
                    break;
                case GUI_KEY_ENTER:
                    GUI_EndDialog(hWin, 0);
                    break;
            }
            break;
            
        case WM_NOTIFY_PARENT:
            Id = WM_GetId(pMsg->hWinSrc); 
            NCode = pMsg->Data.v;        
            switch (Id) 
            {
                case GUI_ID_OK:
                    if(NCode==WM_NOTIFICATION_RELEASED)
                        GUI_EndDialog(hWin, 0);
                    break;
                case GUI_ID_CANCEL:
                    if(NCode==WM_NOTIFICATION_RELEASED)
                        GUI_EndDialog(hWin, 0);
                    break;
            }
            break;
            
        default:
            WM_DefaultProc(pMsg);
    }
}

/*
*********************************************************************************************************
*    函 数 名: MainTask
*    功能说明: GUI主函数
*    形    参: 无
*    返 回 值: 无
*********************************************************************************************************
*/
void MainTask(void) 
{
    WM_HWIN hDlg;
    WM_TOOLTIP_HANDLE hInfo;

    
    /* 初始emWin */
    GUI_Init();
    
    /* 窗口使能使用内存设备,防止闪烁 */
    WM_SetCreateFlags(WM_CF_MEMDEV);  

    /* 创建一个对话框 */
    hDlg = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), &_cbCallback, 0, 0, 0);

    /* 给对话框上的文件控件和两个按钮控件都添加ToolTip */
    hInfo = WM_TOOLTIP_Create(hDlg, _aInfo, GUI_COUNTOF(_aInfo)); //--------------(2)

    while (1)
    {
        GUI_Delay(10);
    }
}

1、创建一个TOOLTIP_INFO类型的数组,用于给两个按钮和一个文本框使用。

TOOLTIP_INFO类型结构体的定义如下:

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"。

实际现象效果如下,这个是鼠标放到按钮上面时的提示效果:

46.4 总结

本章节简单的为大家介绍了ToolTip功能,对于初学者来说,知道有这么个功能即可。一般情况下,在外接鼠标的时,才能有效的利用ToolTip功能,如果没有外接鼠标的时候,这个功能的意义就不大了。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-09-28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第46章 emWin6.x窗口管理器之ToolTip的使用
    • 46.1 初学者重要提示
      • 46.2 ToolTips介绍
        • 46.3 ToolTips实例
          • 46.4 总结
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档