49.3 官方DIALOG_MessageBoxUser实例 官方的这个实例很好的演示了MessageBox的使用,这个例子在模拟器中的位置:
源码如下(程序中进行了详细的注释):
- /*********************************************************************
- *
- * Static code
- *
- **********************************************************************
- */
- /*********************************************************************
- *
- * _CreateMessageBox
- */
- static WM_HWIN _CreateMessageBox(const char * sMessage, const char * sCaption, int Flags, const GUI_FONT * pFont) {
- WM_HWIN hWin;
- WM_HWIN hItem;
- GUI_RECT Rect;
-
- hWin = MESSAGEBOX_Create(sMessage, sCaption, Flags);
- //
- // 设置消息框中标题的字体,消息框本质上也是框架窗口,所以这里可以直接的调用修改
- //
- FRAMEWIN_SetFont(hWin, pFont);
- //
- // 调整大小
- //
- WM_GetWindowRectEx(hWin, &Rect);
- WM_SetWindowPos(hWin, Rect.x0 - 15,
- Rect.y0 - 15,
- Rect.x1 - Rect.x0 + 1 + 30,
- Rect.y1 - Rect.y0 + 1 + 30);
- //
- // 设置按钮控件的字体
- //
- hItem = WM_GetDialogItem(hWin, GUI_ID_OK);
- BUTTON_SetFont(hItem, pFont);
- //
- // 调节按钮控件的大小
- //
- WM_GetWindowRectEx(hItem, &Rect);
- WM_SetWindowPos(hItem, Rect.x0,
- Rect.y0 + 10,
- Rect.x1 - Rect.x0 + 1 + 30,
- Rect.y1 - Rect.y0 + 1 + 5);
- //
- // 设置文本控件的字体
- //
- hItem = WM_GetDialogItem(hWin, GUI_ID_TEXT0);
- TEXT_SetFont(hItem, pFont);
- //
- // 调节文本控件的大小
- //
- WM_GetWindowRectEx(hItem, &Rect);
- WM_SetWindowPos(hItem, Rect.x0,
- Rect.y0,
- Rect.x1 - Rect.x0 + 1 + 30,
- Rect.y1 - Rect.y0 + 1 + 12);
- return hWin;
- }
-
- /*********************************************************************
- *
- * _EnableSkinning
- */
- static void _EnableSkinning(void) {
- FRAMEWIN_SetDefaultSkin(FRAMEWIN_SKIN_FLEX);
- BUTTON_SetDefaultSkin (BUTTON_SKIN_FLEX);
- }
-
- /*********************************************************************
- *
- * Public code
- *
- **********************************************************************
- */
- /*********************************************************************
- *
- * MainTask
- */
- void MainTask(void) {
- GUI_Init();
- /* 使能皮肤 */
- _EnableSkinning();
- while (1) {
- GUI_SetFont(&GUI_Font20B_ASCII);
- GUI_DispStringHCenterAt("Applicatoin defined MESSAGEBOX", 160, 5);
- /* 执行已经创建的对话框 */
- GUI_ExecCreatedDialog(_CreateMessageBox("Message", "Caption", 0, &GUI_Font24));
- GUI_Clear();
- GUI_Delay(1000);
- }
- }
复制代码
实际显示效果如下:
|