none
在父对话框中创建子对话框 RRS feed

  • 问题

  • 我在父对话框中使用CDialog::Create创建非模态的子对话框(子对话框的属性为WS_CHILD),但是子对话框显示出来后,子对话框下的父对话框的内容也会显示(譬如按钮之类),就是说子对话框不能完全覆盖父对话框.这些应该被覆盖的父对话框内容只是显示,并不能响应鼠标.将子对话框属性该为WS_POPUP,可解决上面问题,但是子对话框不能随父对话框一起移动.我的开发环境为VC6.请高手指点!

    • 已移动 Vicky SongMicrosoft employee 2012年5月21日 2:02 C++ issue (发件人:Visual Studio 相关讨论(Visual Studio 2010以前版本))
    2012年5月19日 0:10

答案

  • 您创建子对话框(WS_CHILD属性)的时候,MoveWindow来调整子对话框的显示区域即可。

    CNewDlg m_dlgChild;
    ....
    // 创建子对话框(Style: Child, Border : None)
    if(NULL == m_dlgChild.GetSafeHwnd())
    	{
    		m_dlgChild.Create(IDD_DIALOG1, this);
    	}
    	CRect rc;
    	GetClientRect(&rc);
    	m_dlgChild.MoveWindow(&rc, FALSE);
    	m_dlgChild.ShowWindow(SW_SHOW);

    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.

    • 已标记为答案 Helen Zhao 2012年5月25日 5:03
    2012年5月21日 10:55
    版主

全部回复

  • 我想你这是在MFC程序中创建对话框。

    请看MSDN文档上对CDialog::Create函数的描述:http://msdn.microsoft.com/en-US/library/yhth57kd(v=vs.100).aspx 

    我没有遇到过你说的对话框属性的问题。

    你可以参考链接上的程序实现子对话框。


    Please mark this reply as answer if it helps you! Thanks for your cooperation! Good Luck to you.

    2012年5月21日 6:09
  • 您创建子对话框(WS_CHILD属性)的时候,MoveWindow来调整子对话框的显示区域即可。

    CNewDlg m_dlgChild;
    ....
    // 创建子对话框(Style: Child, Border : None)
    if(NULL == m_dlgChild.GetSafeHwnd())
    	{
    		m_dlgChild.Create(IDD_DIALOG1, this);
    	}
    	CRect rc;
    	GetClientRect(&rc);
    	m_dlgChild.MoveWindow(&rc, FALSE);
    	m_dlgChild.ShowWindow(SW_SHOW);

    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.

    • 已标记为答案 Helen Zhao 2012年5月25日 5:03
    2012年5月21日 10:55
    版主