m_pMainWnd 被实例化的地方
Posted
技术标签:
【中文标题】m_pMainWnd 被实例化的地方【英文标题】:Where m_pMainWnd is instantiated 【发布时间】:2015-03-26 07:41:49 【问题描述】:我刚开始使用 microsoft 基础类,在我的 hello world 应用程序中使用新项目向导,我在 InitInstance() 方法中看到对 m_pMainWnd->ShowWindow(SW_SHOW) 和 m_pMainWnd->UpdateWindow() 的引用.我了解 m_pMainWnd 是指向主应用程序窗口的指针。我的问题是我只在 afxwin.h 中看到它的声明,但在任何地方都看不到它的实例化。有什么我遗漏的,如果我错了,请纠正我。我是新手程序员。
【问题讨论】:
【参考方案1】:主框架窗口在您的应用程序(CWinApp 派生)类的 InitInstance() 方法中实例化,就像这样:
CSingleDocTemplate* pDocTemplate;
pDocTemplate = new CSingleDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CNetworkManagerDoc),
RUNTIME_CLASS(CMainFrame), // main SDI frame window
RUNTIME_CLASS(CNetworkManagerView));
if (!pDocTemplate)
return FALSE;
AddDocTemplate(pDocTemplate);
【讨论】:
所以包含的宏调用 RUNTIME_CLASS(CNetworkManagerView) 将使用对 CNetworkManagerView 类的引用来实例化 m_pMainWnd? RUNTIME_CLASS 宏用于调用 CRuntimeClass::CreateObject() 来实例化对象。棘手。以这种方式创建文档、框架和视图后,它们将由框架初始化。 明白,感谢您的帮助。就因为这个,我从昨天起就无法继续学习了。 不客气。您能否将此问题标记为答案。谢谢以上是关于m_pMainWnd 被实例化的地方的主要内容,如果未能解决你的问题,请参考以下文章