选项卡控件中的嵌入式对话框不能在第二个对话框中工作,MFC
Posted
技术标签:
【中文标题】选项卡控件中的嵌入式对话框不能在第二个对话框中工作,MFC【英文标题】:Embedded dialog in Tab Control cannot work in second dialog, MFC 【发布时间】:2013-10-07 01:52:46 【问题描述】:我有以下代码可以在主对话框中工作,但不能在第二个(或第三个)对话框中工作。问题是我希望选项卡控件的每个页面都可以显示一个嵌入的对话框,它类似于属性页。
首先我创建两个对话框,IDD_DIALOG1
和IDD_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
(非主对话框)中使用这种方法,它就无法工作。有人可以帮我吗?提前致谢。
【问题讨论】:
【参考方案1】:当你创建一个无模式对话框时,试试这个:
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.aspxhttp://msdn.microsoft.com/en-us/library/kc6x1ya0.aspx
【讨论】:
以上是关于选项卡控件中的嵌入式对话框不能在第二个对话框中工作,MFC的主要内容,如果未能解决你的问题,请参考以下文章