有办法!! 使用非模态对话框...
假设你要显示的对话框的类名为: 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;
希望对你能有帮助..如果不会添加自定义消息,随时可以联系我....
你应该创建一个窗体,而不是对话框,创建完窗体后将窗体的OnTop属性设置就可以了,相关函数为
CreateWindow
ShowWindow
在mfc中创建对话框
对话框样式分两种,一种是模式对话框,另一种是非模式对话框.当打开对话框时需要阻塞进程时,使用模式对话框,当打开对话框需可以进行其它操作时,使用非模式对话框.
一般在菜单中选择某菜单项,当选择后直接打开对话框,
例如显示模态对话框CxxxDlg mydlg; mydlg.DoModal();
例如显示非模态对话框CxxxDlg* pmydlgp = new CxxxDlg;
if ( pmydlgp)
{
pmydlgp->Create(IDD_MYDIALOG,this);
}
pmydlgp->ShowWindow(SW_SHOW);
DoModal是创建模态对话框
Show是创建非模态对话框
myDlg.Show();