|
楼主 |
发表于 2017-2-21 16:28:19
|
显示全部楼层
40.3 ToolTips实例
这个Demo主要是实现为对话框上面的两个按钮控件和一个文本控件都添加了ToolTip提示功能,源代码如下(可以将其直接复制到开发板或者模拟器上面运行)。
- #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"。
实际现象效果如下,这个是鼠标放到按钮上面时的提示效果: |
|