在主程序之前显示一对话框(登录框)

1. 在基于对话框的程序中,在主程序之前显示一对话框,,如建立的项目名为Begin...新建立的需要提前显示的对话框资源类为Start。。

则在主程序之前显示、Start对话框的方法为:CBeginApp类中,在其InitInstance()函数中,VS2010自动添加的代码如下

CBeginDlg dlg;
		m_pMainWnd = &dlg;
		INT_PTR nResponse = dlg.DoModal();
		if (nResponse == IDOK)
		{
			// TODO: 在此放置处理何时用
			//  “确定”来关闭对话框的代码
		}
		else if (nResponse == IDCANCEL)
		{
			// TODO: 在此放置处理何时用
			//  “取消”来关闭对话框的代码

则在这段代码之前添加Start 类的对象m_NewDlg。代码如下即可正确的显示该功能。

	Start m_NewDlg;
	if(m_NewDlg.DoModal() == IDOK)
	{
		CBeginDlg dlg;
		m_pMainWnd = &dlg;
		INT_PTR nResponse = dlg.DoModal();
		if (nResponse == IDOK)
		{
			// TODO: 在此放置处理何时用
			//  “确定”来关闭对话框的代码
		}
		else if (nResponse == IDCANCEL)
		{
			// TODO: 在此放置处理何时用
			//  “取消”来关闭对话框的代码
		}
	}
2. 在基于文档的项目中,,如所建项目为“对话框”,且新建立的需要提前显示的对话框资源类为Start。。则要实现 该功能,则在C对话框App类的InitInstance()函数中,VS2010自动添加的代码如下
		CSingleDocTemplate* pDocTemplate;
		pDocTemplate = new CSingleDocTemplate(
			IDR_MAINFRAME,
			RUNTIME_CLASS(C对话框Doc),
			RUNTIME_CLASS(CMainFrame),       // 主 SDI 框架窗口
			RUNTIME_CLASS(C对话框View));
		if (!pDocTemplate)
			return FALSE;
		AddDocTemplate(pDocTemplate);

则进行了操作之后,,该原代码变为

	Start  m_NewDlg;
	if( m_NewDlg.DoModal() == IDOK)
	{
		CSingleDocTemplate* pDocTemplate;
		pDocTemplate = new CSingleDocTemplate(
			IDR_MAINFRAME,
			RUNTIME_CLASS(C对话框Doc),
			RUNTIME_CLASS(CMainFrame),       // 主 SDI 框架窗口
			RUNTIME_CLASS(C对话框View));
		if (!pDocTemplate)
			return FALSE;
		AddDocTemplate(pDocTemplate);
	}

当然,,需要在App类中添加Start.h头文件了。。


确实实现了该功能。。如果有什么错误或改进的地方,,因此各位高手留言交流。。

你可能感兴趣的:(MFC)