1

感谢 Stack Overflow 的支持,我已经能够创建自己的CResizingMFCPropertySheet支持调整大小的。现在,我添加了一个调整大小的锚点,并使用了以下代码:

void CResizingMFCPropertySheet::InitialiseResizeIcon()
{
    CRect rcIcon, rcClient;

    m_bmpResize.LoadOEMBitmap(OBM_SIZE);
    m_lblResize.Create(0, WS_CHILD | WS_VISIBLE | SS_BITMAP, 
               CRect(0, 0, 16, 16), this, IDC_STATIC_RESIZE);
    m_lblResize.SetBitmap(m_bmpResize);

    GetClientRect(rcClient);
    m_lblResize.GetClientRect(rcIcon);
    m_lblResize.SetWindowPos(&CWnd::wndTop, rcClient.right - rcIcon.Width(), 
               rcClient.bottom - rcIcon.Height(), 0, 0, SWP_NOSIZE);
}

注意:以上代码已修改,不再使用动态布局 - 不起作用)。

该方法被调用OnInitDialog。首次显示工作表时,它看起来不错:

属性表

您可以在右下角看到锚点。现在,当我去调整窗口大小时:

调整工作表

如您所见,它没有正确渲染锚。

更新

我已经设置WS_CLIPSIBLINGS了,没有区别。

更新

只是为了让大家知道新主题抓手无法正常工作的原因是因为我没有添加OnNcHitTest处理程序等。

4

2 回答 2

1

修改 CMFCPropertySheet 的样式并添加 WS_CLIPSIBLINGS!

也将 WS_CLIPSIBLINGS 添加到抓手窗口。

将 WS_CLIPCHILDREN 添加到 CPropertySheet。

于 2018-06-21T11:31:54.420 回答
1

我从未尝试过,我做了一些搜索,动态执行此操作似乎存在一些问题。有人说不能,其他人似乎提出了一些办法。这是我找到的一些更好的链接,希望对您有所帮助。

如何将夹具添加到 PropertySheet?

https://www.codeproject.com/Tips/214744/How-to-implement-a-resizable-property-sheet-class

https://social.msdn.microsoft.com/Forums/vstudio/en-US/2a85d3a9-3f91-482c-8bc3-02e132035c7f/cannot-resize-a-new-cmfcpropertysheetcmfcpropertypage?forum=vcgeneral

https://www.codeguru.com/cpp/controls/propertysheet/article.php/c543/Resizing-the-Property-Sheet.htm


这最终帮助了:

使用动态布局使 CMFCPropertySheet 可调整大小

那里的答案解释了如何正确绘制自定义子控件OnSize

于 2018-06-21T14:59:05.377 回答