我目前正在学习MFC库,我注意到,在默认生成的应用程序由Visual Studio没有分配给m_pMainWnd指针。所以我的问题是那个指针指向什么?我也从一个教程,我发现最近做了一个例子,有在InitInstance函数创建一个对话框类的对象和它的地址被分配到m_pMainWnd指针:默认情况下m_pMainWnd指针指向的是什么?
virtual BOOL InitInstance()
{
CWinApp::InitInstance();
GAME_FORM dlg; //dialog object
m_pMainWnd = &dlg; //dialog object set as main window
INT_PTR nResponse = dlg.DoModal();
}
当由应用程序向导创建MFC应用程序只有两个在使用m_pMainWnd的整个解决方案中的行,这不是一个问题。那么这个指针指向什么?
BOOL CMFCTestyApp::InitInstance()
{
(...)
// The one and only window has been initialized, so show and update it
m_pMainWnd->ShowWindow(SW_SHOW);
m_pMainWnd->UpdateWindow();
(...)
}
您的应用程序类继承许多基类层。他们还拥有大量的代码,以建立运行应用程序代码的环境。 –
除非您非常熟悉Windows API(和C++),否则您将无法理解MFC。如果您真的想开始使用Windows编程,请从[Learn to Program for Windows in C++](https://msdn.microsoft.com/en-us/library/windows/desktop/ff381399.aspx)开始。 – IInspectable
'm_pMainWnd'默认为'NULL'。你必须告诉MFC,在这种情况下'dlg'被用作你的主窗口。一些MFC类需要知道主窗口的位置。 –