硬汉嵌入式论坛

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

[emWin] 请教大神:如何获取emWIN里面的下拉列表项?

[复制链接]

8

主题

36

回帖

60

积分

初级会员

积分
60
发表于 2014-7-18 14:40:04 | 显示全部楼层 |阅读模式
看到论坛上牛人很多,比如eric2013大神,请问,
我用emWIN实现了一个下拉列表框,触摸屏触摸后,能打开下拉列表,但是无法获取下拉列表框的选项。
增加自动滑动条,触摸可以移动,选项内容无法获取,这个下拉列表也不能收起来,请问eric2013及各位大神,这个如何处理才好呢。
下面是代码:

#include "GUI.h"
#include "WM.h"         
#include "DIALOG.h"
#include "SPINBOX.h"     
#include "WIDGET.h"  
#include "DROPDOWN.h"

static void _cbBkWin(WM_MESSAGE* pMsg)
{
    WM_HWIN hItem; //定义窗体项
    int     NCode;
  int Id;
    int list_value;

  switch (pMsg->MsgId)
        
    {
     case WM_PAINT:
     GUI_SetBkColor(GUI_BLUE);
     GUI_Clear();
         GUI_SetFont(&GUI_Font24B_ASCII);
         GUI_SetColor(GUI_RED);        
         //GUI_DispStringHCenterAt("Button Example", 160, 5);
         GUI_DispStringHCenterAt("Dropdown Example", 160, 5);

     break;
     case WM_NOTIFY_PARENT:
     
     Id = WM_GetId(pMsg->hWinSrc);
     NCode = pMsg->Data.v; //??   
         switch(Id)
         {  
              case ID_LISTBOX_0:
         switch(NCode)
              {
        case WM_NOTIFICATION_CLICKED:
                       //hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTBOX_0);
                       //DROPDOWN_Expand(hItem);
                       break;      
        case WM_NOTIFICATION_RELEASED:
             //hItem= WM_GetDialogItem(pMsg->hWin, ID_LISTBOX_0);                 
                   // DROPDOWN_Collapse(hItem);        
                break;
        case WM_NOTIFICATION_SEL_CHANGED:
        hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTBOX_0);
        list_value = LISTBOX_GetSel(hItem);
        switch(list_value)
            {
               case 0:
              
                        GPIO_SetBits(LED_PORT ,LED_PIN);
                GPIO_ResetBits(LED_PORT, LED1_PIN_1);
                    break;
               
               case 1:
                    GPIO_SetBits(LED_PORT ,LED_PIN);
               GPIO_ResetBits(LED_PORT, LED1_PIN_2);
                     
                  break;
               
               case 2:
                     GPIO_SetBits(LED_PORT ,LED_PIN);
                GPIO_ResetBits(LED_PORT, LED1_PIN_3);
                  
                        break;
               
               case 3:
               
                        GPIO_SetBits(LED_PORT ,LED_PIN);
                GPIO_ResetBits(LED_PORT, LED1_PIN_4);
                         break;
               
               default:
                  break;

             }              
         break;
       }
              break;            
               
    }
    break;
    default:
    WM_DefaultProc(pMsg);
  }
}static void Dropdown_Demo(void)
{
  
    WM_HWIN hDropDown;  
  int NumEntries;
    int i;

  //创建下拉列表
    hDropDown =DROPDOWN_CreateEx(160, 50, 120, 115-50, WM_HBKWIN, WM_CF_SHOW, 0, ID_LISTBOX_0);
    //WM_SetFocus(hDropDown);
   
    DROPDOWN_AddString(hDropDown, "LED1");
  DROPDOWN_AddString(hDropDown, "LED2");
  DROPDOWN_AddString(hDropDown, "LED3");
  DROPDOWN_AddString(hDropDown, "LED4");
   
  //DROPDOWN_Expand(hDropDown);
   
    DROPDOWN_SetFont(hDropDown, &GUI_Font16B_1);
    DROPDOWN_SetAutoScroll(hDropDown, 1);
    DROPDOWN_SetTextColor(hDropDown, 0, 0x00BB00);
  DROPDOWN_SetTextColor(hDropDown, 2, GUI_BLACK);
   
    DROPDOWN_SetBkColor(hDropDown, 0, GUI_YELLOW);
  DROPDOWN_SetBkColor(hDropDown, 2, GUI_RED);
   // WM_SetFocus(hDropDown);
//    NumEntries = DROPDOWN_GetNumItems(hDropDown); //???????
//  for (i = 0; i < NumEntries ; i++)
//    {
//    DROPDOWN_IncSel(hDropDown); //
//   
//    }
//   
   
}

