如何使父对话框不要位于子对话框的下面

Shankr 2005-01-24 10:21:18
对话框应用程序,在对话框中点击按钮弹出一个overlapped 非模式对话框, 可是子窗口总是在父窗口的上面, 我想让他们能够相互切换,点谁谁就在上面

就像记事本中的查找对话框一样,可是我想当点击记事本的时候,查找对话框是显示在后面的,而不是总在主对话框的前面,求大虾指点~~~
...全文
157 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
dandycheung 2005-01-27
  • 打赏
  • 举报
回复
不好意思,犯了想当然的错误,MFC 一定还隐藏了一些实现细节。以下解决方案已经经过测试:
把 Create 调用写成这个形式:pdlg1->Create(IDD_DIALOG1, CWnd::GetDesktopWindow());
Shankr 2005-01-27
  • 打赏
  • 举报
回复
我是要设置应用程序的子窗口和父窗口的位置在Z轴上随意切换,不是和其它应用程序
用::SetWindowPos(wndTopMost ……)这个也设置不行啊
Shankr 2005-01-27
  • 打赏
  • 举报
回复
呵呵,谢谢 dandycheung(珠穆朗玛) 的回答。
这个方法可以做的,只是任务栏上出来两个应用程序栏了,还要加上WS_EX_TOOLWINDOW的属性。
我还通过创建两级子对话框来做到了,只不过都不是一些常规手段,觉得不爽。

因为我看到用C++ Builder 直接在窗体属性里就可以设置了,感觉应该不用复杂的做,可是用MFC却怎么也找不到那么个属性之类的东西
wave2050 2005-01-26
  • 打赏
  • 举报
回复
好象是创建非摸态对话框问题,::SetWindowPos(wndTopMost ……)不起作用的
tong20037 2005-01-26
  • 打赏
  • 举报
回复
::SetWindowPos(wndTopMost ……);
Shankr 2005-01-25
  • 打赏
  • 举报
回复
谢谢指教,不过我试过了,还是不行。
不知道老大能不能帮我试一下,行了告诉我大概怎么写?

我的大致如下:
父窗口的某处调用:
CDialg1 *pdlg1 = NULL; // 此为成员变量,此处示范
pdlg1 = new CDialg1();
pdlg1->Create(IDD_DIALOG1, NULL); //此处已经设置为NULL
pdlg1->ShowWindow(SW_SHOW);

?还要怎么做才能行?
dandycheung 2005-01-25
  • 打赏
  • 举报
回复
这也很简单,可以强行调用 API 使之脱离关系:::SetParent(pChildDlg->m_hWnd, NULL); 即可。
hxn2 2005-01-25
  • 打赏
  • 举报
回复
pParentWnd
Pointer to the parent window object of type CWnd to which the dialog object belongs. If it is NULL, the dialog object parent window is set to the main application window.

如果设置为NULL,他的父窗体可能还是原来的对话框
dandycheung 2005-01-25
  • 打赏
  • 举报
回复
不要依赖父子关系即可。也就是说你在创建子对话框的时候,把父窗口指针设置为 NULL。这样的后果是父窗口关闭时子窗口不能自动关闭,但可以通过把子窗口的指针保留到父窗口类中来模拟:显示子窗口时将该指针赋值,子窗口被关闭时将该值置为 NULL,父窗口关闭时检查该值,不为 NULL 则说明需要关闭子窗口。
hxn2 2005-01-24
  • 打赏
  • 举报
回复
弹出对话框用CWinThread来做应该可以
Shankr 2005-01-24
  • 打赏
  • 举报
回复
没有能人来回答吗?

15,979

社区成员

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

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