繁体   English   中英

如何在C ++中禁用CComboBox?

[英]How do you disable a CComboBox in C++?

我已经对此进行了广泛的搜索,而我大约20次提出的答案是使用CWnd :: EnableWindow(FALSE)。 目前,我有:

GetDlgItem(myComboBox)->EnableWindow(FALSE);

而不是禁用ComboBox,现在没有显示整个对话框,并且由于它是模式对话框(或者至少我猜是这个原因),整个程序被锁定,因为如果无法关闭对话框,它不在那里。

有没有一种方法可以禁用对此框的编辑而不会使其完全消失; 类似于SetReadOnly()对CEdit的作用?

编辑:突然,上述语法第二天早上开始工作。 我仍然不能完全确定为什么它一开始就不起作用。

EnableWindow(FALSE)是正确的调用函数,但是您的语法看起来可能不正确(但是用这么小的示例很难说)。

myComboBoxCComboBox的实例吗? 如果是这样,我希望看到:

myComboBox.EnableWindow(FALSE);

或者,使用关联的资源ID:

((CComboBox*)GetDlgItem(IDC_MY_COMBO_BOX))->EnableWindow(FALSE);

线程问题或重复的资源ID也会引起奇怪的问题。

似乎您正在尝试从与对话框不同的线程中调用EnableWindow()

您可以尝试一下,看看是否适合您:

GetDlgItem(myComboBox)->PostMessage(WM_ENABLE, (WPARAM)FALSE);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM