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 被实例化的地方的主要内容,如果未能解决你的问题,请参考以下文章

为啥实例化的模块经常被赋予网络名称“u”?

effective java学习笔记之不可实例化的类

模板是如何实例化的?

第4条:通过私有构造器强化不可实例化的能力

spring 注入 和 实例化的差别(别说没区别)

Java学习 -- 简单分析ArrayList实例化的过程