VC 中子窗口的子窗口显示不出来

云满笔记 2014-07-17 05:57:40
程序是MFC基于对话框的程序,如下代码,能显示出窗体但是显示出来的窗体不能随父窗口移动而移动,会浮在桌面上,主窗口隐藏了它还能浮在桌面上,好像跟我的主窗口没有啥关系:
		m_pChosenListDlg = new CChosenListDlg();
m_pChosenListDlg->Create( IDD_CHOSEN_LIST );
m_pChosenListDlg->ShowWindow( SW_SHOW );


但如果用下面的代码,原来的子窗口根本就不能显示:

m_pChosenListDlg = new CChosenListDlg();
m_pChosenListDlg->Create( IDD_CHOSEN_LIST );
m_pChosenListDlg->SetParent( this );
m_pChosenListDlg->ShowWindow( SW_SHOW );

这两者都不是我想要的,我想要的就是一个能正常显示的子窗口的子窗口,主窗口(即"爷窗口")移动,“孙窗口”移动,主窗口隐藏,“孙窗口”就隐藏了
...全文
322 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
微型蚂蚁 2014-07-18
  • 打赏
  • 举报
回复
因为第一种Style是popup所以父Hwnd永远是桌面
云满笔记 2014-07-18
  • 打赏
  • 举报
回复
引用 5 楼 piaobotudou 的回复:
用SetWindowPos或者MoveWIndow给子对话框设置个位置。 还不行用Spy++看一下你的子窗口没有有创建出来。
很奇怪 明明用第一种方法能创建出窗口 我都看到了 有 可是用spy++探测不到窗口的存在 套在上面 显示的却是桌面的句柄
微型蚂蚁 2014-07-18
  • 打赏
  • 举报
回复
用SetWindowPos或者MoveWIndow给子对话框设置个位置。 还不行用Spy++看一下你的子窗口没有有创建出来。
fishion 2014-07-18
  • 打赏
  • 举报
回复
m_pChosenListDlg = new CChosenListDlg(); m_pChosenListDlg->Create( IDD_CHOSEN_LIST, this ); m_pChosenListDlg->ShowWindow( SW_SHOW ); 如果想把窗口嵌入到父窗口中,就要设置窗口属性为child,如果不是,那就处理父窗口的WM_WINDOWPOSCHANGED,WM_WINDOWPOSCHANGING 消息来控制子窗口的移动
云满笔记 2014-07-18
  • 打赏
  • 举报
回复
引用 2 楼 piaobotudou 的回复:
把对话框的属性由PopUp设置成Child
设置了 没反应 不显示
微型蚂蚁 2014-07-18
  • 打赏
  • 举报
回复
把对话框的属性由PopUp设置成Child
云满笔记 2014-07-17
  • 打赏
  • 举报
回复
自己先顶一个

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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