怎样创建并显示一个非模态对话框,而且把对话框任何时候都显示在最前边?

Rosicky1981hy 2004-04-02 01:02:49
怎样创建并显示一个非模态对话框,而且把对话框任何时候都显示在最前边?
...全文
119 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
YunLion 2004-04-05
  • 打赏
  • 举报
回复
1。不是的,可以再显示多个对话框。
2。这是两个完全不同的函数。后面一个问题,应该不会发生的。请复查一遍。
3。如果不加if,的话,一个对话框就会被多次Create,而这个函数里面有些操作是只允许执行一次的,所以会出错。如果你要显示多个对话框的话,最好是使用多个对话框变量。
ultralzl 2004-04-04
  • 打赏
  • 举报
回复
mark
PDD123 2004-04-04
  • 打赏
  • 举报
回复
谢谢啊,我终于有点了解了。
还有几个问题:
1.是不是一个对话框对象只能显示一个对话框啊?
2.Creat和ShowWindow有什么区别啊?怎么我调用ShowWindow时会出错,而调用Creat就可以显示窗口了。

还有YunLion,不加if语句再点一下的时候会出错的。
shilei8752 2004-04-04
  • 打赏
  • 举报
回复
你这个功能我会哦
我刚学的

是不是在一个对话框中点击一个按钮 然后出现另一个对话框??如果是 请看下面

主对话框A 中有按钮 BUTTONA 然后新加一对话框B

为B对话框建一个类CB
在A的头文件中加入 “B.h”
在 PUBLIC 中声明
CB* B;
然后在 A对话框的CPP文件中的 初始化部分 加入

B= new CB;
B->Creat(IDD_B,NULL);
后面就是按钮了

在按钮BUTTONA 中
B->ShowWindow(SW_SHOW);////左键调用对话框


我的总结是分四步 设 A 为父对话框 B为子对话框

第一步 为子对话框建类

第二步 在父对话框中添加子类的头文件

第三步 在父对话框CPP初始化位置 创建并初始化子对话框

第四步 调用子对话框
YunLion 2004-04-04
  • 打赏
  • 举报
回复
哦,忘记说了,我原来用的是static CMyDlg dlg;

否则,窗口刚刚出来,就被析构掉了。sorry。
PDD123 2004-04-04
  • 打赏
  • 举报
回复
第一步我选的是Dialog based,其他步骤我选的都是默认的选项。
然后我我在主窗口上增加了一个按钮,在资源里做了一个对话框,用ClassWizard建了一个新的对话框类c123,然后在与按钮消息对应的函数中加上了那段代码:

void CMy456Dlg::OnButton1()
{
// TODO: Add your control notification handler code here
c123 dlg;

if(!::IsWindow(dlg.GetSafeHwnd()))
{
dlg.Create(IDD_DIALOG1);
}

//dlg.ShowWindow(SW_SHOW);//这个正常显示窗口
dlg.SetWindowPos(&dlg.wndTopMost, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE|SWP_SHOWWINDOW);//这个窗口显示在最前面

}

运行结果是:按了一下按钮,对话框弹出来了一下,马上就消失了。
YunLion 2004-04-03
  • 打赏
  • 举报
回复
描述一下,你创建的工程。

我测试用的是:多文档程序。子窗口是直接插入的一个,属性默认。一切正常。
PDD123 2004-04-03
  • 打赏
  • 举报
回复
我也出现这种情况了,点快点还可以看出一个对话框的模样。
酒红绿叶 2004-04-02
  • 打赏
  • 举报
回复
任何时候

???????

那就把

dlg.SetWindowPos(&dlg.wndTopMost, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE|SWP_SHOWWINDOW);//这个窗口显示在最前面

放在OnDraw里面,
Rosicky1981hy 2004-04-02
  • 打赏
  • 举报
回复
为什么 对话框才出来就消失了?看都没看清楚呀
Rosicky1981hy 2004-04-02
  • 打赏
  • 举报
回复
谢谢你们啊,我试试看先~~
快乐鹦鹉 2004-04-02
  • 打赏
  • 举报
回复
同意。可以不用加if语句。直接Create。
YunLion 2004-04-02
  • 打赏
  • 举报
回复
CMyDlg dlg;

if(!::IsWindow(dlg.GetSafeHwnd()))
{
dlg.Create(IDD_TEMPDLG);
}

//dlg.ShowWindow(SW_SHOW);//这个正常显示窗口
dlg.SetWindowPos(&dlg.wndTopMost, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE|SWP_SHOWWINDOW);//这个窗口显示在最前面

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