这是我的来源:
void CCCRView::OnInitialUpdate()
{
.
.
.
VERIFY(dlg1.Create(CaaaqweqweqweDlg::IDD, this));
VERIFY(dlg1.SetWindowPos(GetDlgItem(IDC_TAB2),100, 100,200, 200, SWP_SHOWWINDOW|SWP_NOSIZE|SWP_NOMOVE));
dlg1.ShowWindow(SW_SHOW);
}带有: IDC_TAB2:是选项卡控件..............Dlg1:我要嵌入的对话框....................................CaaaqweqweqweDlg:类对话框的名称。(CaaaqweqweqweDlg dlg1;)...............................................
这是我的设计:

这是我的结果:

我们可以看到对话框不在选项卡控件中。谁来帮帮我?谢谢!
发布于 2012-11-15 16:16:56
必须将对话框样式更改为CHILD。您可能已经设置了POPUP样式。
发布于 2012-11-15 23:38:03
对话框或其他控件不是选项卡的子项,它们也是选项卡本身所在的任何窗口的子项。您要做的是使用CTabCtrl的AdjustRect()来计算选项卡内容的位置。此外,您还必须手动管理选项卡更改并处理要执行的操作(通常,这意味着隐藏除您希望成为选项卡一部分的控件之外的所有内容)。
过去,您会在CTabCtrl上编写自己的抽象,以便它可以包含控件或窗口,并且可以将选项卡与它所在的窗口解耦。然而,由于MFC Next有一个你所期望的行为的CMFCTabCtrl,所以使用它,你会做得很好。
发布于 2012-11-16 00:01:54
如果你想正确地放置子对话框,你必须:
获取引用选项卡控件位置,以放置对话框correctly
它看起来像这样(未经测试):
dlg1.Create(CaaaqweqweqweDlg::IDD, this);
CRect Rect;
GetDlgItem(IDC_TAB2)->GetWindowRect(Rect);
Rect.InflateRect(-10, -10);
ScreenToClient(Rect);
dlg1.SetWindowPos(&wndTop, Rect.left, Rect.top, Rect.Width(), Rect.Height(), SWP_SHOWWINDOW);wndTop将确保该对话框位于任何其他控件的顶部。
https://stackoverflow.com/questions/13384245
复制相似问题