0

这是我的来源:

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;)............ …………………………………………………………………………………………………………

这是我的设计:

在此处输入图像描述

这是我的结果: 在此处输入图像描述

我们可以看到对话框不在选项卡控件中。来人帮帮我?谢谢!!!

4

3 回答 3

0

如果要正确放置子对话框,则必须:

  • 获取参考选项卡控件位置以正确放置对话框
  • 删除 SWP_NOSIZE|SWP_NOMOVE 以应用此位置

它看起来像这样(未经测试):

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将确保对话框位于任何其他控件之上。

于 2012-11-15T16:01:53.550 回答
0

对话框或其他控件不是选项卡的子项,它们也是选项卡本身所在的任何窗口的子项。您所做的是使用 CTabCtrl 的 AdjustRect() 来计算选项卡内容的位置。另外,您必须手动管理选项卡更改并处理要执行的操作(通常,这意味着隐藏除您希望成为选项卡一部分的控件之外的所有内容)。

从历史上看,您会在 CTabCtrl 上编写自己的抽象,以便它可以包含控件或窗口,并且您可以将选项卡与其所在的窗口分离。然而,由于 MFC Next 有一个 CMFCTabCtrl 的行为就像你所期望的那样,所以使用它,你会很好。

于 2012-11-15T15:38:02.797 回答
0

您必须将对话框样式更改为CHILD。您可能已经POPUP设置了样式。

于 2012-11-15T08:16:56.457 回答