完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
转stemwin教程
本期教程讲解STemWin支持的复选框。 41. 1 复选框控件介绍 41. 2 官方WIDGET_CheckBox实例 41. 3 总结 41.1 复选框控件介绍 复选框是选择各种不同选项的最常用控件之一。用户可选中或取消选中复选框,并且可一次选中任意个框。使用键盘界面时,被聚焦的复选框的状态可使用 开启皮肤色后显示效果如下: |
|
相关推荐
|
|
41.1.1 复选框支持的通知代码
以下事件是复选框控件作为WM_NOTIFY_PARENT消息的一部分发送给其父窗口的:
|
|
|
|
|
|
41.1.2 按钮支持键盘反应
如果控件具有输入焦点,则它将对下列各键做出反应:
|
|
|
|
|
|
41.2 官方WIDGET_CheckBox实例
官方的这个例子做的很好,充分的演示了复选框的各个状态。这个例子在模拟器中的位置: |
|
|
|
|
|
源代码如下(主要看WIDGET_Checkbox中的代码):
复制代码 #include #include "GUI.h" #include "DIALOG.h" #include "Main.h" /********************************************************************* * * Static data * ********************************************************************** */ // // Dialog resource // static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {(1) { FRAMEWIN_CreateIndirect, "Check box sample", 0, 10, 10, 300, 220, FRAMEWIN_CF_MOVEABLE}, { TEXT_CreateIndirect, "Enabled:", 0, 5, 10, 120, 0 }, { CHECKBOX_CreateIndirect, 0, GUI_ID_CHECK0, 5, 30, 120, 0 }, { CHECKBOX_CreateIndirect, 0, GUI_ID_CHECK1, 5, 60, 120, 0 }, { CHECKBOX_CreateIndirect, 0, GUI_ID_CHECK2, 5, 90, 120, 20 }, { CHECKBOX_CreateIndirect, 0, GUI_ID_CHECK3, 5, 125, 120, 26 }, { TEXT_CreateIndirect, "Disabled:", 0, 150, 10, 120, 0 }, { CHECKBOX_CreateIndirect, 0, GUI_ID_CHECK4, 150, 30, 120, 0 }, { CHECKBOX_CreateIndirect, 0, GUI_ID_CHECK5, 150, 60, 120, 0 }, { CHECKBOX_CreateIndirect, 0, GUI_ID_CHECK6, 150, 90, 120, 26 }, { CHECKBOX_CreateIndirect, 0, GUI_ID_CHECK7, 150, 125, 120, 26 }, { BUTTON_CreateIndirect, "OK", GUI_ID_OK, 10, 170, 60, 20 }, { BUTTON_CreateIndirect, "Cancel", GUI_ID_CANCEL, 225, 170, 60, 20 }, }; // // Check box text // static const char * _apLabel[] = {(2) "Default", "3 States", "Box XL", "Box XXL" }; /********************************************************************* * * Static code * ********************************************************************** */ /********************************************************************* * * _cbCallback */ static void _cbCallback(WM_MESSAGE * pMsg) { WM_HWIN hDlg; WM_HWIN hItem; int i; int NCode; int Id; hDlg = pMsg->hWin; switch (pMsg->MsgId) { case WM_INIT_DIALOG: WM_GetDialogItem(hDlg, GUI_ID_CHECK0); for (i = 0; i < 8; i++) {(3) int Index = i % 4; hItem = WM_GetDialogItem(hDlg, GUI_ID_CHECK0 + i); // Get the handle of the desired checkbox CHECKBOX_SetText(hItem, _apLabel[Index]); // Set the check box text(4) switch (Index) { case 1:(5) // // Set the number of possible states to 3 // CHECKBOX_SetNumStates(hItem, 3);(6) // // Use user defined bitmaps for the third state //(7) CHECKBOX_SetImage(hItem, &_abmBar[0], CHECKBOX_BI_INACTIV_3STATE); // Used if widget is disabled CHECKBOX_SetImage(hItem, &_abmBar[1], CHECKBOX_BI_ACTIV_3STATE); // Used if widget is enabled CHECKBOX_SetState(hItem, 2);(8) break; case 2:(9) CHECKBOX_SetState(hItem, 1); // // Use user defined bitmaps for the 'checked' state // CHECKBOX_SetImage(hItem, &_abmXL[0], CHECKBOX_BI_INACTIV_CHECKED); // Used if widget is disabled CHECKBOX_SetImage(hItem, &_abmXL[1], CHECKBOX_BI_ACTIV_CHECKED); // Used if widget is enabled CHECKBOX_SetFont(hItem, &GUI_FontComic18B_ASCII); break; case 3:(10) CHECKBOX_SetState(hItem, 1); // // Use user defined bitmaps for the 'checked' state // CHECKBOX_SetImage(hItem, &_abmXXL[0], CHECKBOX_BI_INACTIV_CHECKED); // Used if widget is disabled CHECKBOX_SetImage(hItem, &_abmXXL[1], CHECKBOX_BI_ACTIV_CHECKED); // Used if widget is enabled CHECKBOX_SetFont(hItem, &GUI_FontComic24B_ASCII); break; } // // Disable all check boxes shown on the right side of the dialog // if (i >= 4) {(11) WM_DisableWindow(hItem); } } break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); // Id of widget NCode = pMsg->Data.v; // Notification code switch (NCode) { case WM_NOTIFICATION_RELEASED: // React only if released if (Id == GUI_ID_OK) { // OK Button GUI_EndDialog(hDlg, 0); } if (Id == GUI_ID_CANCEL) { // Cancel Button GUI_EndDialog(hDlg, 1); } break; } break; default: WM_DefaultProc(pMsg); } } /********************************************************************* * * Public code * ********************************************************************** */ /********************************************************************* * * MainTask */ void MainTask(void) { #if GUI_SUPPORT_MEMDEV WM_SetCreateFlags(WM_CF_MEMDEV); #endif GUI_Init(); WM_SetDesktopColor(GUI_BLACK); while (1) { GUI_ExecDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), &_cbCallback, 0, 0, 0); GUI_Delay(500); } } |
|
|
|
|
|
1. 对话框中控件的资源表,具体每个控件的参数,看前面38.6.1的介绍。
2. 复选框要显示的文本。 3. 循环8次,为8个复选框进行设置。 4. 函数CHECKBOX_SetText用于设置复选框旁边的可选文本。 5. 确切的说这里的case 1应该算是显示的第二种情况,为了方便起见,我们讲起称之为第一种情况,因为前面已经显示了一种情况。也就是i%4 = 0的情况。 6. 函数CHECKBOX_SetNumStates用于设置复选框可能的状态个数,默认情况下,复选框支持2种状态:选中(1)和未选中(0)。如果复选框要支持第三种状态,可将可能状态增加到3种。 7. 函数CHECKBOX_SetImage用于设置复选框被选中后显示的图像。图像必须填充复选框的整个内部区域。使用此函数时,要确保用于创建小工具的复选框的尺寸足以显示位图和 (可选的)文本。 8. 函数CHECKBOX_SetState用于设置复选框的状态,支持三种状态的显示,可以是选中,取消选中和第三种状态。 9. 情况二,显示一种稍大点的复选框。 10. 情况三,显示一种再大点的复选框。 11. 通过这个函数来禁止右侧复选框的状态。 |
|
|
|
|
|
41.3 总结
本期教程主要是跟大家讲解了复选框控件的使用,希望大家可以把本期教程中讲的这个例子跑跑,然后自己设计一个相关的例子进行试验学习。教程中只是使用了部分的复选框API,其它的API大家都可以试试。 |
|
|
|
|
|
464 浏览 0 评论
478 浏览 1 评论
基于瑞萨FPB-RA4E2智能床头灯项目——1编译环境搭建与点亮驱动ws2812全彩LED
439 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
994 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
1056 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11780 浏览 31 评论
浏览过的版块 |
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 06:15 , Processed in 0.710907 second(s), Total 49, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号