C ++ MFC为CTabCtrl中的每个选项卡附加不同的对话框

时间:2018-08-09 14:45:10

标签: c++ mfc

我有一个正在处理的小项目。它有多个对话框,所以我要做的是拥有1个主窗口,其中有多个选项卡。我希望每个选项卡代表不同的对话框。现在,我有了:带有CTabCtrl的对话框按预期打开,并且附有3个选项卡,当我按(例如)选项卡1时,它将创建我想要的PopUpDialog的新的Modeless实例,并显示在我想要的位置。都好。但是然后,如果我移动主窗口,则我的PopUpDialog(无边界)将停留在他刚开始弹出的位置。似乎对话框的“生成”位置已映射到CTabCtrl对话框,但未附加到该对话框。我认为我需要将其设置为儿童班或类似的课程。我是MFC和编程的新手。我过去两天一直在寻找答案,但由于链接太旧而删除了许多链接。这是我正在做的一个小代码示例:

  void CTabCtrlDialog::OnSelchangeTab(NMHDR *pNMHDR, LRESULT *pResult)
{
    CDialogIwantToPopUp *m_Page;

    m_Page = new CDialogIwantToPopUp();
    m_Page->Create(IDD_POPUP_DIALOG, m_tabTest.GetWindow(IDD_POPUP_DIALOG));

    m_Page->ShowWindow(SW_SHOW);

}

这是一个函数(在我的对话框中包含选项卡控件),负责单击任何选项卡事件。

1 个答案:

答案 0 :(得分:1)

我发现在这种情况下最容易使用属性表,但是如果不合适,那么您需要确保每个页面都具有DS_CHILD样式(资源编辑器属性列表中的Style:Child)。

创建页面时,其父窗口应为“ this”,而不是您对GetWindow()所做的操作。