(1)使用GUIBuilder V5.30创建如下页面并保存为C文件FramewinDLG.c,然后添加到脱机模拟仿真平台CodeBlocks的emwin工程:
(2)用BmpCvt.exe(可在”软件/资料下载”栏目下载)将48×48的图标PNG文件转成C文件并添加到CodeBlocks工程:
(3)在生成的FramewinDLG.c文件中需要更改图标的大小为64×64:
(4)在WM_INIT_DIALOG消息中(窗口初始化时程序跑到这里)添加ICONVIEW控件的初始化代码:
......
hItem = WM_GetDialogItem(pMsg->hWin, ID_ICONVIEW_0)
ICONVIEW_SetIconAlign(hItem, ICONVIEW_IA_TOP)
ICONVIEW_SetTextColor(hItem, ICONVIEW_CI_UNSEL, GUI_BLUE)
ICONVIEW_SetTextColor(hItem, ICONVIEW_CI_SEL, GUI_GREEN)
ICONVIEW_SetFrame(hItem, GUI_COORD_X, 0)//设置图标到IconView边框的间距
ICONVIEW_SetFrame(hItem, GUI_COORD_Y, 0)
ICONVIEW_SetSpace(hItem, GUI_COORD_X, (280-64*4)/3)//设置图标和图标之间的间距
ICONVIEW_SetSpace(hItem, GUI_COORD_Y, (140-64*2)/1)
ICONVIEW_SetFont(hItem, GUI_FONT_16_1)
ICONVIEW_AddBitmapItem(hItem, &bm01, "neqee")//添加图标项
ICONVIEW_AddBitmapItem(hItem, &bm02, "SOS")
ICONVIEW_AddBitmapItem(hItem, &bm03, "Phone")
ICONVIEW_AddBitmapItem(hItem, &bm04, "Camera")
ICONVIEW_AddBitmapItem(hItem, &bm05, "Email")
ICONVIEW_AddBitmapItem(hItem, &bm06, "NoteBook")
ICONVIEW_AddBitmapItem(hItem, &bm07, "JTV")
ICONVIEW_AddBitmapItem(hItem, &bm08, "Dollar")
......
(5) WM_NOTIFY_PARENT消息中( *** 作屏幕时程序跑到这里)添加点击提示程序:
switch(ICONVIEW_GetSel(WM_GetDialogItem(pMsg->hWin, ID_ICONVIEW_0)))
{
case 0: TEXT_SetText(WM_GetDialogItem(pMsg->hWin, ID_TEXT_0), "neqee")break
case 1: TEXT_SetText(WM_GetDialogItem(pMsg->hWin, ID_TEXT_0), "SOS")break
case 2: TEXT_SetText(WM_GetDialogItem(pMsg->hWin, ID_TEXT_0), "Phone")break
case 3: TEXT_SetText(WM_GetDialogItem(pMsg->hWin, ID_TEXT_0), "Camera")break
case 4: TEXT_SetText(WM_GetDialogItem(pMsg->hWin, ID_TEXT_0), "Email")break
case 5: TEXT_SetText(WM_GetDialogItem(pMsg->hWin, ID_TEXT_0), "NoteBook")break
case 6: TEXT_SetText(WM_GetDialogItem(pMsg->hWin, ID_TEXT_0), "JTV")break
case 7: TEXT_SetText(WM_GetDialogItem(pMsg->hWin, ID_TEXT_0), "Dollar")break
//case 8: TEXT_SetText(WM_GetDialogItem(pMsg->hWin, ID_TEXT_0), "Jobbet")break
}
(6)编译运行:
如果emWin界面出现卡死不刷新的情况,可能由于以下原因导致:1. 代码BUG:在程序设计中,可能存在代码逻辑错误或者内存泄露问题,导致界面卡死不刷新。这需要定位代码问题并解决。
2. 界面更新问题:在有些情况下,可能由于 *** 作系统或硬件性能问题导致界面更新不及时。这可以通过优化界面更新算法或者更换适合的硬件设备来解决。
3. 界面资源问题:当界面资源占用过多时,也容易导致界面卡死不刷新的问题。这可以通过对界面资源进行内存优化或者更换相对较大的资源文件来解决。
针对以上问题,可以采取以下几种解决方法:
1. 检查代码:对程序代码进行调试和测试,排除代码漏洞和内存泄露等问题。
2. 优化算法:对界面更新算法进行优化,降低资源占用和处理时间,提高更新速度。
3. 更换设备或资源:如果界面资源或硬件设备不足,可以考虑升级或更换设备,或重新设计界面资源文件等。
4. 优化系统:针对特定的 *** 作系统问题,可以针对性的进行优化。例如,关闭某些系统服务或程序,以提高 *** 作系统的整体性能。
需要注意的是,在进行改进和优化之前,一定要进行备份和测试,避免因为不当改动导致数据丢失和系统崩溃等问题。
先用fontcvt生成所需字库(可根据需要随时添加汉字,软件可以去除重复),然后用U2C生成程序调用汉字时所用的编码。fontcvt首先打开,然后disable掉所有的字,然后从一个unicode格式的汉字txt文档(另存一份UTF8格式的txt)导入你所要用到的汉字,也可以直接找到你要用到的汉字,然后右键enable就可以了。生成C码字库。U2C只能转换UTF8格式的txt文件。
程序中也可以直接敲汉字,开始的时候显示不出来,终于找到可以程序中直接显示汉字的方法了:IAR编辑器的编码改成UTF-8。IAR默认编码在工程建立的时候也可以改成次编码,工具栏Tool》Option》Edit中
Default Chracter修改成 UTF-8,不用以后一个一个转换。对于已经建立的源文件可以逐个修改:编辑区右键选择Character
Encoding=》confort to UTF-8.
GUI_UC_SetEncodeUTF8()
TEXT_SetDefaultFont(&GUI_FontXinSongTi14)//14x14 汉字库,用FontCvt V5.16转换
hText14=TEXT_CreateEx(160-35,67,30,17,0,WM_CF_SHOW,TEXT_CF_HCENTER|TEXT_CF_VCENTER,GUI_ID28,
NumToChar(BackLightTime))//背光时间
TEXT_SetFont(hText14,
&GUI_Font16_ASCII)
TEXT_SetBkColor(hText14, GUI_INVALID_COLOR)
TEXT_SetTextAlign(hText14,TEXT_CF_HCENTER|TEXT_CF_VCENTER)
hText15=TEXT_CreateEx(160-35,103,30,17,0,WM_CF_SHOW,TEXT_CF_HCENTER|TEXT_CF_VCENTER,GUI_ID29,
"常亮")//亮度
//TEXT_SetFont(hText15,
&GUI_FontXinSongTi14)
TEXT_SetBkColor(hText15, GUI_INVALID_COLOR)
TEXT_SetTextAlign(hText15,TEXT_CF_HCENTER|TEXT_CF_VCENTER)
//TEXT_SetText(hText15,"常亮")
GUI_Exec()
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)