解决方案 »
- directinput问题,如何创建多个joystick实例
- 为什么undeclared identifier
- 新手请教,语句问题
- 怎样在三层结构中combox调用数据库中的值?
- CDatabase类使用时一个莫名其妙的问题
- 刚来公司读代码有一处不懂,想请教大家?对话框ID相同,但语言不同。
- IE打不开CSDN的状态树是什么问题啊??
- 为什么Dialog的资源总是用类似“enum { IDD = IDD_DIALOG_INFORMATION };”这样的枚举类型定义?
- 如何直接修改其它程序(/或进程)所占用的内存?
- 用哪种数据库技术可以使分发的安装程序最小???
- 我的button的图标不能显示,可能有哪些原因?
- 请教关于DirectX库的一个问题???
难道是上一个程序员故意整的?你检查下是不是被拦截掉了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);
真不是这个问题,因为换了N个ID试结果都一样。
"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);
从工具箱拖入的Button,不管是通过控件的EnableWindow函数还是用API(SetWindowLong)无法去除disabled样式;
直接用API(CreateWindow)创建的Button,各种功能都正常。初步结论是:出现该问题的只是从工具箱内拖入的Button,即CButton类。原先也考虑过ID冲突的问题,但查询后没发现ID有冲突,且换用从没用过的ID创建也是disabled,因此排除这种可能性;
也考虑才MFC版本差异造成的,但试验过在其它窗体内添加Button却可正常使用,因此这种可能性也排除了。所以想问下各位大牛:还有哪些情况可能会引发这种现象的?
从工具箱拖入的Button,不管是通过控件的EnableWindow函数还是用API(SetWindowLong)无法去除disabled样式;
直接用API(CreateWindow)创建的Button,各种功能都正常。初步结论是:出现该问题的只是从工具箱内拖入的Button,即CButton类。原先也考虑过ID冲突的问题,但查询后没发现ID有冲突,且换用从没用过的ID创建也是disabled,因此排除这种可能性;
也考虑才MFC版本差异造成的,但试验过在其它窗体内添加Button却可正常使用,因此这种可能性也排除了。所以想问下各位大牛:还有哪些情况可能会引发这种现象的?
能否把源码上传给我们研究下?
如果不方便,能否提取出有问题的工程中的相关源码?
1.ID冲突,和菜单之类的什么东西设成相同数字的ID了,在resource.h里面搜一下看看
2.你放的Button所在的父窗体被禁止
3.代码中对某个段的ID做过处理,很不幸新的Button在这个范围内做个小测试,你在相同位置多拖出来几个按钮,一次多一个,看看按钮的状态
如果第二个按钮就是好的,应该是1
如果第三以上按钮才可用,应该是3
如果一直都是不可用的,那就是2确定是哪种情况了,再去找代码的问题