硬汉嵌入式论坛

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

[emWin] ICONVIEW_GetSel索引返回值问题

[复制链接]

5

主题

16

回帖

31

积分

新手上路

积分
31
发表于 2022-8-22 11:41:22 | 显示全部楼层 |阅读模式
利用物理按键自定义消息来点击图标
代码如下: case WM_ENTER:                  pMsgInfo.MsgId = WM_NOTIFY_PARENT;
                  pMsgInfo.hWinSrc = WM_GetDialogItem(pMsg->hWin, ID_ICONVIEW_1);
                  pMsgInfo.Data.v = WM_NOTIFICATION_RELEASED;
                  WM_SendMessage(pMsg->hWin, &pMsgInfo);       
  break;
  case WM_NOTIFY_PARENT:
    Id    = WM_GetId(pMsg->hWinSrc);
    NCode = pMsg->Data.v;
    switch(Id) {
    case ID_ICONVIEW_1: // Notifications sent by 'Iconview'
      switch(NCode) {
      case WM_NOTIFICATION_CLICKED:
        // USER START (Optionally insert code for reacting on notification message)
        // USER END
        break;
      case WM_NOTIFICATION_RELEASED:
        // USER START (Optionally insert code for reacting on notification message)
                switch( ICONVIEW_GetSel(pMsg->hWinSrc))
                        {
                               
                                /* System */
                                case 1:
//                                        GUI_EndDialog(pMsg->hWin, 1);
                                    WM_SendMessageNoPara(CreateMain(),WM_DELECT);
                                        GUI_CreateDialogBox(_aDialogCreate_Sys, GUI_COUNTOF(_aDialogCreate_Sys), _cbDialog_Sys, WM_HBKWIN, 0, 0);
                                break;       
                                                               
                                /* Mode */
                                case 0:
                                       
//                                        GUI_EndDialog(pMsg->hWin, 1);
                                        WM_SendMessageNoPara(CreateMain(),WM_DELECT);
                                        GUI_CreateDialogBox(_aDialogCreate_Set1, GUI_COUNTOF(_aDialogCreate_Set1), _cbDialog_Set1, WM_HBKWIN, 0, 0);                               
                                break;       
                                                               
                                /* Config */
                                case 2:
                                                                       
                                break;       
                                                               
                                /* COM */
                                case 3:
                                                                       
                           break;
                                                               
                                default:
                           break;
                        }       
        // USER END
        break;
问题:一共四个图标,但是无论点击哪个图标,返回的值都是0,只执行case 0,请问这是哪个环节出了问题呢


回复

使用道具 举报

5

主题

16

回帖

31

积分

新手上路

积分
31
 楼主| 发表于 2022-8-22 14:14:23 | 显示全部楼层
本帖最后由 Ronin 于 2022-8-22 15:11 编辑

此问题已找到原因。
回复

使用道具 举报

5

主题

16

回帖

31

积分

新手上路

积分
31
 楼主| 发表于 2022-8-22 14:18:27 | 显示全部楼层
此问题已找到原因。原因在于:在MainTask函数while(1)中调用了GUI_Exec()。因为用的是裸机,物理按键处理也放在了while(1)中,当按下按键就会触发一次GUI_Exec(),就会进行初始化,初始化过后ICONVIEW_GetSel返回的值就会一直是0。后面的话应加入系统,以便于更好的实现调度分配等。与大家共勉~
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-24 00:39 , Processed in 0.229602 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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