首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在选项卡控件中嵌入了一个对话框。但它不在选项卡控件中

在选项卡控件中嵌入了一个对话框。但它不在选项卡控件中
EN

Stack Overflow用户
提问于 2012-11-15 01:42:31
回答 3查看 1.6K关注 0票数 0

这是我的来源:

代码语言:javascript
复制
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;)...............................................

这是我的设计:

这是我的结果:

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

EN

回答 3

Stack Overflow用户

发布于 2012-11-15 16:16:56

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

票数 0
EN

Stack Overflow用户

发布于 2012-11-15 23:38:03

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

过去,您会在CTabCtrl上编写自己的抽象,以便它可以包含控件或窗口,并且可以将选项卡与它所在的窗口解耦。然而,由于MFC Next有一个你所期望的行为的CMFCTabCtrl,所以使用它,你会做得很好。

票数 0
EN

Stack Overflow用户

发布于 2012-11-16 00:01:54

如果你想正确地放置子对话框,你必须:

获取引用选项卡控件位置,以放置对话框correctly

  • remove SWP_NOSIZE|SWP_NOMOVE to apply position

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

代码语言:javascript
复制
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将确保该对话框位于任何其他控件的顶部。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13384245

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档