gpt4 book ai didi

mfc - 使用动态布局调整 CMFCPropertySheet 的大小

转载 作者:行者123 更新时间:2023-12-02 14:59:25 25 4
gpt4 key购买 nike

我看到了这个question但答案中的链接不再有效。

我还找到了this我试过了但没有用 this .

我的任务应该很简单。我在 CMFCPropertySheet 上有几个页面,我想利用 IDE 中新的动态调整大小功能。所以我设置了控件的大小调整,唉,当在工作表中显示时,无法调整工作表/页面的大小。

尝试上述资源失败。

CMyPropertySheet 的 header :

https://pastebin.com/k8yjhZh7

CMyPropertySheet 的来源:

https://pastebin.com/kxexFPbU

为了测试,我刚刚创建了一个对话框应用程序并添加了一个页面并将其分配给该工作表。

我只想支持属性表/页面的动态调整大小。我缺少什么,实际上是否还需要这些代码?

最佳答案

这是我想出的另一个答案。我突然想到,我们没有理由不使用新的动态布局功能。只是动态布局指针以 NULL 开头。

如果您将以下私有(private)方法添加到您的派生属性表类:

void CResizingMFCPropertySheet::SetupDynamicLayout()
{
EnableDynamicLayout(TRUE);
auto pManager = GetDynamicLayout();
if (pManager != nullptr)
{
pManager->Create(this);

// The navigation control only needs to be stretched vertically
pManager->AddItem(m_pNavigationControl->GetSafeHwnd(),
CMFCDynamicLayout::MoveNone(), CMFCDynamicLayout::SizeVertical(100));

// The resize control needs to be moved 100% in both directions
pManager->AddItem(m_lblResize.GetSafeHwnd(),
CMFCDynamicLayout::MoveHorizontalAndVertical(100, 100), CMFCDynamicLayout::SizeNone());

for (CWnd *child = GetWindow(GW_CHILD); child; child = child->GetWindow(GW_HWNDNEXT))
{
if (child->GetSafeHwnd() != m_lblResize.GetSafeHwnd() &&
child->GetSafeHwnd() != m_pNavigationControl->GetSafeHwnd())
{
// All buttons need to be moved 100% in all directions
if (child->SendMessage(WM_GETDLGCODE) & DLGC_BUTTON)
{
pManager->AddItem(child->GetSafeHwnd(),
CMFCDynamicLayout::MoveHorizontalAndVertical(100, 100), CMFCDynamicLayout::SizeNone());
}
else // This will be the main tab control which needs to be stretched in both directions
{
pManager->AddItem(child->GetSafeHwnd(),
CMFCDynamicLayout::MoveNone(), CMFCDynamicLayout::SizeHorizontalAndVertical(100, 100));
}
}
}
}
}

并从 OnInitDialog 调用它,这样您就不需要任何 OnSize 事件处理程序,也不需要任何类型的手动绘图。

关于mfc - 使用动态布局调整 CMFCPropertySheet 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50955709/

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