HOWTO: How To Disable Push Buttons on a DialogBar in MFC (152376)



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 2.2
    • Microsoft Visual C++, 32-bit Editions 4.0
    • Microsoft Visual C++, 32-bit Editions 4.1

This article was previously published under Q152376

SUMMARY

Push-button controls on a DialogBar cannot be disabled by calling EnableWindow. The following code has no effect:
   GetDlgItem(IDC_BUTTON1)->EnableWindow(FALSE);
				
This article describes how to implement push-button controls that can be disabled.

MORE INFORMATION

Controls on a DialogBar behave like the bitmaps on a Toolbar. They can be enabled or disabled by manually adding an ON_UPDATE_COMMAND_UI within the message map of the appropriate class (such as CMainFrame).

Step-by-Step Example

After you have placed a control on your DialogBar, such as a push-button with a resource ID of IDC_BUTTON1, use the following steps to manage the state of the control:

  1. Within the declaration of your class, add the declaration for a handler function:
       afx_msg void OnUpdateButton1(CCmdUI* pCmdUI);
    						
  2. Within the implementation of your class, add a manual entry in the message map:
       BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd)
           //{{AFX_MSG_MAP(CMainFrame)
           ...
           //}}AFX_MSG_MAP
           ON_UPDATE_COMMAND_UI(IDC_BUTTON1, OnUpdateButton1)
       END_MESSAGE_MAP()
    						
  3. Provide the definition of the handler function, as follows:
       void CMainFrame::OnUpdateButton1(CCmdUI* pCmdUI)
       {
           pCmdUI->Enable( TRUE );
       }

Modification Type:MajorLast Reviewed:12/8/2003
Keywords:kbDocView kbhowto kbMFCCtrlBar KbUIDesign KB152376 kbAudDeveloper