OpenEdv-开源电子网

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

对话框、按钮及文本框控件

[复制链接]

11

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2013-3-11
在线时间
0 小时
发表于 2013-3-26 22:43:11 | 显示全部楼层 |阅读模式

 我做了一个对话框,上面有123456789九个按钮和一个文本框,我要实现点1按钮时文本框内显示数字1,点2时文本框显示2,依此类推,在点击按钮时,按钮弹不上来了,估计死这了,求教如何实现!!!!请高手指点点
部分代码如下:
/*资源表*/
static const  GUI_WIDGET_CREATE_INFO _aDialogCreate[] =       //各个函数的参数注释 :
 {
   {FRAMEWIN_CreateIndirect,"Password Box Experiment",0,10,10,460,252,0,6},         
   {EDIT_CreateIndirect,NULL,GUI_ID_EDIT0,135,5,190,40,0,5},
   {BUTTON_CreateIndirect,"OK",GUI_ID_OK,240,180,120,30,0,0},              
   {BUTTON_CreateIndirect,"0",GUI_ID_BUTTON0,170,180,50,30,0,0},
   {BUTTON_CreateIndirect,"1",GUI_ID_BUTTON1,100,180,50,30,0,0},              
  
   {BUTTON_CreateIndirect,"2",GUI_ID_BUTTON2,100,130,50,30,0,0},
   {BUTTON_CreateIndirect,"3",GUI_ID_BUTTON3,170,130,50,30,0,0},             
   {BUTTON_CreateIndirect,"4",GUI_ID_BUTTON4,240,130,50,30,0,0},
   {BUTTON_CreateIndirect,"5",GUI_ID_BUTTON5,310,130,50,30,0,0},            

   {BUTTON_CreateIndirect,"6",GUI_ID_BUTTON6,100,80,50,30,0,0},
   {BUTTON_CreateIndirect,"7",GUI_ID_BUTTON7,170,80,50,30,0,0},            
   {BUTTON_CreateIndirect,"8",GUI_ID_BUTTON8,240,80,50,30,0,0},
   {BUTTON_CreateIndirect,"9",GUI_ID_BUTTON9,310,80,50,30,0,0}             
  };


