MFC基于对话框程序
2006-07-19 11:28:32 来源:WEB开发网MFC默认的主函数,会先调用theApp对象的InitApplication和InitInstance成员函数,来进行程序的初始化,在程序中一般只重写InitInstance函数。然后,建立一个消息循环,不同的是在循环不停地调用theApp的Run成员函数。当收到WM_QUIT后,退出while循环。最后,执行theApp的ExitInstance成员函数,从而结束整个应用程序。
让我们在类视图(Class View)中展开CDialogApp类(点击那个+符号),我们可以看到CDialogApp重写了InitInstance()函数。它用于对应用程序主线程进行初始化。双击视图中的InitInstance()来查看此函数的定义。我这里的函数定义如下:
000:BOOL CDialogApp::InitInstance()
001:{
002: // 如果一个运行在 Windows XP 上的应用程序代码指定要
003: // 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式,
004: //则需要 InitCommonControls()。否则,将无法创建窗口。
005: InitCommonControls();
006:
007: CWinApp::InitInstance(); //调用父类的InitInstance来进行默认的初始化
008:
009: AfxEnableControlContainer();
010:
011:
012: CDialogDlg dlg; //建立一个对话框对象,CDialogDlg是我们自定义的对话框类
013: m_pMainWnd = &dlg; //将本线程(即程序主线程)的主窗口设置为这个对话框
014: INT_PTR nResponse = dlg.DoModal(); //有模式地显示这个对话框,直到对话框关闭
015: if (nResponse == IDOK) //如果对话框是用确定来关闭的,则
016: {
017: // TODO:在此放置处理用“确定”来关闭
018: //对话框的代码
019: }
020: else if (nResponse == IDCANCEL) //如果对话框是用取消来关闭的,则
021: {
022: // TODO:在此放置处理用“取消”来关闭
023: //对话框的代码
024: }
025:
026: // 由于对话框已关闭,所以将返回 FALSE 以便退出应用程序,
027: // 而不是启动应用程序的消息泵。
028: return FALSE;
029:}
因为InitInstance()函数的结束返回值是false,应用程序将会立即退出。也就是只显示对话框,当对话框关闭后,程序就会结束了。这时候的InitInstance函数就有点主函数的味道了。
更多精彩
赞助商链接