1.求教学习emwin的源码方法
2.ucgui的BUTTON控件问题
求教学习emwin的方法
准备工作及快速上手emWin
学习emWin,首先需要了解其准备工作,源码以及如何快速上手。源码这对于初学者来说至关重要,源码因为正确的源码开始能够为后续深入学习打下坚实的基础。
1. 初学者重要提示
对于刚开始接触emWin的源码class文件查看源码学习者,以下几点提示至关重要:
- 掌握获取emWin相关资源的源码方法,了解有哪些学习资料可用,源码以便于更好地学习。源码
- 学习如何使用emWin模拟器,源码这将有助于在实际界面设计前进行调试和测试,源码节省时间并提高效率。源码
- 熟悉GUIBuilder和uCGUIBuilder这两款界面创建工具的源码javassh源码使用,它们能简化界面设计和布局的源码过程。
在初学阶段,源码应避免直接研究emWin的底层驱动接口,以免影响学习积极性。待基础知识扎实后,再逐步深入研究。ait源码
2. 开发环境
为了顺利开发和测试emWin应用,需要搭建合适的开发环境:
- 推荐使用VC6.0作为模拟器开发环境,同时支持VS、VS、VS等后续版本。
- 支持两种IDE开发环境:MDK和IAR。javasortedmap源码MDK版本要求4.7X或5.XX,而IAR则固定使用7.5版本。
- 调试器可以使用J-Link、U-Link或S-Link。
- 配合的开发板为S V6,适用于STM系列微控制器。jeeplusvue源码
3. emWin参考资料
在学习过程中,以下资料将提供极大帮助:
- 官方提供的英文版emWin用户手册,当前版本为emWin5.。
- 周立功翻译的emWin5.中文版用户手册,适合初学者使用,可在电子论坛下载。
- emWin模拟器下载,版本为emWin5.,需在S官网注册账号后下载。
- 针对STM系列的emWin软件包下载,存放在STMCubeF中,需从ST官网下载。
4. emWin的调试工具
emWinSPY是一款实用的调试工具,从emWin5.2x版本开始支持,但初期仅支持网络调试。从emWin5.版本开始支持JLINK调试,但该版本存在兼容性问题。随着emWin版本的更新,预计这些问题将得到解决。
5. 总结
本章节为初学者提供了学习emWin的基础指导。建议初学者投入时间了解emWin用户手册,以便在后续学习中能够熟练查阅并应用其中的信息。
ucgui的BUTTON控件问题
#include <stddef.h>
#include "GUI.h"
#include "DIALOG.h"
#include "WM.h"
#include "BUTTON.h"
#include "FRAMEWIN.h"
/*主界面的资源链表*/
static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {
{ FRAMEWIN_CreateIndirect, "Caption", 0, 0, 0, ,,FRAMEWIN_CF_MOVEABLE,0},
{ BUTTON_CreateIndirect, "BUTTON0", GUI_ID_BUTTON0, , , ,, 0,0}
};
/*按钮按下之后的资源链表*/
static const GUI_WIDGET_CREATE_INFO _aButtonCreate[] = {
{ FRAMEWIN_CreateIndirect, "Caption", 0, 0, 0, ,,FRAMEWIN_CF_MOVEABLE,0},
};
/*主界面的绘制函数*/
void PaintDialog(WM_MESSAGE * pMsg)
{
WM_HWIN hWin = pMsg->hWin;
}
/*主界面的初始化函数,初始化标题栏的最大化,最小化,关闭按钮*/
void InitDialog(WM_MESSAGE * pMsg)
{
WM_HWIN hWin = pMsg->hWin;
//
//FRAMEWIN
//
FRAMEWIN_AddCloseButton(hWin, FRAMEWIN_BUTTON_RIGHT, 0);
FRAMEWIN_AddMaxButton(hWin, FRAMEWIN_BUTTON_RIGHT, 1);
FRAMEWIN_AddMinButton(hWin, FRAMEWIN_BUTTON_RIGHT, 2);
}
/*按钮弹出界面的回调函数*/
static void _cbButtonCallback(WM_MESSAGE * pMsg)
{
WM_HWIN hWin = pMsg->hWin;
switch (pMsg->MsgId)
{
case WM_INIT_DIALOG:
InitDialog(pMsg);
break;
default:
WM_DefaultProc(pMsg);
}
}
/*主界面的回调函数*/
static void _cbCallback(WM_MESSAGE * pMsg)
{
int NCode, Id;
WM_HWIN hWin = pMsg->hWin;
switch (pMsg->MsgId)
{
case WM_PAINT://绘制界面
PaintDialog(pMsg);
break;
case WM_INIT_DIALOG://初始化界面
InitDialog(pMsg);
break;
#if 0
//这个是接收键盘上的按键的相应
case WM_KEY:
switch (((WM_KEY_INFO*)(pMsg->Data.p))->Key)
{
case GUI_KEY_ESCAPE:
GUI_EndDialog(hWin, 1);
break;
case GUI_KEY_ENTER:
GUI_EndDialog(hWin, 0);
break;
}
break;
#endif
case WM_NOTIFY_PARENT:
Id = WM_GetId(pMsg->hWinSrc);
NCode = pMsg->Data.v;
switch (Id)
{
case GUI_ID_BUTTON0:
if(NCode==WM_NOTIFICATION_RELEASED)
{
GUI_ExecDialogBox(_aButtonCreate, GUI_COUNTOF(_aButtonCreate), &_cbButtonCallback, 0, 0, 0);
}
break;
}
break;
default:
WM_DefaultProc(pMsg);
}
}
/