OpenEdv-开源电子网

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

复选框实现单选效果问题。

[复制链接]

6

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2018-6-6
在线时间
28 小时
发表于 2018-8-10 11:29:55 | 显示全部楼层 |阅读模式
10金钱
      对应复选框的消息处理如下所示:编译一直出现八个错误,请大神帮我看下是逻辑问题还是语法上错误了,看了好久了。
                     
      我的想法是:选一个复选框的时候失能掉另一个复选框,在取消刚刚选中的复选框时再重新使能刚刚失能掉的复选框。下面是2个组的复选框(4个复选框),
                                                             case GUI_ID_CHECKBOX1:
                                                                 if(NCode==WM_NOTIFICATION_RELEASED)
                                                                  {
                                                                                 if(CHECKBOX_IsChecked(WM_GetDialogItem(pMsg->hWin, GUI_ID_CHECKBOX1)==1)
                                                                                 {
                                                                                         WM_DisableWindow(WM_GetDialogItem(pMsg->hWin, GUI_ID_CHECKBOX2));
                                                                                 }
                                                                        else        if(CHECKBOX_IsChecked(WM_GetDialogItem(pMsg->hWin, GUI_ID_CHECKBOX1)==0)
                                                                                 {
                                                                                         WM_EnableWindow(WM_GetDialogItem(pMsg->hWin, GUI_ID_CHECKBOX2));
                                                                                 }
                                                                  }
                                                                        break;
                                                                       
                                                                case GUI_ID_CHECKBOX2:
                                                                         if(NCode==WM_NOTIFICATION_RELEASED)
                                                                         {
                                                                                if(CHECKBOX_IsChecked(WM_GetDialogItem(pMsg->hWin, GUI_ID_CHECKBOX2)==1)
                                                                                 {
                                                                                WM_DisableWindow(WM_GetDialogItem(pMsg->hWin, GUI_ID_CHECKBOX1));
                                                                                 }
                                                                        else        if(CHECKBOX_IsChecked(WM_GetDialogItem(pMsg->hWin, GUI_ID_CHECKBOX2)==0)
                                                                                 {
                                                                                         WM_EnableWindow(WM_GetDialogItem(pMsg->hWin, GUI_ID_CHECKBOX1));
                                                                                 }
                                                                         }
                                                                        break;
                                                                         
                                                                case GUI_ID_CHECKBOX3:
                                                                         if(NCode==WM_NOTIFICATION_RELEASED)
                                                                         {
                                                                                 if(CHECKBOX_IsChecked(WM_GetDialogItem(pMsg->hWin, GUI_ID_CHECKBOX3)==1)
                                                                                 {
                                                                                WM_DisableWindow(WM_GetDialogItem(pMsg->hWin, GUI_ID_CHECKBOX4));
                                                                                 }
                                                                                else if(CHECKBOX_IsChecked(WM_GetDialogItem(pMsg->hWin, GUI_ID_CHECKBOX3)==0)
                                                                                 {
                                                                                         WM_EnableWindow(WM_GetDialogItem(pMsg->hWin, GUI_ID_CHECKBOX4));
                                                                                 }
                                                                         }
                                                                        break;
                                                                         
                                                                case GUI_ID_CHECKBOX4:
                                                                         if(NCode==WM_NOTIFICATION_RELEASED)
                                                                         {
                                                                                 if(CHECKBOX_IsChecked(WM_GetDialogItem(pMsg->hWin, GUI_ID_CHECKBOX4)==1)
                                                                                 {
                                                                                WM_DisableWindow(WM_GetDialogItem(pMsg->hWin, GUI_ID_CHECKBOX3));
                                                                                 }
                                                                        else if(CHECKBOX_IsChecked(WM_GetDialogItem(pMsg->hWin, GUI_ID_CHECKBOX4)==0)
                                                                                 {
                                                                                         WM_EnableWindow(WM_GetDialogItem(pMsg->hWin, GUI_ID_CHECKBOX3));
                                                                                 }
                                                                         }
                                                                        break;
出错内容如下:4对如下两个的错误
..\..\emWin\emWinTask\MainTask_Network.c(381): error:  #18: expected a ")"
..\..\emWin\emWinTask\MainTask_Network.c(388): error:  #127: expected a statement

最佳答案

查看完整内容[请看2#楼]

自己解决了,没用这个方法,这个方法略显笨拙,直接用了两个置位, 例:盒1和盒2一组,在盒1对应消息处理下,用SetState盒1为1,用SetState盒2为0 在盒2对应消息处理下,用SetState盒2为1,用SetState盒1为0 (之前写的程序是盒1点过之后不能直接点盒2,需要先取消盒1,因为当时用的是使能和失能)
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2018-6-6
在线时间
28 小时
 楼主| 发表于 2018-8-10 11:29:56 | 显示全部楼层
自己解决了,没用这个方法,这个方法略显笨拙,直接用了两个置位,
  例:盒1和盒2一组,在盒1对应消息处理下,用SetState盒1为1,用SetState盒2为0
                                在盒2对应消息处理下,用SetState盒2为1,用SetState盒1为0
(之前写的程序是盒1点过之后不能直接点盒2,需要先取消盒1,因为当时用的是使能和失能)
回复

使用道具 举报

6

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2018-6-6
在线时间
28 小时
 楼主| 发表于 2018-8-10 11:38:58 | 显示全部楼层
不好意思打的不好,我重新发一次,

      对应复选框的消息处理如下所示:编译一直出现八个错误,请大神帮我看下是逻辑问题还是语法上错误了,看了好久了。
                     
      我的想法是:选一个复选框的时候失能掉另一个复选框,在取消刚刚选中的复选框时再重新使能刚刚失能掉的复选框。下面是2个组的复选框(4个复选框),

                         case GUI_ID_CHECKBOX1:
                          if(NCode==WM_NOTIFICATION_RELEASED)
                                {
                                  if(CHECKBOX_IsChecked(WM_GetDialogItem(pMsg->hWin, GUI_ID_CHECKBOX1)==1)
                                       {
                                        WM_DisableWindow(WM_GetDialogItem(pMsg->hWin, GUI_ID_CHECKBOX2));
                                        }
                        else        if(CHECKBOX_IsChecked(WM_GetDialogItem(pMsg->hWin, GUI_ID_CHECKBOX1)==0)
                                      {
                                      WM_EnableWindow(WM_GetDialogItem(pMsg->hWin, GUI_ID_CHECKBOX2));
                                        }
                                 }
                                   break;
                                                                        
                           case GUI_ID_CHECKBOX2:
                       if(NCode==WM_NOTIFICATION_RELEASED)
                        {
                          if(CHECKBOX_IsChecked(WM_GetDialogItem(pMsg->hWin, GUI_ID_CHECKBOX2)==1)
                                {
                                   WM_DisableWindow(WM_GetDialogItem(pMsg->hWin, GUI_ID_CHECKBOX1));
                                }
                        else        if(CHECKBOX_IsChecked(WM_GetDialogItem(pMsg->hWin, GUI_ID_CHECKBOX2)==0)
                                       {
                                        WM_EnableWindow(WM_GetDialogItem(pMsg->hWin, GUI_ID_CHECKBOX1));
                                         }
                               }
                                break;
                                                                        
                            case GUI_ID_CHECKBOX3:
                       if(NCode==WM_NOTIFICATION_RELEASED)
                          {
                               if(CHECKBOX_IsChecked(WM_GetDialogItem(pMsg->hWin, GUI_ID_CHECKBOX3)==1)
                                {
                                      WM_DisableWindow(WM_GetDialogItem(pMsg->hWin, GUI_ID_CHECKBOX4));
                                  }
                    else if(CHECKBOX_IsChecked(WM_GetDialogItem(pMsg->hWin, GUI_ID_CHECKBOX3)==0)
                                {
                                WM_EnableWindow(WM_GetDialogItem(pMsg->hWin, GUI_ID_CHECKBOX4));
                                  }
                        }
                       break;
                                                                        
                     case GUI_ID_CHECKBOX4:
                    if(NCode==WM_NOTIFICATION_RELEASED)
                          {
                             if(CHECKBOX_IsChecked(WM_GetDialogItem(pMsg->hWin, GUI_ID_CHECKBOX4)==1)
                                {
                                   WM_DisableWindow(WM_GetDialogItem(pMsg->hWin, GUI_ID_CHECKBOX3));
                                }
                         else if(CHECKBOX_IsChecked(WM_GetDialogItem(pMsg->hWin, GUI_ID_CHECKBOX4)==0)
                               {
                           WM_EnableWindow(WM_GetDialogItem(pMsg->hWin, GUI_ID_CHECKBOX3));
                               }
                    }
                break;
出错内容如下:4对如下两个的错误
..\..\emWin\emWinTask\MainTask_Network.c(381): error:  #18: expected a ")"
..\..\emWin\emWinTask\MainTask_Network.c(388): error:  #127: expected a statement
回复

使用道具 举报

7

主题

188

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
385
金钱
385
注册时间
2018-7-19
在线时间
126 小时
发表于 2018-8-10 17:14:07 | 显示全部楼层
看错误应该是括号分号,语法一类的问题。  仔细看看
回复

使用道具 举报

1

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2018-8-4
在线时间
15 小时
发表于 2018-8-10 18:04:13 | 显示全部楼层
应该是你在某个地方写的符号有问题   认真看下有没有写错符号或者不该写符号的地方写了符号
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-2 20:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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