硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2917|回复: 3
收起左侧

[emWin] LISTBOX控件+实体按键死机问题

[复制链接]

1

主题

1

回帖

4

积分

新手上路

积分
4
发表于 2019-1-5 11:49:33 | 显示全部楼层 |阅读模式
  • 平台: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的,移植到开发板后就有此问题。


代码如下:
  1. static void _PaintFrame(void)
  2. {   
  3.     GUI_RECT r;
  4.     WM_GetClientRect(&r);
  5.     GUI_SetBkColor(GUI_BLACK);
  6.     GUI_SetColor(GUI_WHITE);
  7.     GUI_SetFont(GUI_FONT_6X8);
  8.     GUI_SetTextMode(GUI_TM_TRANS);
  9.     GUI_ClearRectEx(&r);

  10. }

  11. void _cbBkWindow(WM_MESSAGE* pMsg)
  12. {
  13.     WM_HWIN hWin = pMsg->hWin;
  14.    
  15.     switch (pMsg->MsgId) {
  16.         case WM_PAINT: {
  17.               _PaintFrame();
  18.             }
  19.         break;

  20.         default:
  21.             WM_DefaultProc(pMsg); break;
  22.     }
  23. }


  24. static const GUI_ConstString _ListBox[] = {
  25.   "AA",
  26.   "BB",
  27.   "CC",
  28.   "DD",   
  29.   NULL
  30. };
  31. LISTBOX_Handle hListBox;  
  32. void _cbManualWindow(WM_MESSAGE* pMsg)
  33. {
  34.     WM_HWIN hWin = pMsg->hWin;
  35.     GUI_RECT r={0,240,40,280};

  36.     switch (pMsg->MsgId) {

  37.         case WM_CREATE:
  38.              GUI_SetBkColor(GUI_BLACK);
  39.              GUI_SetFont(GUI_FONT_6X8);
  40.              GUI_SetTextMode(GUI_TM_TRANS);
  41.              GUI_ClearRectEx(&r);
  42.         
  43.              GUI_SetFont(GUI_FONT_6X8);
  44.              GUI_SetTextMode(GUI_TM_TRANS);
  45.              hListBox = LISTBOX_Create(_ListBox,0, 40, 120, 240,WM_CF_SHOW) ;
  46.              LISTBOX_SetFont(hListBox, GUI_FONT_6X8);
  47.              WM_SetFocus(hWin);
  48.          break;
  49.         default:
  50.             WM_DefaultProc(pMsg);
  51.         break;
  52.     }
  53. }


  54. void demo(void)
  55. {
  56.     GUI_UC_SetEncodeUTF8();
  57.     WIDGET_SetDefaultEffect(&WIDGET_Effect_None);                             /* 设置边框为无色         */
  58.     WM_SetCallback(WM_HBKWIN, &_cbBkWindow);                                  /* 设置桌面窗口的回调函数 */
  59.     WM_CreateWindowAsChild(0, 40,  240, 240, WM_HBKWIN, WM_CF_SHOW, _cbManualWindow, 0);
  60. }
复制代码



回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115778
QQ
发表于 2019-1-5 11:51:33 | 显示全部楼层
直接上传基于V6的完整例子。
回复

使用道具 举报

14

主题

78

回帖

120

积分

初级会员

积分
120
发表于 2019-2-3 11:56:10 | 显示全部楼层
本帖最后由 mcza30 于 2019-2-3 22:14 编辑
eric2013 发表于 2019-1-5 11:51
直接上传基于V6的完整例子。

请教eric2013,LISTBOX的行间距能不能设置?
谢谢。
//---查到了,用LISTBOX_SetItemSpacing()能设置。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115778
QQ
发表于 2019-2-4 00:23:44 | 显示全部楼层
mcza30 发表于 2019-2-3 11:56
请教eric2013,LISTBOX的行间距能不能设置?
谢谢。
//---查到了,用LISTBOX_SetItemSpacing()能设置。 ...



好的,放假了没有及时回复。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-17 17:01 , Processed in 0.242431 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表