Creates the specified child window and attaches it to the CWnd object.


virtual BOOL Create(
   LPCTSTR lpszClassName,
   LPCTSTR lpszWindowName,
   DWORD dwStyle,
   Const RECT& rect,
   CWnd* pParentWnd,
   UINT nID,
   CCreateContext* pContext = NULL


  • [in] lpszClassName
    Pointer to a null-terminated string that contains the name of a registered system window class; or the name of a predefined system window class.

  • [in] lpszWindowName
    Pointer to a null-terminated string that contains the window display name; otherwise NULL for no window display name.

  • [in] dwStyle
    Bitwise combination (OR) of window styles. The WS_POPUP option is not a valid style.

  • [in] rect
    The size and location of the window relative to the top-left corner of the parent window.

  • [in] pParentWnd
    Pointer to the parent window.

  • [in] nID
    ID of the window.

  • [in] pContext
    Pointer to a CCreateContext structure that is used to customize the document-view architecture for the application.

Return Value

TRUE if the method was successful; otherwise FALSE.



CWnd::PreCreateWindow now assigns the hMenu member of its CREATESTRUCT parameter to the this pointer if the menu is NULL and the style contains WS_CHILD. For proper functionality, ensure that your dialog control has an ID that is not NULL.

This change fixes a crash in managed/native interop scenarios. A TRACE statement in CWnd::Create alerts the developer of the problem.

Use the AfxRegisterWndClass function to register window classes. User defined window classes are available in the module where they are registered.

The CWnd::OnCreate method is called before the Create method returns, and before the window becomes visible.


// Dynamically create static control using CWnd::Create,
// instead of with CStatic::Create, which doesn't
// need the "STATIC" class name.
void CMyDlg::OnCreateStatic() 
   // m_pWndStatic is a CWnd* member of CMyDlg
   m_pWndStatic = new CWnd;
   m_pWndStatic->Create(_T("STATIC"), _T("Hi"), WS_CHILD | WS_VISIBLE,
       CRect(0, 0, 20, 20), this, 1234);


Header: afxwin.h

See Also

CWnd Class
Hierarchy Chart