emwin之错误使用控件函数导致死机现象
@2018-10-15
导致死机的代码示例如下
/**
* @brief widget ID define
* @{
*/ #define ID_WINDOW_0 (GUI_ID_USER + 0x00)
#define ID_TEXT_0 (GUI_ID_USER + 0x01)
#define ID_TEXT_1 (GUI_ID_USER + 0x02)
#define ID_EDIT_0 (GUI_ID_USER + 0x03)
#define ID_EDIT_1 (GUI_ID_USER + 0x04)
#define ID_TEXT_2 (GUI_ID_USER + 0x05)
#define ID_BUTTON_0 (GUI_ID_USER + 0x06) /**
* @}
*/ /**
* @brief widget resource list
* @{
*/ static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {
{ WINDOW_CreateIndirect, "factoryWindow", ID_WINDOW_0, , , , , , 0x0, },
{ TEXT_CreateIndirect, "ex-factory date", ID_TEXT_0, , , , , , 0x64, },
{ TEXT_CreateIndirect, "ex-factory number", ID_TEXT_1, , , , , , 0x64, },
{ EDIT_CreateIndirect, "9999-99-99", ID_EDIT_0, , , , , , 0x64, },
{ EDIT_CreateIndirect, "", ID_EDIT_1, , , , , , 0x64, },
{ TEXT_CreateIndirect, "Factory Version", ID_TEXT_2, , , , , , 0x64, },
{ BUTTON_CreateIndirect, "Back", ID_BUTTON_0, , , , , , 0x0, },
// USER START (Optionally insert additional widgets)
// USER END
}; static void _cbDialog(WM_MESSAGE * pMsg) {
WM_HWIN hItem;
int NCode;
int Id;
// USER START (Optionally insert additional variables)
// USER END switch (pMsg->MsgId) {
case WM_INIT_DIALOG:
//
// Initialization of 'ex-factory date'
//
hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_0);
TEXT_SetText(hItem, "出厂日期");
TEXT_SetFont(hItem, &GUI_FontHZ16);
TEXT_SetTextAlign(hItem, GUI_TA_LEFT | GUI_TA_VCENTER);
//
// Initialization of 'ex-factory number'
//
hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_1);
TEXT_SetText(hItem, "出厂编号");
TEXT_SetFont(hItem, &GUI_FontHZ16);
TEXT_SetTextAlign(hItem, GUI_TA_LEFT | GUI_TA_VCENTER); EDIT_SetText(hItem, "出厂编号");
EDIT_SetTextAlign(hItem, &GUI_FontHZ16);
EDIT_SetFont(hItem, GUI_TA_LEFT | GUI_TA_VCENTER);
//
// Initialization of '9999-99-99'
//
hItem = WM_GetDialogItem(pMsg->hWin, ID_EDIT_0);
EDIT_SetText(hItem, "9999-99-99");
EDIT_SetTextAlign(hItem, GUI_TA_LEFT | GUI_TA_VCENTER);
EDIT_SetFont(hItem, GUI_FONT_16_1);
//
// Initialization of '123456789'
//
hItem = WM_GetDialogItem(pMsg->hWin, ID_EDIT_1);
EDIT_SetText(hItem, "");
EDIT_SetFont(hItem, GUI_FONT_16_1);
EDIT_SetTextAlign(hItem, GUI_TA_LEFT | GUI_TA_VCENTER); TEXT_SetText(hItem, "123456789");
TEXT_SetFont(hItem, GUI_FONT_16_1);
TEXT_SetTextAlign(hItem, GUI_TA_LEFT | GUI_TA_VCENTER);
//
// Initialization of 'Factory Version'
//
hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_2);
TEXT_SetText(hItem, "出厂信息");
TEXT_SetFont(hItem, &GUI_FontHZ16);
TEXT_SetTextAlign(hItem, GUI_TA_LEFT | GUI_TA_VCENTER);
//
// Initialization of 'Back'
//
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_0);
BUTTON_SetText(hItem, "返回");
BUTTON_SetFont(hItem, &GUI_FontHZ24);
// USER START (Optionally insert additional code for further widget initialization)
// USER END
break;
上段code中红色代码为控件函数误用,即TEXT控件的initialize部分使用了EDIT控件的函数,EDIT控件的initialize部分使用了TEXT控件的函数,这种情况编译器不会报警,但实际操作现象出现死机
emwin之错误使用控件函数导致死机现象的更多相关文章
- emwin之多次删除同一窗口导致死机现象
@218-7-24 [现象] 使用函数 GUI_EndDialog() 多次删除同一窗口,导致系统死机,调试发现代码会卡死在以下两处 > 1.启动文件中 > 2.HardFault中断内 ...
- 因用了NeatUpload大文件上传控件而导致Nonfile portion > 4194304 bytes错误的解决方法
今天遇到一个问题,就是“NeatUpload大文件上传控件而导致Nonfile portion > 4194304 bytes错误”,百度后发现了一个解决方法,跟大家分享下: NeatUploa ...
- Error-ASP.NET:由于未能找到 id 为“FileUpload1$gvFiles$ctl02$lnkBtnRemoveFile”的控件或在回发后将同一 ID 分配给另一个控件,导致发生错误。如果未分配 ID,请显式设置引发回发事件的控件的 ID 属性以避免此错误。
ylbtech-Error-ASP.NET:由于未能找到 id 为“FileUpload1$gvFiles$ctl02$lnkBtnRemoveFile”的控件或在回发后将同一 ID 分配给另一个控件 ...
- 《zw版·delphi与halcon系列原创教程》zw版_THOperatorSetX控件函数列表 v11中文增强版
<zw版·delphi与halcon系列原创教程>zw版_THOperatorSetX控件函数列表v11中文增强版 Halcon虽然庞大,光HALCONXLib_TLB.pas文件,源码就 ...
- 《zw版·delphi与halcon系列原创教程》zw版_THImagex控件函数列表
<zw版·delphi与halcon系列原创教程>zw版_THImagex控件函数列表 Halcon虽然庞大,光HALCONXLib_TLB.pas文件,源码就要7w多行,但核心控件就是两 ...
- JACOB调用控件函数
背景介绍: 使用JAVA程序,实现对系统已安装控件方法的调用. JACOB下载地址:http://danadler.com/jacob/ 使用方法: 1.将jacob.jar添加到项目工程中 2.将j ...
- 解决WebBrowser控件会导致应用程序占用内存居高不下问题
WebBrowser 是一个 .NET 控件类,在 .NET Framework 2.0 版中新增.WebBrowser 类使用户可以在窗体中导航网页,下面我们来看在开发中碰到WebBrowser控件 ...
- 错误提示控件errorProvider
http://www.cnblogs.com/suguoqiang/archive/2012/07/17/2596564.html 错误提示控件errorProvider VS显示: 核心代码: th ...
- 一种使用 sprintf 导致死机的情况
@2019-02-26 [小记] char temp[10] float money; sprintf(temp, "0.2f", money); 以上使用方法可能导致死机,原因是 ...
随机推荐
- C#使用ES
C#如何使用ES Elasticsearch简介 Elasticsearch (ES)是一个基于Apache Lucene(TM)的开源搜索引擎,无论在开源还是专有领域,Lucene可以被认为是迄今为 ...
- adb通过wifi连接android设备
问题背景 近期的项目测试中,需要将移动设备与厂商机器进行usb连接视频传输(投屏).测试过程中需要定位问题,经常需要查看实时日志,移动设备已经和厂商机器usb连接投屏,无法用usb连接到PC,那么有什 ...
- Java 读取配置文件数据
Properties类 Properties类,是一个工具类,包含在java.util包中. 功能:可以保存持久的属性,通常用来读取配置文件或者属性文件,将文件中的数据读入properties对象中, ...
- pinpoint vs druid
主流Java数据库连接池分析(C3P0,DBCP,TomcatPool,BoneCP,Druid) - ppjj - 博客园 https://www.cnblogs.com/nizuimeiabc1/ ...
- node exprss-session 和connect-mongo
let express = require('express'); let session = require('express-session'); let app = new express(); ...
- jQuery EasyUI 选项卡面板tabs使用实例精讲
1. 对选项卡面板区域 div 设置 class=”easyui-tabs” 2. 对选项卡面板区域添加多个 div,每个 div 就是一个选项卡(每个面板一定设置 title) 3. 设置面板 fi ...
- Docker实现运行tomcat并部署项目war包,并实现挂载目录
之前写的有点乱,现在再来整理一下docker的简单部署运行 借鉴博客:https://blog.csdn.net/qq_32351227/article/details/78673591 一.dock ...
- kprobe原理解析
参考 http://www.cnblogs.com/honpey/p/4575928.html kprobe是linux内核的一个重要特性,是一个轻量级的内核调试工具,同时它又是其他一些更高级的内核 ...
- linux命令logger使用
先从别的地方抄过来全部的解释,如下: **options (选项):** -d, --udp 使用数据报(UDP)而不是使用默认的流连接(TCP) -i, --id 逐行记录每一次logger的进程I ...
- WPF中自定义MarkupExtension
在介绍这一篇文章之前,我们首先来回顾一下WPF中的一些基础的概念,首先当然是XAML了,XAML全称是Extensible Application Markup Language (可扩展应用程序标记 ...