【问题标题】:Make a push button look disabled/grayed according to my requirement根据我的要求使按钮看起来禁用/变灰
【发布时间】:2013-07-08 07:15:18
【问题描述】:

我有一个服务器/客户端应用程序。服务器为每个客户端提供按钮。连接客户端后,按钮变为启用状态,您可以单击该按钮。单击该按钮时,会出现一个新窗口,显示该特定客户端的信息,例如 IP 地址、端口号等。

现在,我想要的是,一旦客户端出现故障或处于活动状态,我就可以禁用按钮。当客户端再次连接时,该按钮必须再次启用才能被用户点击。

有什么方法可以实现这个功能吗?欢迎任何帮助/建议。

编辑: 我试过EnableWindow 但我得到Run time check failure #3 variable used without being initialized 错误。

下面是sn-p的代码:

HWND hWndButton[10];
       case WM_CREATE:
          {
           SetTimer(hwnd,IDT_TIMER1,10000, NULL);    
           for(int i=0;i<=9;i++)
           {
              hWndButton[i] =    CreateWindowEx(NULL,"BUTTON",buttonCaption,WS_TABSTOP|WS_VISIBLE|WS_CHILD|BS_DEFPUSHBUTTON,
                                             30*i,30,70,20,hwnd,   (HMENU)buttonNumber,GetModuleHandle(NULL),NULL);
           }
          } 
       break;
       case WM_TIMER: 
          switch(wParam) 
             { 
                case IDT_TIMER1: 
                   {
                     EnableWindow(hWndButton[8],FALSE);
                   }
            break;
             }
       break;

【问题讨论】:

  • 你有没有试过任何代码?
  • "我已经尝试过 EnableWindow,但我得到了Run time check failure #3 variable used without being initialized 错误。"那么...您是否初始化了变量?错误消息告诉您出了什么问题。
  • 错误是针对 HWND hWndButton[10],在 orogram 开始时声明,并在调用 WM_CREATE 时初始化其 get。而且我从未在我的许多代码中初始化 HWND,没有它,代码也能正常工作。

标签: c windows visual-studio-2010 winapi button


【解决方案1】:

使用按钮的句柄调用EnableWindow函数。

【讨论】:

  • 请看编辑
  • 编辑没有明确hWndButton是全局变量还是局部变量。错误消息表明您将其设为局部变量,但无法正常工作。
  • 非常感谢。使其成为全局变量解决了问题,但我仍然无法弄清楚这是怎么发生的。
  • 如果 hWndButton 是一个本地数组,那么每次调用 wndproc 函数时都会得到一个新的未初始化数组。当 wndproc 返回时,该数组被破坏(并且您丢失了存储在其中的 hwnd)。
猜你喜欢
  • 2021-06-06
  • 2017-11-21
  • 2014-05-04
  • 2012-10-09
  • 1970-01-01
  • 2021-07-09
  • 2020-04-21
  • 2020-08-17
  • 1970-01-01
相关资源
最近更新 更多