本帖最后由 suwei2002 于 2013-06-27 12:19:15 编辑

解决方案 »

  1.   

    EnableWindow方法应用于其他控件有效么?
    难道是上一个程序员故意整的?你检查下是不是被拦截掉了WM_ENABLE消息,你也可以试下下面这种方式,不通过EnableWindow来设置按钮long Style;
    Style = ::GetWindowLong(hWnd,GWL_STYLE); //获得Style值
    Style ^= WS_DISABLED; //去掉WS_DISABLED 
    ::SetWindowLong(hWnd,GWL_STYLE,Style); //设置回去
    ::SetWindowPos(hWnd,
    0,
    0, 
    0, 
    0, 
    0,
    SWP_FRAMECHANGED | SWP_NOSIZE | SWP_NOZORDER | SWP_NOMOVE);
      

  2.   

    “在一个对话框中添加一个Button” 怎么 加的 ?
      

  3.   

    在整个工程的所有文件中(不仅包括.h和.cpp)搜索与这个Button相关的文件(控件ID、控件ID宏的值、相关联的成员变量等),总有地方进行了处理,而你不知道的。
      

  4.   

    经测试其它控件调用EnableWindow是有效的。
      

  5.   

    直接从工具箱中拖的。
    真不是这个问题,因为换了N个ID试结果都一样。
      

  6.   

    你直接拖一个Button后,什么与不做,也不变量成员变量效果如何呢?
      

  7.   

    那你直接API创建一个试试HWND hwnd = CreateWindow(     "BUTTON",   // predefined class    
    "OK",       // button text    
    WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON,  // styles       // Size and position values are given explicitly, because     // the CW_USEDEFAULT constant gives zero values for buttons.   
    10,         // starting x position    
    10,         // starting y position   
    100,        // button width   
    100,        // button height    
    m_hWnd,       // parent window  
    NULL,       // No menu    
    (HINSTANCE) GetWindowLong(hwnd, GWL_HINSTANCE),  
    NULL);
      

  8.   

    什么也不做,运行后Button为disabled(也就是文字显灰,点击无效)
      

  9.   

    现在测试的结果是:
    从工具箱拖入的Button,不管是通过控件的EnableWindow函数还是用API(SetWindowLong)无法去除disabled样式;
    直接用API(CreateWindow)创建的Button,各种功能都正常。初步结论是:出现该问题的只是从工具箱内拖入的Button,即CButton类。原先也考虑过ID冲突的问题,但查询后没发现ID有冲突,且换用从没用过的ID创建也是disabled,因此排除这种可能性;
    也考虑才MFC版本差异造成的,但试验过在其它窗体内添加Button却可正常使用,因此这种可能性也排除了。所以想问下各位大牛:还有哪些情况可能会引发这种现象的?
      

  10.   

    现在测试的结果是:
    从工具箱拖入的Button,不管是通过控件的EnableWindow函数还是用API(SetWindowLong)无法去除disabled样式;
    直接用API(CreateWindow)创建的Button,各种功能都正常。初步结论是:出现该问题的只是从工具箱内拖入的Button,即CButton类。原先也考虑过ID冲突的问题,但查询后没发现ID有冲突,且换用从没用过的ID创建也是disabled,因此排除这种可能性;
    也考虑才MFC版本差异造成的,但试验过在其它窗体内添加Button却可正常使用,因此这种可能性也排除了。所以想问下各位大牛:还有哪些情况可能会引发这种现象的?
    能否把源码上传给我们研究下?
    如果不方便,能否提取出有问题的工程中的相关源码?
      

  11.   

    除去外部原因不谈,主要有以下几点:
    1.ID冲突,和菜单之类的什么东西设成相同数字的ID了,在resource.h里面搜一下看看
    2.你放的Button所在的父窗体被禁止
    3.代码中对某个段的ID做过处理,很不幸新的Button在这个范围内做个小测试,你在相同位置多拖出来几个按钮,一次多一个,看看按钮的状态
    如果第二个按钮就是好的,应该是1
    如果第三以上按钮才可用,应该是3
    如果一直都是不可用的,那就是2确定是哪种情况了,再去找代码的问题