/*对话框程序*/
static void _cbCallback(WM_MESSAGE*pMsg)  // 
{           
  int NCode,Id;
  WM_HWIN hEdit0,hButton0,hButton1,hButton2,hButton3,hButton4,hButton5,hButton6,hButton7,hButton8,hButton9,hButton10;
  WM_HWIN hWin = pMsg->hWin; 
  switch(pMsg->MsgId)      //
  {
    case WM_INIT_DIALOG:
       /*获得所有控件的窗口句柄*/
      hEdit0 = WM_GetDialogItem(hWin,GUI_ID_EDIT0);
    hButton0 = WM_GetDialogItem(hWin,GUI_ID_BUTTON0);
      hButton1 = WM_GetDialogItem(hWin,GUI_ID_BUTTON1);
      hButton2 = WM_GetDialogItem(hWin,GUI_ID_BUTTON2);
      hButton3 = WM_GetDialogItem(hWin,GUI_ID_BUTTON3);
    hButton4 = WM_GetDialogItem(hWin,GUI_ID_BUTTON4);
      hButton5 = WM_GetDialogItem(hWin,GUI_ID_BUTTON5);
    hButton6 = WM_GetDialogItem(hWin,GUI_ID_BUTTON6);
      hButton7 = WM_GetDialogItem(hWin,GUI_ID_BUTTON7);
    hButton8 = WM_GetDialogItem(hWin,GUI_ID_BUTTON8);
      hButton9 = WM_GetDialogItem(hWin,GUI_ID_BUTTON9);
    hButton10 = WM_GetDialogItem(hWin,GUI_ID_OK);

    /*初始化所有控件*/
    BUTTON_SetFont(hButton10, &GUI_Font24B_1);
             BUTTON_SetBkColor(hButton10, 1, GUI_GREEN);

    BUTTON_SetFont(hButton0, &GUI_Font24B_1);
             BUTTON_SetBkColor(hButton0, 1, GUI_GREEN);

    BUTTON_SetFont(hButton1, &GUI_Font24B_1);
             BUTTON_SetBkColor(hButton1, 1, GUI_GREEN);
   
    BUTTON_SetFont(hButton2, &GUI_Font24B_1);
             BUTTON_SetBkColor(hButton2, 1, GUI_GREEN);

    BUTTON_SetFont(hButton3, &GUI_Font24B_1);
             BUTTON_SetBkColor(hButton3, 1, GUI_GREEN);

    BUTTON_SetFont(hButton4, &GUI_Font24B_1);
             BUTTON_SetBkColor(hButton4, 1, GUI_GREEN);

    BUTTON_SetFont(hButton5, &GUI_Font24B_1);
             BUTTON_SetBkColor(hButton5, 1, GUI_GREEN);

    BUTTON_SetFont(hButton6, &GUI_Font24B_1);
             BUTTON_SetBkColor(hButton6, 1, GUI_GREEN);

    BUTTON_SetFont(hButton7, &GUI_Font24B_1);
             BUTTON_SetBkColor(hButton7, 1, GUI_GREEN);

    BUTTON_SetFont(hButton8, &GUI_Font24B_1);
             BUTTON_SetBkColor(hButton8, 1, GUI_GREEN);

    BUTTON_SetFont(hButton9, &GUI_Font24B_1);
             BUTTON_SetBkColor(hButton9, 1, GUI_GREEN);

    EDIT_SetTextAlign(hEdit0,GUI_TA_HCENTER | GUI_TA_VCENTER);
      EDIT_SetFont(hEdit0,&GUI_Font32B_1);
    
    case WM_KEY:
            switch (((WM_KEY_INFO*)(pMsg->Data.p))->Key)
            {
                case GUI_KEY_ESCAPE:
                    GUI_EndDialog(hWin, 1);
                    break;
                case GUI_KEY_ENTER:
                    GUI_EndDialog(hWin, 0);
                    break;
            }
            break;         
   
    case WM_NOTIFY_PARENT:
       Id = WM_GetId(pMsg->hWinSrc);
    NCode=pMsg->Data.v;
    switch(NCode)
    {
       case WM_NOTIFICATION_RELEASED:
     if(Id==GUI_ID_BUTTON0){
       EDIT_SetText(hEdit0,"0");}    //执行到此 死机,按钮弹不起来,文本框也无法显示0
         break;    
   default:
     FRAMEWIN_SetText(hWin,"Dialog - notification received");
    }
  break;
  default:WM_DefaultProc(pMsg);
  }
}

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

使用道具 举报

11

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2013-3-11
在线时间
0 小时
 楼主| 发表于 2013-3-27 16:41:01 | 显示全部楼层
回复 支持 反对

使用道具 举报

5

主题

166

帖子

2

精华

高级会员

Rank: 4

积分
506
金钱
506
注册时间
2012-10-8
在线时间
0 小时
发表于 2013-3-27 18:24:34 | 显示全部楼层
你的这个里面有一个明显的错误
WM_HWIN hEdit0 是局部变量,搞个全局变量就没问题了
回复 支持 反对

使用道具 举报

11

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2013-3-11
在线时间
0 小时
 楼主| 发表于 2013-3-28 10:44:36 | 显示全部楼层
这个我发现了,改好了,但是在文本框内在输入123456789,用GUI_GetValue()返回文本框的值的时候,无法返回值,还请楼上的大哥指点谜经
回复 支持 反对

使用道具 举报

11

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2013-3-11
在线时间
0 小时
 楼主| 发表于 2013-3-28 10:51:25 | 显示全部楼层
呵呵  解决了  有一个函数进入死循环了   同时也谢谢楼上的解答
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-22 12:51

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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