不用属性页方法实现 上一步 下一步 对话框功能

1. 新建VS2010 MFC dlg工程 Test, 会自动生成 Test.cpp   TestDlg.cpp

2. 在资源管理器里新建对话框 Dlg2, 为其添加类Dlg2

3. 在StdAfx.h添加

const int ID_END_DLG_PRE  = 100; //打开起始对话框
const int ID_END_DLG_NEXT = 101; //信号源对话框

3. 在TestDlg对话框按钮添加 下一步按钮, 添加代码

EndModalLoop(ID_END_DLG_NEXT);
 

4. 在Dlg2添加 "上一步"按钮, 添加代码

EndModalLoop(ID_END_DLG_PRE);

5. 在Test.cpp的 BOOL CTestApp::InitInstance() 添加

SetRegistryKey(_T("Local AppWizard-Generated Applications"));


//下面是添加的
	CTestDlg  dlg1;
	CDlg2 dlg2;
	CDialogEx *dlg = &dlg1;
	tagMSG msg;
		
	m_pMainWnd = &dlg1;
	bool end_loop = false;
		
	while ( !end_loop )
	{
		 
		INT_PTR nResponse = dlg->DoModal();

		//dlg 关闭后,  会发诸如 WM_QUIT的消息
		//用PeekMsg可以拦截此消息, 防止程序退出
		PeekMessage(&msg, NULL, 0, 0, PM_REMOVE);
		switch ( nResponse )
		{
		case IDOK:
		case IDCANCEL:
			end_loop = true;
			break;
		case ID_END_DLG_PRE:
			m_pMainWnd = &dlg1;
			dlg = &dlg1;
			break;
		case ID_END_DLG_NEXT:
			m_pMainWnd = &dlg2;
			dlg = &dlg2;
			break;
		default:
			end_loop = true;
			break;
		}
	}


//上面是添加的
	// Delete the shell manager created above.
	if (pShellManager != NULL)
	{
		delete pShellManager;
	}


原理大概就是 开 下一个对话框要先关闭当前对话框,

关闭对话框时若直接调用 EndDialog, 只能调用1次, 下一次 domodal就返回-1了



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值