硬汉嵌入式论坛

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

[emWin] 使用DROPDOWN 下拉列表如何调用返回函数

[复制链接]

4

主题

8

回帖

4

积分

新手上路

积分
4
发表于 2016-2-18 13:26:23 | 显示全部楼层 |阅读模式
如题  
子函数内  定义     int list_value ;

部分函数:

  case ID_DROPDOWN_0: // Notifications sent by 'Dropdown'
      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)                                
              hItem = WM_GetDialogItem(pMsg->hWin, ID_DROPDOWN_0);
                         list_value = DROPDOWN_GetSel(hItem); //获取下拉列表信息
                switch(list_value)
                    {
                       case 1ED1  = ledon; break;
                     default: LED1  = ledoff;break;
                    }
               
                    
        // USER END                  
        break;

目的是  当下拉列表选中第二个时  小灯亮,选择其他选项小灯灭  
  现象是  点第二个有反应     只不过 需要点中之后  还需要再点一次下拉列表才可以实现

请问 如何修改
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115728
QQ
发表于 2016-2-18 13:42:19 | 显示全部楼层
但看这部分设计没问题,另外“再点一次下拉列表才可以实现”是指的需要再次操作一次吗。

楼主可以在这部分加个串口打印下,看看实际输出的 list_value是多少。
回复

使用道具 举报

4

主题

8

回帖

4

积分

新手上路

积分
4
 楼主| 发表于 2016-2-18 16:13:42 | 显示全部楼层
(第一次发帖 系统说不能直接回复您)   我用串口打印出的值和认为的值是一样的   不过确实是在 “再点一次下拉列表才可以实现“ 之后  值才变化的  (意思就是需要在操作一遍)
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115728
QQ
发表于 2016-2-18 16:28:28 | 显示全部楼层

回 sv小洁 的帖子

sv小洁:(第一次发帖 系统说不能直接回复您)   我用串口打印出的值和认为的值是一样的   不过确实是在 “再点一次下拉列表才可以实现“ 之后  值才变化的  (意思就是需要在操作一遍) (2016-02-18 16:13) 
第一次点击是否有串口输出,也就是确定下是否设置了LED
回复

使用道具 举报

4

主题

8

回帖

4

积分

新手上路

积分
4
 楼主| 发表于 2016-2-18 16:40:52 | 显示全部楼层
问题解决了 但我还是有点不太明白      
我将
hItem = WM_GetDialogItem(pMsg->hWin, ID_DROPDOWN_0);
        list_value = DROPDOWN_GetSel(hItem);
                switch(list_value)
                    {
                       case 1ED1  = ledon; break;
                         default: LED1  = ledoff;break;
                    }
这一段  
放在了
static void _cbDialog(WM_MESSAGE * pMsg)  子函数的最前面    串口打印的也对了
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115728
QQ
发表于 2016-2-18 16:46:56 | 显示全部楼层
估计是你的触摸设计有点问题,没有释放控件。
其中case WM_NOTIFICATION_RELEASED:是用户释放了Dropdown控件时会进入此消息。
回复

使用道具 举报

1

主题

33

回帖

36

积分

新手上路

积分
36
发表于 2016-12-22 16:42:03 | 显示全部楼层
你可以试试,增加 WM_NOTIFICATION_SEL_CHANGED 项,将你的程序放入这个分支程序中。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-14 18:08 , Processed in 0.285901 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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