硬汉嵌入式论坛

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

[emWin] 硬汉哥,请问一个小问题

[复制链接]

14

主题

34

回帖

14

积分

新手上路

积分
14
发表于 2014-11-28 13:50:57 | 显示全部楼层 |阅读模式
我在创建了9个按钮时,用的是在窗口上直接创建的,没有用对话框,可是现在我要获得任意按钮的句柄,来操作按钮,怎获得这个按钮的句柄呢?
代码如下:
   switch (pMsg->MsgId)
    {
    case WM_CREATE:
            WM_SetFocus(hWin);
        
         _CreateButton(hWin,"O",  NUM_Data1,18, 166,78, 32, 0,0);
         _CreateButton(hWin,"O",  NUM_Data2,116,166,78, 32, 0,0);
         _CreateButton(hWin,"O",  NUM_Data3,215,166,78, 32, 0,0);
         _CreateButton(hWin,"O",  NUM_Data4,18, 166,78, 32, 0,0);
         _CreateButton(hWin,"O",  NUM_Data5,116,166,78, 32, 0,0);
         _CreateButton(hWin,"O",  NUM_Data6,215,166,78, 32, 0,0);
         _CreateButton(hWin,"O",  NUM_Data7,18, 166,78, 32, 0,0);
         _CreateButton(hWin,"O",  NUM_Data8,116,166,78, 32, 0,0);
         _CreateButton(hWin,"O",  NUM_Data9,215,166,78, 32, 0,0);
          hItem = EDIT_CreateEx(210, 3, 107, 28, hWin, WM_CF_SHOW, 0, GUI_ID_EDIT0, 4);、
          EDIT_SetFont(hItem, &GUI_Font8x16);
          EDIT_SetTextAlign(hItem, GUI_TA_CENTER);
          hItem = EDIT_CreateEx(53, 3, 57, 26, hWin, WM_CF_SHOW, 0, GUI_ID_EDIT0, 4);
          EDIT_SetFont(hItem, &GUI_Font8x16);
          EDIT_SetTextAlign(hItem, GUI_TA_CENTER);
        break;
        case WM_PAINT :         
         _PaintFrame();
        break;
    case WM_NOTIFY_PARENT :
     if(pMsg->Data.v==WM_NOTIFICATION_RELEASED)
         {
             int Id = WM_GetId(pMsg->hWinSrc);
                switch (Id)
                {
                    case NUM_Data1 :
                    case NUM_Data2 :
                    case NUM_Data3 :
                    case NUM_Data4 :
                    case NUM_Data5 :
                    case NUM_Data6 :
                    case NUM_Data7 :
                    case NUM_Data8 :
                    case NUM_Data9 :
                        if(Id==Rand){ /****就是这个地方***/怎么获取这个按键的句柄 (BUTTON_Item=WM_GetButton(hWin,Id);)这个没有
                            /****下面的是设置按钮的颜色******/
                             BUTTON_SetBkColor   (hButton, 1, FRAME_BUTTON_BKCOLOR1);
                            }
                        }
                    break;
                    //case NUMPAD_ID_9 : //êy×Ö°′¼ü
         }
    break;
谢谢!!!还是一定要用对话框那种,来获取??
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115692
QQ
发表于 2014-11-28 18:07:24 | 显示全部楼层
_CreateButton(hWin,"O",  NUM_Data1,18, 166,78, 32, 0,0);  你使用这个创建的时候应该有一个按键的ID的。
回复

使用道具 举报

14

主题

34

回帖

14

积分

新手上路

积分
14
 楼主| 发表于 2014-11-30 13:10:03 | 显示全部楼层

回 eric2013 的帖子

eric2013:_CreateButton(hWin,"O",  NUM_Data1,18, 166,78, 32, 0,0);  你使用这个创建的时候应该有一个按键的ID的。 (2014-11-28 18:07) 
是有按键ID的,可是我现在要通过ID来获得按键句柄,一种最常见的方法就是在创建的时候就获得按键句柄,可是这样有几个按键就有几个句柄,这样在后面我获得了一个句柄,还要和这些比较,比较麻烦,不知有没有哪个函数是像这样的 句柄=BUTTON_Item(BUTTON,ID);这样就很方便
回复

使用道具 举报

14

主题

34

回帖

14

积分

新手上路

积分
14
 楼主| 发表于 2014-11-30 13:14:13 | 显示全部楼层

回 eric2013 的帖子

eric2013:_CreateButton(hWin,"O",  NUM_Data1,18, 166,78, 32, 0,0);  你使用这个创建的时候应该有一个按键的ID的。 (2014-11-28 18:07) 
我的代码是这样写的:switch (Id)
                 {
                    case NUM_Data1 :
                    case NUM_Data2 :
                    case NUM_Data3 :
                    case NUM_Data4 :
                    case NUM_Data5 :
                    case NUM_Data6 :
                    case NUM_Data7 :
                    case NUM_Data8 :
                    case NUM_Data9 :
                        
                        if(Id==Rand){  /****就是怎么来获得这个ID的句柄**/
                             //BUTTON_Item=WM_GetId(Id);
                              BUTTON_SetBkColor(BUTTON_Item, 0, GUI_BLUE);
                             Score++;
                             Score0[0]=Score/10;
                             Score0[1]=Score%10;
                             EDIT_SetText(hItem0/*WM_GetDialogItem(hWin, GUI_ID_EDIT0)*/, Score0);
                            }
                    else
                    {
                    if(flag_chang==1){
                                                  BUTTON_SetBkColor   (BUTTON_Item, 0, GUI_RED);}
                          else if(flag_chang==0){
                                                  BUTTON_SetBkColor   (BUTTON_Item, 0, GUI_BLUE);}
            
            }
                    break;
            }
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115692
QQ
发表于 2014-11-30 13:55:06 | 显示全部楼层

回 1756143812 的帖子

1756143812:我的代码是这样写的:switch (Id)
                 {
                    case NU .. (2014-11-30 13:14) 
switch (Id)
                {
                    case NUM_Data1 :  -------------------》这些用ID不是很方便么。
                    case NUM_Data2 :
                    case NUM_Data3 :
                    case NUM_Data4 :
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-12 11:24 , Processed in 0.226318 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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