Creating a View in Dialog (An easy way).

Tuesday Feb 19th 2002 by Z Mohamed Mustafa

Adding a view to a dialog.

Environment developed: VC6 Win 2K]

To create a view you normally follow the Microsoft's Document template model. (i.e) Single document template or multi doc template. You can pass three runtime classes to the constructors:

CSingleDocTemplate( UINT nIDResource,
                    CRuntimeClass* pDocClass, 
                    CRuntimeClass* pFrameClass,
                    CRuntimeClass* pViewClass );


CMultiDocTemplate( UINT nIDResource, 
                   CRuntimeClass* pDocClass,
                   CRuntimeClass* pFrameClass,
                   CRuntimeClass* pViewClass );

When the document template is added, frame (child for MDI , main frame for SDI), document, and a view is created dynamically and added to the application's document template list.

But some times you may need to create a view without using the default document template classes. For instance, if you are to create a view in dialog, you can not use the regular way of document template. In those cases you can use the following method:

BOOL CVwindlgDlg::OnInitDialog()


  CCreateContext pContext;
  * Note:CDialig derived pointer is converted to
  * CWnd pointer (a common base class for CDialog and CFrameWnd).
  * Thus casting it back to CFrameWnd is also easy.
  CWnd* pFrameWnd = this;
  pContext.m_pCurrentDoc = new CMyDocument;
  pContext.m_pNewViewClass = RUNTIME_CLASS(CMyVw);
  CMyVw *pView =
     (CMyVw *) ((CFrameWnd*)pFrameWnd)->CreateView(&pContext);
  * After a view is created, resize that to 
  * have the same size as the dialog.
  CRect rectWindow;
  * Leave a little space for border and title...
  rectWindow.right += 15;   -= 10;
  CString str(AfxGetApp()->m_lpCmdLine);
  * Note: "CMyVw" is a CHTMLView derived class to add some 
  *       spice to the view, I have provided a HTML page 
  *       to which it navigates when the dialog is up.
  char strPath[255];


  return TRUE;  // return TRUE  unless you set the 
                // focus to a control


Download demo project - 6 KB
Download source - 38 KB
Mobile Site | Full Site
Copyright 2017 © QuinStreet Inc. All Rights Reserved