hur.cn - 华软网

 热门搜索

请问CMainFrame::loadFrame()是谁调用的

  作者:未知    来源:网络    更新时间:2011/9/29
如题!
---华软 网友回答---
基本是先创建窗口再加载UI,自然是窗口去调用或者其父Frame
---华软网友回复---
C++">CFrameWnd* CDocTemplate::CreateNewFrame(CDocument* pDoc, CFrameWnd* pOther)
{
if (pDoc != NULL)
ASSERT_VALID(pDoc);
// create a frame wired to the specified document

ASSERT(m_nIDResource != 0); // must have a resource ID to load from
CCreateContext context;
context.m_pCurrentFrame = pOther;
context.m_pCurrentDoc = pDoc;
context.m_pNewViewClass = m_pViewClass;
context.m_pNewDocTemplate = this;

if (m_pFrameClass == NULL)
{
TRACE0("Error: you must override CDocTemplate::CreateNewFrame.\n");
ASSERT(FALSE);
return NULL;
}
CFrameWnd* pFrame = (CFrameWnd*)m_pFrameClass->CreateObject();
if (pFrame == NULL)
{
TRACE1("Warning: Dynamic create of frame %hs failed.\n",
m_pFrameClass->m_lpszClassName);
return NULL;
}
ASSERT_KINDOF(CFrameWnd, pFrame);

if (context.m_pNewViewClass == NULL)
TRACE0("Warning: creating frame with no default view.\n");

// create new from resource
if (!pFrame->LoadFrame(m_nIDResource,
WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE,   // default frame styles
NULL, &context))
{
TRACE0("Warning: CDocTemplate couldn't create a frame.\n");
// frame will be deleted in PostNcDestroy cleanup
return NULL;
}

// it worked !
return pFrame;
}

---华软网友回复---
从vs开发环境中建立的多文档程序架构,是这么调用的:
C++">
   CMultiDocTemplate* pDocTemplate;
pDocTemplate = new CMultiDocTemplate(
IDR_MFCVIETYPE,
RUNTIME_CLASS(CMFCVIEWDoc),
RUNTIME_CLASS(CChildFrame), // custom MDI child frame
RUNTIME_CLASS(CMFCVIEWView));
AddDocTemplate(pDocTemplate);

// create main MDI Frame window
CMainFrame* pMainFrame = new CMainFrame;
if (!pMainFrame->LoadFrame(IDR_MAINFRAME)) //在这里调用
return FALSE;
m_pMainWnd = pMainFrame;

也就是说在程序的InitInstance()函数里进行调用,其功能是建立CMDIFrameWnd窗口。


---华软网友回复---
引用 2 楼 visualeleven 的回复:
C/C++ code
CFrameWnd* CDocTemplate::CreateNewFrame(CDocument* pDoc, CFrameWnd* pOther)
{
    if (pDoc != NULL)
        ASSERT_VALID(pDoc);
    // create a frame wired to the specified document

    ……


恩谢谢   我看到了    那请问怎么创造的视类对象啊  这个没看到呢   麻烦了
---华软网友回复---
引用 3 楼 gameslq 的回复:
从vs开发环境中建立的多文档程序架构,是这么调用的:
C/C++ code

   CMultiDocTemplate* pDocTemplate;
    pDocTemplate = new CMultiDocTemplate(
        IDR_MFCVIETYPE,
        RUNTIME_CLASS(CMFCVIEWDoc),
        RUNTIME_CLAS……


 多文档的我看书已经得知了哈   还是表示感谢      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。