Я пытаюсь создать простое окно, используя MFC, однако программа немедленно завершает работу, и строка вывода из Debug кажется странной:
d:\agent\_work\3\s\src\vctools\VC7Libs\Ship\ATLMFC\Src\MFC\appcore.cpp(783) : AppMsg - Warning: m_pMainWnd is NULL in CWinApp::Run - quitting application.
После дальнейшей проверки я понимаю, что CMyFrame :: InitInstance не вызывается. У меня был некоторый опыт, связанный с MFC, потому что я использовал Win32 ++ (он же Win32xx) в Code :: Blocks. Сейчас я пробую VS Community 2019, используя официальную платформу MFC, но не могу создать пустое окно. Вот полный код:
//main.cpp
//Code taken from:
//www.tutorialspoint.com/mfc/mfc_windows_fundamentals.htm
#include <afxwin.h>
#include <iostream>
class CMyFrame : public CFrameWnd {
public:
CMyFrame() {
Create(NULL, _T("MFC Application Tutorial"));
}
};
class CExample : public CWinApp {
public:
CExample() { std::cout << "CExample Constructor\n"; }
~CExample() { std::cout << "CExample Destructor\n"; }
virtual BOOL InitInstance() {
std::cout << "CExample InitInstance\n";
CMyFrame* Frame = new CMyFrame();
m_pMainWnd = Frame; //<--
Frame->ShowWindow(SW_NORMAL);
Frame->UpdateWindow();
return TRUE;
}
};
CExample theApp;
int main() { return theApp.Run(); }
Выход на консоль:
CExample Constructor
CExample Destructor
D:\Visual Studio Projects\Visual C++\MFC_Project\Debug\MFC_Project.exe (process 13012) exited with code 0.
Попытка вручную вызвать InitInstance в main вызывает ошибку времени выполнения. Насколько я знаю, InitInstance должен вызываться MFC автоматически.
Любая помощь приветствуется, спасибо:)