void MainTask(void)
{  
   
     WM_SetCallback(WM_HBKWIN, _cbBkWin);
   
     Dropdown_Demo();
   while (1)
     {
   
        GUI_Delay(500);
  }
}
回复

使用道具 举报

8

主题

36

回帖

60

积分

初级会员

积分
60
 楼主| 发表于 2014-7-18 14:41:05 | 显示全部楼层
顶一个!谢谢
回复

使用道具 举报

1

主题

5

回帖

1

积分

新手上路

积分
1
发表于 2014-7-18 14:48:37 | 显示全部楼层
就是 dropdown 那的函数,不要看中文5.12的,api不全,对照5.22英文看。
获取选项的序号index
然后获取对应index的text
回复

使用道具 举报

1

主题

5

回帖

1

积分

新手上路

积分
1
发表于 2014-7-18 14:52:27 | 显示全部楼层
选择下拉列表也一样,全在手册中,中英文对照。
DROPDOWN_GetSelExp()
DROPDOWN_GetSel()
DROPDOWN_Collapse()
DROPDOWN_GetItemText()
回复

使用道具 举报

8

主题

36

回帖

60

积分

初级会员

积分
60
 楼主| 发表于 2014-7-18 15:33:14 | 显示全部楼层

回 uefirst 的帖子

uefirst:选择下拉列表也一样,全在手册中,中英文对照。
DROPDOWN_GetSelExp()
DROPDOWN_GetSel()
DROPDOWN_Collapse()
DROPDOWN_GetItemText() (2014-07-18 14:52) 
多谢啊,我试试
回复

使用道具 举报

8

主题

36

回帖

60

积分

初级会员

积分
60
 楼主| 发表于 2014-7-18 15:45:00 | 显示全部楼层

回 uefirst 的帖子

uefirst:就是 dropdown 那的函数,不要看中文5.12的,api不全,对照5.22英文看。
获取选项的序号index
然后获取对应index的text (2014-07-18 14:48) 
大神,你有没有这个函数例子啊,我怎么在函数里面实现触摸选择不同的选项呢?谢谢啦
回复

使用道具 举报

8

主题

36

回帖

60

积分

初级会员

积分
60
 楼主| 发表于 2014-7-18 17:29:17 | 显示全部楼层
还是不行啊,紧急求助!!!!!!!!!!!!!!!!!!!!
回复

使用道具 举报

8

主题

36

回帖

60

积分

初级会员

积分
60
 楼主| 发表于 2014-7-18 17:29:47 | 显示全部楼层
求助中
回复

使用道具 举报

8

主题

36

回帖

60

积分

初级会员

积分
60
 楼主| 发表于 2014-7-21 09:56:43 | 显示全部楼层
求助啊,大神
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107220
QQ
发表于 2014-7-21 10:02:20 | 显示全部楼层

回 shenxl419 的帖子

shenxl419:求助啊,大神 (2014-07-21 09:56) 
官方的那个下拉列表实例看了没有,很好用的。
回复

使用道具 举报

8

主题

36

回帖

60

积分

初级会员

积分
60
 楼主| 发表于 2014-7-21 14:01:13 | 显示全部楼层

回 eric2013 的帖子

eric2013:官方的那个下拉列表实例看了没有,很好用的。 (2014-07-21 10:02) 
终于等到大神回了,谢谢。
那个官方例程我看了,每次复位,可以选择一个选项,然后就不能再打开和选择了。

我的意思是,我重新选择和打开下拉列表框时,如何选择里面的选项内容,并选择之后,关闭下拉列表呢,这个一直不知在回调函数里面怎么实现?恳请打算指点啊,多谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-22 02:16 , Processed in 0.318499 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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