MFC 中创建Dlg的问题

已知在MFC中从一个Dlg中调用另一个Dlg为NewDlgmyDlg;myDlg.DoModal();但是这样的话,子窗口不关闭,主窗口上的button都是无效的有没有方... 已知在MFC中从一个Dlg中调用另一个Dlg为NewDlg myDlg;myDlg.DoModal();但是这样的话,子窗口不关闭,主窗口上的button都是无效的有没有方法使得子窗口保持在主窗口最上层,但是主窗口的button有效呢然后设置子窗口的位置时刻和主窗口相对一致,这样可以实现主窗口移动时子窗口跟着相对移动,高手帮忙 其实我想实现c#中的Panel功能,设置好多Panel,可见性=false;单击不同的 button 显示不同的panelMFC中的Panel没有类似的功能,我用Dlg代替但是不知道具体怎么做,求高手帮忙,高分送上 展开
 我来答
匿名用户
2013-08-01
展开全部
有办法!! 使用非模态对话框...
假设你要显示的对话框的类名为: CNewDlg;

首先: 在主窗口的头文件中做提前声明 class CNewDlg;
为主窗口类添加成员变量: CNewDlg *m_pDlg;
在主窗口构造函数中复初值: m_pDlg = new CNewDlg(this);

其次: 在需要弹出该窗口的地方加入代码:
if (m_pDlg->GetSafeHwnd()==0)
{
m_pDlg->Create(); //注意:非模态对话框必须调用Create创建产生(原因参见实验指导书P65)
}
else
{
m_pDlg->SetActiveWindow();
}

最后: 就是销毁窗口了.
非模态对话框必须使用函数DestroyWindow()来销毁窗口. 这个工作,最好通过下面的步骤来做:
对CNewDlg类响应 IDOK 消息. 在消息响应函数中, 发送一个自定义消息给m_pDlg 父窗口, 也就是
你的主窗口, 在主窗口中对消息进行响应, 执行代码: m_pDlg->DestroyWindow(); 即可.

还需要在主对话框的析构函数中进行资源的释放:
delete m_pDlg;

希望对你能有帮助..如果不会添加自定义消息,随时可以联系我....
匿名用户
2013-08-01
展开全部
你应该创建一个窗体,而不是对话框,创建完窗体后将窗体的OnTop属性设置就可以了,相关函数为
CreateWindow
ShowWindow
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-08-01
展开全部
在mfc中创建对话框
对话框样式分两种,一种是模式对话框,另一种是非模式对话框.当打开对话框时需要阻塞进程时,使用模式对话框,当打开对话框需可以进行其它操作时,使用非模式对话框.
一般在菜单中选择某菜单项,当选择后直接打开对话框,
例如显示模态对话框CxxxDlg mydlg; mydlg.DoModal();
例如显示非模态对话框CxxxDlg* pmydlgp = new CxxxDlg;
if ( pmydlgp)
{
pmydlgp->Create(IDD_MYDIALOG,this);
}
pmydlgp->ShowWindow(SW_SHOW);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-08-01
展开全部
DoModal是创建模态对话框
Show是创建非模态对话框

myDlg.Show();
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式