Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【第3版emWin教程】第46章 emWin6.x窗口管理器之ToolTip的使用

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

作者头像
Simon223
发布于 2021-10-09 07:04:06
发布于 2021-10-09 07:04:06
62000
代码可运行
举报
运行总次数:0
代码可运行

教程不断更新中: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
代码运行次数:0
运行
AI代码解释
复制
#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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【第3版emWin教程】第43章 emWin6.x窗口管理器实例(含自定义消息)
教程不断更新中:http://www.armbbs.cn/forum.php?mod=viewthread&tid=98429 第43章 emWin6.x窗口管理器实例(含自定义消息) 为
Simon223
2021/09/29
7390
【第3版emWin教程】第55章 emWin6.x按钮Button控件自定义回调函数,实现各种按钮效果
本章节为大家讲解按钮控件自定义回调函数,通过其回调函数就可以实现各种按钮效果。这方面的问题也是经常有初学者问,所以专门做一期教程。
Simon223
2022/03/10
1.3K0
【第3版emWin教程】第55章       emWin6.x按钮Button控件自定义回调函数,实现各种按钮效果
【第3版emWin教程】第51章 emWin6.x的Window窗口控件
本章节为大家讲解emWin6.x支持的窗口控件,窗口控件和前面讲的窗口本质上面是一样的,只不过这里是以控件的形式存在。
Simon223
2022/03/10
9720
【第3版emWin教程】第51章       emWin6.x的Window窗口控件
【第3版emWin教程】第42章 emWin6.x窗口管理器之回调消息类型
教程不断更新中:http://www.armbbs.cn/forum.php?mod=viewthread&tid=98429 第42章 emWin6.x窗口管理器之回调消息类型 本章节为
Simon223
2021/09/29
9360
【第3版emWin教程】第45章 emWin6.x窗口管理器之定时器使用
教程不断更新中:http://www.armbbs.cn/forum.php?mod=viewthread&tid=98429 第45章 emWin6.x窗口管理器之定时器使用 本期教程为
Simon223
2021/10/09
1.3K0
【第3版emWin教程】第53章 emWin6.x的按钮Button控件
本章节为大家讲解emWin支持的按钮控件,按钮控件还是非常实用的,实际项目中用到的地方很多,控件的本质就是窗口,或者说是具有特定外观效果的窗口,对于初学者来说,是务必要掌握好的一个控件。
Simon223
2022/03/10
7790
【第3版emWin教程】第53章       emWin6.x的按钮Button控件
【第3版emWin教程】第28章 emWin6.x的C文件格式的汉字生成和实现(Unicode编码)
教程不断更新中:http://www.armbbs.cn/forum.php?mod=viewthread&tid=98429 第28章 emWin6.x的C文件格式的汉字生成和实现(Un
Simon223
2021/07/28
1.2K0
【第3版emWin教程】第28章       emWin6.x的C文件格式的汉字生成和实现(Unicode编码)
【第3版emWin教程】第52章 emWin6.x的FrameWin框架窗口控件
本章节为大家讲解emWin支持的框架窗口控件,外加上一章节为大家讲解的窗口控件,对话框所必须的两个主体控件就为大家都进行了讲解,这样可以方便我们后续讲解其它控件。
Simon223
2022/03/10
7570
【第3版emWin教程】第52章       emWin6.x的FrameWin框架窗口控件
emWin专题——emWin简介及模拟器的使用「建议收藏」
记得刚上大学的时候接触到单片机领域的一个图形界面叫ucGUI,也是跑在STM32上的,后来过了没多久网上查资料发现大家都是用的emWIn了,了解了一下它们之间的关系,其实是同一个东西。emWIn是在ucGUI的基础上发展起来的,两者同属一家公司(SEEGER)开发,没错就是咱买的JLINK调试器的那家公司,以前旧版本的ucGUI是开源的,后来emWin发展到5.0版本后进行了很大的更新,特别是底层驱动方面。但是emWIn5.xx版本向下完全的兼容低版本,也包括ucGUI5.xx以下的版本。emWIn5.xx以后的版本只有库没有源码,所以想要了解底层实现的话可以看早起的版本。
全栈程序员站长
2022/11/04
2.3K0
【第3版emWin教程】第11章 GUIBuilder6.X的使用方法
教程不断更新中:http://www.armbbs.cn/forum.php?mod=viewthread&tid=98429 第11章 GUIBuilder6.X的使用方法 本小节主要带
Simon223
2021/06/29
6630
【第3版emWin教程】第54章 emWin6.x的按钮Button控件显示位图和流位图(QSPI Flash存储)
本章节为大家讲解按钮控件显示位图和流位图的方法,之所以做这章节是因为太多初学者问这方面的问题,所以专门做一下。
Simon223
2022/03/10
7900
【第3版emWin教程】第54章       emWin6.x的按钮Button控件显示位图和流位图(QSPI Flash存储)
【第3版emWin教程】第48章 emWin6.x对话框基础知识
教程不断更新中:http://www.armbbs.cn/forum.php?mod=viewthread&tid=98429 第48章 emWin6.x对话框基础知识 上个章节为大家普及
Simon223
2021/10/09
1.1K0
【二代示波器教程】第11章 示波器设计—功能模块划分
二代示波器的界面上做了五个按钮,分别用于不同功能的配置,本章节就为大家讲解这五个按钮实现的功能。
Simon223
2018/09/04
6770
【二代示波器教程】第11章 示波器设计—功能模块划分
【第3版emWin教程】第44章 emWin6.x窗口管理器官方实例简单讲解
教程不断更新中:http://www.armbbs.cn/forum.php?mod=viewthread&tid=98429 第44章 emWin6.x窗口管理器官方实例简单讲解 为了帮
Simon223
2021/10/09
1.2K0
STemWin学习:关于窗口消息的基础知识
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/17
5210
STemWin学习:关于窗口消息的基础知识
【第3版emWin教程】第47章 emWin6.x控件基础知识
教程不断更新中:http://www.armbbs.cn/forum.php?mod=viewthread&tid=98429 第47章 emWin6.x控件基础知识 本章节为大家讲解控件
Simon223
2021/10/09
9390
emwin实体按键_qt指示灯控件
(1)ButtonSKB已经是1个控件,即可以像使用Button控件一样使用ButtonSKB。
全栈程序员站长
2022/11/04
8030
【第3版emWin教程】第7章 emWin6.x的裸机方式移植(STM32H7之RGB接口)
教程不断更新中:http://www.armbbs.cn/forum.php?mod=viewthread&tid=98429 第7章 emWin6.x的裸机方式移植(STM32H7之RGB接口)
Simon223
2021/06/21
1.2K0
【第3版emWin教程】第7章   emWin6.x的裸机方式移植(STM32H7之RGB接口)
【第3版emWin教程】第8章 emWin6.x的带OS方式移植(STM32H7之RGB接口)
教程不断更新中:http://www.armbbs.cn/forum.php?mod=viewthread&tid=98429 第8章 emWin6.x的带OS方式移植(STM32H7之RGB接口
Simon223
2021/06/21
1.3K0
【第3版emWin教程】第8章   emWin6.x的带OS方式移植(STM32H7之RGB接口)
【第3版emWin教程】第50章 emWin6.x的AppWizard使用控件经典回调方式
本期教程为大家讲解emWin6.x的GUI开发工具AppWizard使用控件经典回调方式。这样我们就可以emWin的经典回调玩法和AppWizard很好的结合到一起。
Simon223
2021/10/25
7010
【第3版emWin教程】第50章       emWin6.x的AppWizard使用控件经典回调方式
推荐阅读
【第3版emWin教程】第43章 emWin6.x窗口管理器实例(含自定义消息)
7390
【第3版emWin教程】第55章 emWin6.x按钮Button控件自定义回调函数,实现各种按钮效果
1.3K0
【第3版emWin教程】第51章 emWin6.x的Window窗口控件
9720
【第3版emWin教程】第42章 emWin6.x窗口管理器之回调消息类型
9360
【第3版emWin教程】第45章 emWin6.x窗口管理器之定时器使用
1.3K0
【第3版emWin教程】第53章 emWin6.x的按钮Button控件
7790
【第3版emWin教程】第28章 emWin6.x的C文件格式的汉字生成和实现(Unicode编码)
1.2K0
【第3版emWin教程】第52章 emWin6.x的FrameWin框架窗口控件
7570
emWin专题——emWin简介及模拟器的使用「建议收藏」
2.3K0
【第3版emWin教程】第11章 GUIBuilder6.X的使用方法
6630
【第3版emWin教程】第54章 emWin6.x的按钮Button控件显示位图和流位图(QSPI Flash存储)
7900
【第3版emWin教程】第48章 emWin6.x对话框基础知识
1.1K0
【二代示波器教程】第11章 示波器设计—功能模块划分
6770
【第3版emWin教程】第44章 emWin6.x窗口管理器官方实例简单讲解
1.2K0
STemWin学习:关于窗口消息的基础知识
5210
【第3版emWin教程】第47章 emWin6.x控件基础知识
9390
emwin实体按键_qt指示灯控件
8030
【第3版emWin教程】第7章 emWin6.x的裸机方式移植(STM32H7之RGB接口)
1.2K0
【第3版emWin教程】第8章 emWin6.x的带OS方式移植(STM32H7之RGB接口)
1.3K0
【第3版emWin教程】第50章 emWin6.x的AppWizard使用控件经典回调方式
7010
相关推荐
【第3版emWin教程】第43章 emWin6.x窗口管理器实例(含自定义消息)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验