将自定义控件嵌入到 CMFCPropertyGridCtrl 属性项

问题描述 投票:0回答:2

我想将两个通用按钮(如“选择”和“取消”)嵌入到

CMFCPropertyGridCtrl
属性线。有没有一种无痛的方法可以做到这一点?

c++ mfc propertygrid
2个回答
2
投票

我自己找到了解决方案。您可以使用

OnCreateEditor
虚拟方法将自定义控件发送到属性。请注意,它将显示在属性编辑中。另一个重要注意事项是,每次用户编辑属性时,
CMFCPropertyGridCtrl
都会调用
OnCreateEditor
,但在销毁控件之前,它会删除最后接收到的
CWnd
对象本身。你应该考虑这一点。我在 MSDN
CMFCPropertyGridProperty
文档中没有找到任何关于此的注释(你知道该说什么)。


0
投票

经过进一步研究,我在 CodeProject 上发现了另一个对话,说要使用

HasButton()
。如果我将此覆盖添加到我的类中:

BOOL HasButton() const
{
    return TRUE;
}

然后右边会显示

...
,这至少是前进了一步!

然后,我使用 Visual Studio 2022 中的代码搜索功能,注意到一个 undocumented 方法 (

OnClickButton
)!如果我覆盖它:

virtual void OnClickButton(CPoint point)
{
    AfxMessageBox(L"Button clicked!");

}

看来有效!但是,我仍然不知道如何从“...”调整按钮文本。

© www.soinside.com 2019 - 2024. All rights reserved.