教程不断更新中: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功能,如果没有外接鼠标的时候,这个功能的意义就不大了。