OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4858|回复: 4

LISTBOX通过实体按键up/down选中里面的选项时候死机

[复制链接]

3

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2017-4-25
在线时间
13 小时
发表于 2019-1-4 22:04:59 | 显示全部楼层 |阅读模式
1金钱
问题描述:创建LISTBOX工具后,通过外部实体按键发送GUI_SendKeyMsg(GUI_KEY_DOWN, 1)或者GUI_SendKeyMsg(GUI_KEY_UP, 1)消息,
程序死机。
查看手册说,LISTBOX接收GUI_KEY_DOWN/GUI_KEY_UP,通过这来切换当前选中的哪个,
当我发送GUI_SendKeyMsg(GUI_KEY_DOWN, 1)或者GUI_SendKeyMsg(GUI_KEY_UP, 1)时候程序就进hartfault了
代码如下
[mw_shl_code=c,true]static const GUI_ConstString _ListBox[] = {
  "aaa",
  "bbb",
  "ccc",
  NULL
};
LISTBOX_Handle hListBox;  
void _cbManualWindow(WM_MESSAGE* pMsg)
{
    WM_HWIN hWin = pMsg->hWin;
    uint8_t uiOffSet= 20;
    GUI_RECT r={0,240,40,280};
    WM_HWIN hItem;
   
    switch (pMsg->MsgId) {

        case WM_CREATE:
            /* 设置聚焦 */
         
             GUI_SetBkColor(GUI_BLACK);
             GUI_SetFont(&GUI_FontFontSong24);
             GUI_SetTextMode(GUI_TM_TRANS);
             GUI_ClearRectEx(&r);
        
             GUI_SetFont(&GUI_FontFontSong24);
             GUI_SetTextMode(GUI_TM_TRANS);
        
             hListBox = LISTBOX_CreateEx(0, 40, 120, 240, hWin,WM_CF_SHOW,0,0,_ListBox);
             LISTBOX_SetFont(hListBox, &GUI_FontFontSong24);
//             LISTBOX_SetBkColor(hListBox,LISTBOX_CI_UNSEL,   GUI_BLACK);
//             LISTBOX_SetBkColor(hListBox,LISTBOX_CI_SEL,     GUI_DARKBLUE);
//             LISTBOX_SetBkColor(hListBox,LISTBOX_CI_SELFOCUS,GUI_LIGHTBLUE);
//             LISTBOX_SetBkColor(hListBox,LISTBOX_CI_DISABLED,GUI_GRAY);
////        
//             LISTBOX_SetTextColor(hListBox,LISTBOX_CI_UNSEL,   GUI_WHITE);
//             LISTBOX_SetTextColor(hListBox,LISTBOX_CI_SEL,     GUI_WHITE);
//             LISTBOX_SetTextColor(hListBox,LISTBOX_CI_SELFOCUS,GUI_WHITE);
//             LISTBOX_SetTextColor(hListBox,LISTBOX_CI_DISABLED,GUI_GRAY);
//            
//             LISTBOX_SetItemSpacing(hListBox,10);
//             LISTBOX_SetTextAlign(hListBox,GUI_TA_HCENTER|GUI_TA_VCENTER);
            
//             SCROLLBAR_CreateAttached(hListBox, SCROLLBAR_CF_VERTICAL);
             WM_SetFocus(hListBox);
         break;
        

        case WM_PAINT:
            
        break;
         case WM_KEY:
            switch (((WM_KEY_INFO*)(pMsg->Data.p))->Key) {
                case GUI_KEY_UP:
//                      WM_SetFocus(hListBox);
//                      WM_SetFocusOnPrevChild(hWin);
                 WM_SetFocus(hListBox);
                 LISTBOX_InvalidateItem(hListBox, LISTBOX_ALL_ITEMS);
                break;

                case GUI_KEY_DOWN:
//                    WM_SetFocus(hListBox);
//                      WM_SetFocusOnNextChild(hWin);
                WM_SetFocus(hListBox);
                 LISTBOX_InvalidateItem(hListBox, LISTBOX_ALL_ITEMS);
                break;
                default:break;
            }
        break;

        default:
            WM_DefaultProc(pMsg);
    }
}
[/mw_shl_code]

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2019-1-5 01:08:10 | 显示全部楼层
回复

使用道具 举报

3

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2017-4-25
在线时间
13 小时
 楼主| 发表于 2019-1-5 10:03:50 | 显示全部楼层

原子哥,我把官方的listbox在模拟器上运行,通过键盘的上下键可以切换当前行,把程序下载到探索者开发板上,按下key1时候发送GUI_SendKeyMsg(GUI_KEY_DOWN, 1)消息,按下key_up时候发送GUI_SendKeyMsg(GUI_KEY_UP, 1)消息,实际运行情况是,这两个按键无论按下哪个,程序就里面死机,原子哥给点思路吧
回复

使用道具 举报

3

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2017-4-25
在线时间
13 小时
 楼主| 发表于 2019-1-5 14:37:07 | 显示全部楼层

这是我的工程,基于【EMWIN实验3 文本显示】试验更改的代码,原子哥可以直接下载到探索者开发板中,按KEY1试试,直接死机,同样的代码我在别的开发板中运行OK,在模拟器中也是好的。 怀疑是这个模板有问题

EMWIN实验3 文本显示.zip

7.41 MB, 下载次数: 38

回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2019-9-30
在线时间
2 小时
发表于 2019-11-17 20:17:30 | 显示全部楼层
我跟你一模一样的问题,折腾了一个星期去查操作系统和GUI的问题,由于不开源,最后差点放弃了。实在没办法的试了一下将GUI_SendKeyMsg()改为GUI_StoreKeyMsg()问题居然解决了,但原因不明!
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 23:23

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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