|
- 平台:STM32-V6开发板;
- 问题描述:背景窗口开个240*240的窗口A(父窗口是背景窗口),在窗口A中创建一个LISTBOX控件B(父窗口是A), 然后聚焦到B,即LISTBOX控件,通过外部按键发送GUI_SendKeyMsg(GUI_KEY_DOWN, 1)或者GUI_SendKeyMsg(GUI_KEY_UP, 1),来切换LISTBOX控件里面的选项;
- 问题点:当按下外部按键,发送GUI_KEY_DOWN时候,界面上LISTBOX控件的选项跳到下一个,但是之后程序直接死机,hartfault;
请楼主给点思路,同样的代码在模拟器上试过,按下键盘的上下键都是OK的,移植到开发板后就有此问题。

代码如下:
- static void _PaintFrame(void)
- {
- GUI_RECT r;
- WM_GetClientRect(&r);
- GUI_SetBkColor(GUI_BLACK);
- GUI_SetColor(GUI_WHITE);
- GUI_SetFont(GUI_FONT_6X8);
- GUI_SetTextMode(GUI_TM_TRANS);
- GUI_ClearRectEx(&r);
- }
- void _cbBkWindow(WM_MESSAGE* pMsg)
- {
- WM_HWIN hWin = pMsg->hWin;
-
- switch (pMsg->MsgId) {
- case WM_PAINT: {
- _PaintFrame();
- }
- break;
- default:
- WM_DefaultProc(pMsg); break;
- }
- }
- static const GUI_ConstString _ListBox[] = {
- "AA",
- "BB",
- "CC",
- "DD",
- NULL
- };
- LISTBOX_Handle hListBox;
- void _cbManualWindow(WM_MESSAGE* pMsg)
- {
- WM_HWIN hWin = pMsg->hWin;
- GUI_RECT r={0,240,40,280};
- switch (pMsg->MsgId) {
- case WM_CREATE:
- GUI_SetBkColor(GUI_BLACK);
- GUI_SetFont(GUI_FONT_6X8);
- GUI_SetTextMode(GUI_TM_TRANS);
- GUI_ClearRectEx(&r);
-
- GUI_SetFont(GUI_FONT_6X8);
- GUI_SetTextMode(GUI_TM_TRANS);
- hListBox = LISTBOX_Create(_ListBox,0, 40, 120, 240,WM_CF_SHOW) ;
- LISTBOX_SetFont(hListBox, GUI_FONT_6X8);
- WM_SetFocus(hWin);
- break;
- default:
- WM_DefaultProc(pMsg);
- break;
- }
- }
- void demo(void)
- {
- GUI_UC_SetEncodeUTF8();
- WIDGET_SetDefaultEffect(&WIDGET_Effect_None); /* 设置边框为无色 */
- WM_SetCallback(WM_HBKWIN, &_cbBkWindow); /* 设置桌面窗口的回调函数 */
- WM_CreateWindowAsChild(0, 40, 240, 240, WM_HBKWIN, WM_CF_SHOW, _cbManualWindow, 0);
- }
复制代码
|
|