Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
Export (0) Print
Expand All
Expand Minimize
Important This document may not represent best practices for current development, links to downloads and other resources may no longer be valid. Current recommended version can be found here.


Call this member function to "dynamically subclass" a control created from a dialog template and attach it to this CWnd object.

BOOL SubclassDlgItem(
   UINT nID,
   CWnd* pParent 



The control's ID.


The control's parent (usually a dialog box).

Nonzero if the function is successful; otherwise 0.

When a control is dynamically subclassed, windows messages will route through the CWnd's message map and call message handlers in the CWnd's class first. Messages that are passed to the base class will be passed to the default message handler in the control.

This member function attaches the Windows control to a CWnd object and replaces the control's WndProc and AfxWndProc functions. The function stores the old WndProc in the location returned by the GetSuperWndProcAddr member function.

class CMyButton : public CButton {...};
// m_myButton is a CMyButton object member of CAboutDlg

BOOL CAboutDlg::OnInitDialog() 
   // IDC_BUTTON1 is the ID for a button on the 
   // dialog template used for CAboutDlg.
   m_myButton.SubclassDlgItem(IDC_BUTTON1, this);   

   return TRUE;   // Return TRUE unless you set the focus to a control
                  // EXCEPTION: OCX Property Pages should return FALSE

Community Additions

© 2015 Microsoft