使用 PropSheetLook_OneNoteTabs 样式动态调整 CMFCPropertySheet 大小
我正在尝试动态调整 CMFCPropertySheet
的大小,以在每个页面的底部添加自定义控件。
由于所有属性页的高度并不相同,因此我有一种机制可以在必要时增加尺寸。 为此,我重写了 OnActivatePage 方法,并通过使用 SetWindowPos,我可以调整工作表的大小,首先,然后是选项卡控件,然后是页面,最后我可以移动确定/取消/帮助按钮。
它适用于 PropSheetLook_OutlookBar
和 PropSheetLook_Tabs
样式,但不适用于 PropSheetLook_OneNoteTabs
样式。 页面(或选项卡)未正确调整大小(页面的浅灰色未填充工作表。OneNote
样式 OneNote http://www.freeimagehosting.net/uploads/th.ec91600664.jpg
Outlook 样式 Outlook http://www.freeimagehosting.net/uploads/th.319b6938ab.jpg
知道吗?MFC 功能包错误?
I'm trying to resize dynamically a CMFCPropertySheet
to add a custom control at the bottom of each page.
As all Property Pages are not of the same height, I have a mechanism to increase the size if necessary.
For this, I have overridden the OnActivatePage
method and by using SetWindowPos
, I can resize the sheet, first, then the tab control, then the page and finally I can move the OK/Cancel/Help buttons.
It works fine with PropSheetLook_OutlookBar
and PropSheetLook_Tabs
styles but not with PropSheetLook_OneNoteTabs
style. The page (or the tab) is not correctly resized (the lighter grey color of the page does not fill the sheet.
OneNote style OneNote http://www.freeimagehosting.net/uploads/th.ec91600664.jpg
Outlook style Outlook http://www.freeimagehosting.net/uploads/th.319b6938ab.jpg
Any idea? A MFC Feature Pack bug?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我发现了问题。 人们需要通过
GetTab()
获取对OneNote
版本使用的不同选项卡控件的引用,并相应地调整其大小。I found the problem. One needs to get a reference to the different tab control the
OneNote
version uses viaGetTab()
and resize it accordingly.只需按照此处中的说明进行操作即可。
尽管这些说明适用于 CPropertySheet,但它们也适用于 CMFCPropertySheet。
代码的某些部分已被弃用,因此您需要进行以下修改。
OnInitDialog
中,只需调用CPropertySheet::OnInitDialog();
并然后调用OnSize
而不是执行该代码中提供的所有操作。Just follow the instructions as seen in here.
Although the instructions are for CPropertySheet they work for the CMFCPropertySheet as well.
Some parts of the code is deprecated so you will need to make the following amendments.
OnInitDialog
just make a call toCPropertySheet::OnInitDialog();
and then callOnSize
instead of doing everything presented in that code.