我有以下代码可在主对话框中使用,但不能在第二(或第三个)对话框中使用。问题是我希望选项卡控件的每个页面都可以显示一个嵌入式对话框,这类似于属性页面。

首先创建两个对话框,分别为IDD_DIALOG1IDD_DIALOG2,然后将其样式更改为child,将边框更改为None。之后,将CDialog类添加到每个类中。

在我的MainDialog.h中,我有以下代码:

#include "Dialog1.h"
#include "Dialog2.h"
...
public:
    CDialog1 m_para1;
    CDialog2 m_para2;
    CTabCtrl m_TabCtrl;


在我的MainDialog.cpp中,我使用以下代码将方言嵌入到OnInitDialog中:

m_TabCtrl.InsertItem(0, _T("TAB1"));
m_TabCtrl.InsertItem(1, _T("TAB2"));
m_para1.Create(IDD_DIALOG1,GetDlgItem(IDD_MAINDIALOG));
m_para2.Create(IDD_DIALOG2,GetDlgItem(IDD_MAINDIALOG));

CRect rs;
m_TabCtrl.GetClientRect(&rs);

rs.top+=37;
rs.bottom+=8;
rs.left+=13;
rs.right+=7;

m_para1.MoveWindow(&rs);
m_para2.MoveWindow(&rs);

m_para1.ShowWindow(TRUE);
m_para2.ShowWindow(FALSE);


m_TabCtrl.SetCurSel(1);


通过这种方式,它可以在这种情况下工作。但是,如果我想在非主对话框SecondDialog中使用此方法,它将无法正常工作。有人可以帮我吗?提前致谢。

最佳答案

创建无模式对话框时,请尝试以下操作:

m_para1.Create(IDD_DIALOG1,&m_TabCtrl);
m_para2.Create(IDD_DIALOG2,&m_TabCtrl);


Create函数的第二个参数是指向该对话框对象所属的父窗口对象(类型为CWnd)的点。 GetDlgItem函数的返回类型为HWND

请参阅以下内容:
http://msdn.microsoft.com/en-us/library/tc46f3be.aspx
http://msdn.microsoft.com/en-us/library/kc6x1ya0.aspx

09-25 17:49
查看更多