如何在C ++中禁用CComboBox?

时间:2017-07-03 15:34:08

标签: c++ mfc dialog modal-dialog

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

GetDlgItem(myComboBox)->EnableWindow(FALSE);

现在整个对话框都没有显示,而不是禁用ComboBox,而且由于它是一个模态对话框(或者至少我猜测的原因),整个程序被锁定,因为如果对话框不存在,我就无法关闭对话框。

有没有办法禁止编辑到这个框而不会让它完全消失;类似于SetReadOnly()对CEdit的作用?

修改 突然,上面的语法在第二天早上开始工作了。我还不完全确定为什么它一开始就不起作用。

2 个答案:

答案 0 :(得分:2)

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

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

myComboBox.EnableWindow(FALSE);

或使用关联的资源ID:

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

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

答案 1 :(得分:0)

您似乎试图从与对话框的

不同的线程调用EnableWindow()

你可以尝试这个,看看它是否适合你:

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