MFC
程序是一个
Windows
程序,它的内部也有窗口注册操作,窗口产生操作,消息循环操作和窗口函数。
MFC
中
CwinApp
类的两个虚函数
InitApplication
和
InitInstance
,前者负责“每一个程序只做一次”的操作,后者负责“每一个例程都得做一次”的操作。通常,系统会(并且有能力)为我们注册一些标准的窗口类(当然也准备了一些标准的窗口函数)。程序设计者在自己的
CmyWinApp
中改写
InitInstance,
并在其中把窗口产生出来
—
这样才有机会在标准的窗口类中指定自己的窗口标题和菜单。下面即使我们新的
main
函数:
//MY.CPP
CmyWinApp the App;
Void main()
{
CwinApp *pApp = AfxGetApp(); // pApp
指向
theApp
全局对象
pApp->InitApplication(); //
调用
CwinApp::InitApplication
pApp->InitInstance(); //
调用
CmyWinApp::InitInstance(
因为
CmyWinApp
改写了它
)
pApp->Run(); //
调用
CwinApp::Run
}
请注意
CMyWinAPP::InitInstance()
的操作,以及它所引发的行为:
BOOL CMyWinAPP::InitInstance()
{
cout<<
”
CmyWinApp::InitInstance/n
”
;
m_pMainWnd = new CmyFrameWnd;//
引发
CmyFrameWnd:: CmyFrameWnd
构造函数
return TRUE;
}
CmyFrameWnd:: CmyFrameWnd
()
{
Create();//Create()
是虚函数,但
CmyFrameWnd
未改写它,
//
所以引发父类的
CmyFrameWnd::Create
}
BOOL CmyFrameWnd::Create()
{