完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
转stemwin教程
本期教程讲解STemWin支持的消息框控件。 49. 1 消息框控件介绍 49. 2 官方DIALOG_MessageBox实例 49. 3官方DIALOG_MessageBoxUser实例 49. 4 总结 49.1 消息框控件介绍 使用MESSAGEBOX控件可在带有标题栏和 “确定”按钮 (必须按下才能关闭窗口)的框架窗口中显示消息。创建消息框或者创建并执行消息框仅需一行代码。下表显示MESSAGEBOX小工具的外观: 消息控件的使用比较简单,仅有两个相关的API:GUI_MessageBox()和MESSAGEBOX_Create()。 |
|
相关推荐
|
|
本期教程讲解STemWin支持的消息框控件。
49. 1 消息框控件介绍 49. 2 官方DIALOG_MessageBox实例 49. 3官方DIALOG_MessageBoxUser实例 49. 4 总结 49.1 消息框控件介绍 使用MESSAGEBOX控件可在带有标题栏和 “确定”按钮 (必须按下才能关闭窗口)的框架窗口中显示消息。创建消息框或者创建并执行消息框仅需一行代码。下表显示MESSAGEBOX小工具的外观: 消息控件的使用比较简单,仅有两个相关的API:GUI_MessageBox()和MESSAGEBOX_Create()。 |
|
|
|
|
|
源码如下(程序中进行了详细的注释):
复制代码 ---------------------------------------------------------------------- File : DIALOG_MessageBox.c Purpose : Example demonstrating GUI_MessageBox Requirements: WindowManager - (x) MemoryDevices - (x) AntiAliasing - ( ) VNC-Server - ( ) PNG-Library - ( ) TrueTypeFonts - ( ) ---------------------------------------------------------------------- */ #include "GUI.h" #include "WM.h" /******************************************************************* * * Static code * ******************************************************************** */ /********************************************************************* * * _cbBkWindow * 桌面窗口的回调函数 */ static void _cbBkWindow(WM_MESSAGE* pMsg) { switch (pMsg->MsgId) { case WM_PAINT: GUI_SetBkColor(GUI_RED); GUI_Clear(); GUI_SetColor(GUI_WHITE); GUI_SetFont(&GUI_Font24_ASCII); GUI_DispStringHCenterAt("DIALOG_MessageBox - Sample", 160, 5); break; default: WM_DefaultProc(pMsg); } } /********************************************************************* * * Public code * ********************************************************************** */ /********************************************************************* * * MainTask */ void MainTask(void) { GUI_Init(); /* 开启窗口使用内存设备 */ #if GUI_SUPPORT_MEMDEV WM_SetCreateFlags(WM_CF_MEMDEV); #endif /* 设置桌面窗口的回调函数 */ WM_SetCallback(WM_HBKWIN, &_cbBkWindow); // // 创建消息框,等待直到他被关闭 // while (1) { GUI_MessageBox("This text is shownnin a message box", "Caption/Title", GUI_MESSAGEBOX_CF_MOVEABLE); GUI_Delay(750); // 延迟一段时间 GUI_MessageBox("New message !", "Caption/Title", GUI_MESSAGEBOX_CF_MOVEABLE); GUI_Delay(750); } } |
|
|
|
|
|
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); } } |
|
|
|
|
|
49.4 总结
本期教程主要是跟大家讲解了消息框的两种创建方法,一种是系统自带的,直接调用即可显示,也就是本期教程中的第一个例子。另一种是用户的创建方式,这种模式下用户可以自定义在消息框中要显示的内容。 |
|
|
|
|
|
690 浏览 0 评论
735 浏览 1 评论
基于瑞萨FPB-RA4E2智能床头灯项目——1编译环境搭建与点亮驱动ws2812全彩LED
624 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
1099 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
1092 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11794 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-26 05:17 , Processed in 0.777629 second(s), Total 81, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号