gpt4 book ai didi

c++ - 窗口 MFC : adjust child dialog to a tab control display area

转载 作者:行者123 更新时间:2023-11-30 02:20:26 30 4
gpt4 key购买 nike

我正在创建一些基于对话框的 MFC 应用程序 (C++) 并且需要使用选项卡控件。这是我尝试将子对话框调整为选项卡控件显示区域的代码(Visual Studio 2015):

/* main dialog */
BOOL CResourceBrowserDlg::OnInitDialog()
{
....
/*
* `m_Page` is my child dialog instance:
* CDlgFilterPage::CDialogEx *m_Page
*/
m_Page = new CDlgFilterPage();
m_Page->Create(IDD_FILTERPAGE, m_FilterTab.GetWindow(IDD_FILTERPAGE));

RECT rect;

/*
* `m_FilterTab` is a tab control element:
* CTabCtrl m_FilterTab
*/
m_FilterTab.GetWindowRect(&rect);
m_FilterTab.AdjustRect(FALSE, &rect);

m_Page->MoveWindow(&rect);
m_Page->ShowWindow(SW_SHOW);

m_FilterTab.InsertItem(0, L"Page1");
...
}

运行这个我得到了以下信息:

enter image description here

那么我应该如何操作才能使子窗口很好地适应选项卡控件?

最佳答案

首先,您可能想先添加一个页面,然后将另一个对话框放置在选项卡的客户区内。否则,您的选项卡窗口将没有选项卡按钮,并且对话框的大小将比您预期的要大。

其次,您需要将新对话框放置在客户区内。您必须检索它,然后根据窗口区域进行翻译。

这是你如何做的:

m_Page = new CDlgFilterPage();
m_Page->Create(IDD_FILTERPAGE, m_FilterTab.GetWindow(IDD_FILTERPAGE));

m_FilterTab.InsertItem(0, L"Page1");

CRect rcClient, rcWindow;

m_FilterTab.GetClientRect(&rcClient);
m_FilterTab.AdjustRect(FALSE, &rcClient);

m_FilterTab.GetWindowRect(&rcWindow);
ScreenToClient(rcWindow);

rcClient.OffsetRect(rcWindow.left, rcWindow.top);

m_Page->MoveWindow(&rcClient);
m_Page->ShowWindow(SW_SHOW);

结果是这样的:

enter image description here

关于c++ - 窗口 MFC : adjust child dialog to a tab control display area,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49646212/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com