BOOL COleIPFrameWnd::LoadFrame(UINT nIDResource, DWORD dwDefaultStyle, CWnd* pParentWnd, CCreateContext* pContext) { if (pParentWnd != NULL) ASSERT_VALID(pParentWnd); // only do this once ASSERT_VALID_IDR(nIDResource); ASSERT(m_nIDHelp == 0 || m_nIDHelp == nIDResource); m_nIDHelp = nIDResource; // ID for help context (+HID_BASE_RESOURCE) // create the window (use child window style create) CRect rect(0, 0, 0, 0); if (!CWnd::Create(NULL, NULL, dwDefaultStyle, rect, pParentWnd, nIDResource, pContext)) { return FALSE; // will self destruct on failure normally } // load accelerator resource LoadAccelTable(MAKEINTRESOURCE(nIDResource)); return TRUE; }
BOOL CGuiFrameWnd::LoadFrame(UINT nIDResource, DWORD dwDefaultStyle, CWnd* pParentWnd, CCreateContext* pContext) { // only do this once ASSERT_VALID_IDR(nIDResource); ASSERT(m_nIDHelp == 0 || m_nIDHelp == nIDResource); m_nIDHelp = nIDResource; // ID for help context (+HID_BASE_RESOURCE) CString strFullString; if (strFullString.LoadString(nIDResource)) AfxExtractSubString(m_strTitle, strFullString, 0); // first sub-string VERIFY(AfxDeferRegisterClass(AFX_WNDFRAMEORVIEW_REG)); // attempt to create the window LPCTSTR lpszClass = GetIconWndClass(dwDefaultStyle, nIDResource); LPCTSTR lpszTitle = m_strTitle; if (!Create(lpszClass, lpszTitle, dwDefaultStyle, rectDefault,pParentWnd, NULL, 0L, pContext)) { return FALSE; // will self destruct on failure normally } // save the default menu handle ASSERT(m_hWnd != NULL); m_hMenuDefault = ::GetMenu(m_hWnd); // load accelerator resource LoadAccelTable(MAKEINTRESOURCE(nIDResource)); if (pContext == NULL) // send initial update SendMessageToDescendants(WM_INITIALUPDATE, 0, 0, TRUE, TRUE); return TRUE; }
CFormView::CFormView(UINT nIDTemplate) { ASSERT_VALID_IDR(nIDTemplate); m_lpszTemplateName = MAKEINTRESOURCE(nIDTemplate); m_pCreateContext = NULL; m_hWndFocus = NULL; // focus window is unknown }
void CDocTemplate::SetServerInfo(UINT nIDOleEmbedding, UINT nIDOleInPlaceServer, CRuntimeClass* pOleFrameClass, CRuntimeClass* pOleViewClass) { ASSERT_VALID_IDR(nIDOleEmbedding); if (nIDOleInPlaceServer != 0) ASSERT_VALID_IDR(nIDOleInPlaceServer); ASSERT(pOleFrameClass == NULL || pOleFrameClass->IsDerivedFrom(RUNTIME_CLASS(CFrameWnd))); ASSERT(pOleViewClass == NULL || pOleViewClass->IsDerivedFrom(RUNTIME_CLASS(CView))); m_pOleFrameClass = pOleFrameClass; m_pOleViewClass = pOleViewClass; m_nIDEmbeddingResource = nIDOleEmbedding; m_nIDServerResource = nIDOleInPlaceServer; if (!CDocManager::bStaticInit) LoadTemplate(); }
CFormView::CFormView(UINT nIDTemplate) { ASSERT_VALID_IDR(nIDTemplate); m_lpszTemplateName = MAKEINTRESOURCE(nIDTemplate); m_pCreateContext = NULL; m_hWndFocus = NULL; // focus window is unknown #ifndef _AFX_NO_OCC_SUPPORT m_pOccDialogInfo = NULL; #endif EnableActiveAccessibility(); }
BOOL CMDIChildWnd::LoadFrame(UINT nIDResource, DWORD dwDefaultStyle, CWnd* pParentWnd, CCreateContext* pContext) { // only do this once ASSERT_VALID_IDR(nIDResource); ASSERT(m_nIDHelp == 0 || m_nIDHelp == nIDResource); ASSERT(m_hMenuShared == NULL); // only do once m_nIDHelp = nIDResource; // ID for help context (+HID_BASE_RESOURCE) // parent must be MDI Frame (or NULL for default) ASSERT(pParentWnd == NULL || pParentWnd->IsKindOf(RUNTIME_CLASS(CMDIFrameWnd))); // will be a child of MDIClient ASSERT(!(dwDefaultStyle & WS_POPUP)); dwDefaultStyle |= WS_CHILD; // if available - get MDI child menus from doc template ASSERT(m_hMenuShared == NULL); // only do once CMultiDocTemplate* pTemplate; if (pContext != NULL && (pTemplate = (CMultiDocTemplate*)pContext->m_pNewDocTemplate) != NULL) { ASSERT_KINDOF(CMultiDocTemplate, pTemplate); // get shared menu from doc template m_hMenuShared = pTemplate->m_hMenuShared; m_hAccelTable = pTemplate->m_hAccelTable; } else { TRACE0("Warning: no shared menu/acceltable for MDI Child window.\n"); // if this happens, programmer must load these manually } CString strFullString, strTitle; if (strFullString.LoadString(nIDResource)) AfxExtractSubString(strTitle, strFullString, 0); // first sub-string ASSERT(m_hWnd == NULL); if (!Create(GetIconWndClass(dwDefaultStyle, nIDResource), strTitle, dwDefaultStyle, rectDefault, (CMDIFrameWnd*)pParentWnd, pContext)) { return FALSE; // will self destruct on failure normally } // it worked ! return TRUE; }
CDocTemplate::CDocTemplate(UINT nIDResource, CRuntimeClass* pDocClass, CRuntimeClass* pFrameClass, CRuntimeClass* pViewClass) { ASSERT_VALID_IDR(nIDResource); ASSERT(pDocClass == NULL || pDocClass->IsDerivedFrom(RUNTIME_CLASS(CDocument))); ASSERT(pFrameClass == NULL || pFrameClass->IsDerivedFrom(RUNTIME_CLASS(CFrameWnd))); ASSERT(pViewClass == NULL || pViewClass->IsDerivedFrom(RUNTIME_CLASS(CView))); m_nIDResource = nIDResource; m_nIDServerResource = NULL; m_nIDEmbeddingResource = NULL; m_nIDContainerResource = NULL; m_pDocClass = pDocClass; m_pFrameClass = pFrameClass; m_pViewClass = pViewClass; m_pOleFrameClass = NULL; m_pOleViewClass = NULL; m_pAttachedFactory = NULL; m_hMenuInPlace = NULL; m_hAccelInPlace = NULL; m_hMenuEmbedding = NULL; m_hAccelEmbedding = NULL; m_hMenuInPlaceServer = NULL; m_hAccelInPlaceServer = NULL; // add to pStaticList if constructed as static instead of on heap if (CDocManager::bStaticInit) { m_bAutoDelete = FALSE; if (CDocManager::pStaticList == NULL) CDocManager::pStaticList = new CPtrList; if (CDocManager::pStaticDocManager == NULL) CDocManager::pStaticDocManager = new CDocManager; CDocManager::pStaticList->AddTail(this); } else { m_bAutoDelete = TRUE; // usually allocated on the heap LoadTemplate(); } }
BOOL CView::DoPrintPreview(UINT nIDResource, CView* pPrintView, CRuntimeClass* pPreviewViewClass, CPrintPreviewState* pState) { ASSERT_VALID_IDR(nIDResource); ASSERT_VALID(pPrintView); ASSERT(pPreviewViewClass != NULL); ASSERT(pPreviewViewClass->IsDerivedFrom(RUNTIME_CLASS(CPreviewView))); ASSERT(pState != NULL); CFrameWnd* pParent = (CFrameWnd*)AfxGetThread()->m_pMainWnd; ASSERT_VALID(pParent); ASSERT_KINDOF(CFrameWnd, pParent); CCreateContext context; context.m_pCurrentFrame = pParent; context.m_pCurrentDoc = GetDocument(); context.m_pLastView = this; // Create the preview view object CPreviewView* pView = (CPreviewView*)pPreviewViewClass->CreateObject(); if (pView == NULL) { TRACE0("Error: Failed to create preview view.\n"); return FALSE; } ASSERT_KINDOF(CPreviewView, pView); pView->m_pPreviewState = pState; // save pointer pParent->OnSetPreviewMode(TRUE, pState); // Take over Frame Window #ifdef _MAC if (nIDResource == AFX_IDD_PREVIEW_TOOLBAR) { HINSTANCE hInst = AfxFindResourceHandle( MAKEINTRESOURCE(AFX_IDD_PREVIEW_TOOLBAR), RT_DIALOG); HRSRC hResource = FindResource(hInst, MAKEINTRESOURCE(AFX_IDD_PREVIEW_TOOLBAR), RT_DIALOG); HGLOBAL hdt = NULL; if (hResource != NULL) hdt = LoadResource(hInst, hResource); DLGTEMPLATE* pdt = NULL; if (hdt != NULL) pdt = (DLGTEMPLATE*)LockResource(hdt); if (pdt != NULL) { CRect rectParent; pParent->GetClientRect(&rectParent); int cxToolbar = MulDiv(LOWORD(GetDialogBaseUnits()), pdt->cx, 4); if (cxToolbar > rectParent.Width()) nIDResource = AFX_IDD_PREVIEW_SHORTTOOLBAR; UnlockResource(hdt); FreeResource(hdt); } } #endif // Create the toolbar from the dialog resource pView->m_pToolBar = new CDialogBar; if (!pView->m_pToolBar->Create(pParent, MAKEINTRESOURCE(nIDResource), CBRS_TOP, AFX_IDW_PREVIEW_BAR)) { TRACE0("Error: Preview could not create toolbar dialog.\n"); pParent->OnSetPreviewMode(FALSE, pState); // restore Frame Window delete pView->m_pToolBar; // not autodestruct yet pView->m_pToolBar = NULL; pView->m_pPreviewState = NULL; // do not delete state structure delete pView; return FALSE; } pView->m_pToolBar->m_bAutoDelete = TRUE; // automatic cleanup // Create the preview view as a child of the App Main Window. This // is a sibling of this view if this is an SDI app. This is NOT a sibling // if this is an MDI app. if (!pView->Create(NULL, NULL, AFX_WS_DEFAULT_VIEW, CRect(0,0,0,0), pParent, AFX_IDW_PANE_FIRST, &context)) { TRACE0("Error: couldn't create preview view for frame.\n"); pParent->OnSetPreviewMode(FALSE, pState); // restore Frame Window pView->m_pPreviewState = NULL; // do not delete state structure delete pView; return FALSE; } // Preview window shown now pState->pViewActiveOld = pParent->GetActiveView(); CView* pActiveView = pParent->GetActiveFrame()->GetActiveView(); if (pActiveView != NULL) pActiveView->OnActivateView(FALSE, pActiveView, pActiveView); if (!pView->SetPrintView(pPrintView)) { pView->OnPreviewClose(); return TRUE; // signal that OnEndPrintPreview was called } pParent->SetActiveView(pView); // set active view - even for MDI // update toolbar and redraw everything pView->m_pToolBar->SendMessage(WM_IDLEUPDATECMDUI, (WPARAM)TRUE); pParent->RecalcLayout(); // position and size everything pParent->UpdateWindow(); return TRUE; }