INFO: Dynamically Disabling/Enabling a Control in a Dialog Box (108896)
The information in this article applies to:
- The Microsoft Foundation Classes (MFC), when used with:
- Microsoft Visual C++ for Windows, 16-bit edition 1.0
- Microsoft Visual C++ for Windows, 16-bit edition 1.5
- Microsoft Visual C++ for Windows, 16-bit edition 1.51
- Microsoft Visual C++ for Windows, 16-bit edition 1.52
- Microsoft Visual C++, 32-bit Editions 1.0
- Microsoft Visual C++, 32-bit Editions 2.0
- Microsoft Visual C++, 32-bit Editions 2.1
- Microsoft Visual C++, 32-bit Editions 4.0
This article was previously published under Q108896
This article demonstrates one way to disable or enable a dialog box control
during the execution of a program with the Microsoft Foundation Classes
(MFC). The dialog box uses a dialog box template created by App Studio.
To disable or enable a control in a dialog box, the following steps can be
performed: - Create a data member in the dialog box class that maps to a specific
control (you can use Class Wizard to do this). For example:
...
public:
CButton m_button;
...
- Override CWnd::DoDataExchange(CDataExchange *pDX) in the dialog box
class and call the appropriate DDX routine to hook the Windows control
to the dialog class data member. For example:
...
protected:
virtual void DoDataExchange(CDataExchange* pDX);
...
void CMyDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_BUTTON1, m_button);
}
NOTE: If you use Class Wizard to add a member variable in your dialog
box class, it does this for you. - Call CWnd::EnableWindow() to disable or enable the control when needed.
For example, you can disable a button when the dialog box is
initialized. For example:
CMyDlg::OnInitDialog()
{
...
m_button.EnableWindow(FALSE);
...
}
An alternative method is to use the CWnd::GetDlgItem() function to get a
CWnd * to the control and then call EnableWindow(). For example:
CMyDlg::OnInitDialog()
{
...
GetDlgItem(IDC_BUTTON)->EnableWindow(FALSE);
...
}
SUMMARY
Modification Type: | Major | Last Reviewed: | 12/1/2003 |
---|
Keywords: | kbCtrl kbDlg kbhowto KbUIDesign KB108896 |
---|
|