|
单色屏+实体按键开发人机界面,现在需要使用EDIT控件用于参数输入。测试代码如下:
static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {
{ WINDOW_CreateIndirect, "", 123, 105, 1, 130, 109, WM_CF_SHOW },
{ BUTTON_CreateIndirect, "OK", GUI_ID_OK, 10, 50, 40, 18 },
{ BUTTON_CreateIndirect, "Cancel", GUI_ID_CANCEL, 80, 50, 40, 18 },
{ EDIT_CreateIndirect, "", GUI_ID_EDIT0, 20, 10,50, 20, 0, 15 },
};
static void _cbCallback(WM_MESSAGE * pMsg) {
int i;
int NCode, Id;
EDIT_Handle hEDIT;
switch (pMsg->MsgId) {
case WM_INIT_DIALOG:
hEDIT = WM_GetDialogItem(pMsg->hWin, GUI_ID_EDIT0);
EDIT_SetText(hEDIT, "1234");
break;
case WM_KEY:
switch (((WM_KEY_INFO*)(pMsg->Data.p))->Key) {
case KB_Left: GUI_SendKeyMsg(GUI_KEY_BACKTAB,1); break; //上翻
case KB_Right: GUI_SendKeyMsg(GUI_KEY_TAB,1); break; //下翻
case KB_Menu: WM_DeleteWindow(pMsg->hWin); break; //关闭此窗口
}
break;
break;
default:
WM_DefaultProc(pMsg);
}
}
void MainTask(WM_HWIN hWin) {
GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), &_cbCallback, hWin, 0, 0);
while(1) {
GUI_Delay(150);
}
}
可以正常创建EDIT和BUTTON按钮,且按左右键可以在"OK“和"Cancel"焦点切换,但是!!只要多按一下想要
切换焦点到EDIT上,立马死机,再看看EDIT控件,貌似也没啥反应。。。。。
更奇葩的是,改变窗口资源的创建顺序,也就是这样写:
把EDIT放在两个BUTTON的前面:
static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {
{ WINDOW_CreateIndirect, "", 123, 105, 1, 130, 109, WM_CF_SHOW },
{ EDIT_CreateIndirect, "", GUI_ID_EDIT0, 20, 10,50, 20, 0, 15 },
{ BUTTON_CreateIndirect, "OK", GUI_ID_OK, 10, 50, 40, 18 },
{ BUTTON_CreateIndirect, "Cancel", GUI_ID_CANCEL, 80, 50, 40, 18 },
};
要是这样,窗口根本无法创建,立即死掉了。。。。。。。
请Eric高手帮忙看看问题出在哪里,另外,我用你的实体按键的例程跑了一下,怎么也死机了?? |
|