对话框应用程序结构
15:42 2012-10-26
CWinApp
class CWinApp : public CWinThread
===========================================================================================
BOOL CDlg102601App::InitInstance()
{
AfxEnableControlContainer();
// Standard initialization
// If you are not using these features and wish to reduce the size
// of your final executable, you should remove from the following
// the specific initialization routines you do not need.
#ifdef _AFXDLL
Enable3dControls(); // Call this when using MFC in a shared DLL
#else
Enable3dControlsStatic(); // Call this when linking to MFC statically
#endif
CDlg102601Dlg dlg;
m_pMainWnd = &dlg;
int nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// TODO: Place code here to handle when the dialog is
// dismissed with OK
}
else if (nResponse == IDCANCEL)
{
// TODO: Place code here to handle when the dialog is
// dismissed with Cancel
}
// Since the dialog has been closed, return FALSE so that we exit the
// application, rather than start the application's message pump.
return FALSE;
}
解析:
1、AfxEnableControlContainer();
该函数为应用程序提供了对 ActiveX控件的支持
2
#ifdef _AFXDLL
Enable3dControls();
#else
Enable3dControlsStatic();
#endif
InitInstance成员函数调用类 CWinApp的成员函数 Enable3dControls或者Enable3dControlsStatic
以允许对话框和窗口可以使用具有三维外观的控件。
3、CDlg102601Dlg dlg;
定义对象 dlg;
4、m_pMainWnd = &dlg;
将其指针赋值给 CWnd类的成员变量m_pMainWnd
成员变量m_pMainWnd用于保存指向线程主窗口对象的指针,当由m_pMainWnd 引用的窗口被关闭时,该线程
由MFC自动终止.当应用程序的主线程被终止,该应用程序相应的也被终止。
5、 int nResponse = dlg.DoModal();
调用 DoModal()函数 创建显示对话框
OK 、CANCEL 可以设置退出对话框的后续操作,也可以重载OnOk() OnCancel()函数实现同样的功能。
===========================================================================================