我想将两个通用按钮(如“选择”和“取消”)嵌入到
CMFCPropertyGridCtrl
属性线。有没有一种无痛的方法可以做到这一点?
我自己找到了解决方案。您可以使用
OnCreateEditor
虚拟方法将自定义控件发送到属性。请注意,它将显示在属性编辑中。另一个重要注意事项是,每次用户编辑属性时,CMFCPropertyGridCtrl
都会调用OnCreateEditor
,但在销毁控件之前,它会删除最后接收到的CWnd
对象本身。你应该考虑这一点。我在 MSDN CMFCPropertyGridProperty
文档中没有找到任何关于此的注释(你知道该说什么)。
经过进一步研究,我在 CodeProject 上发现了另一个对话,说要使用
HasButton()
。如果我将此覆盖添加到我的类中:
BOOL HasButton() const
{
return TRUE;
}
然后右边会显示
...
,这至少是前进了一步!
然后,我使用 Visual Studio 2022 中的代码搜索功能,注意到一个 undocumented 方法 (
OnClickButton
)!如果我覆盖它:
virtual void OnClickButton(CPoint point)
{
AfxMessageBox(L"Button clicked!");
}
看来有效!但是,我仍然不知道如何从“...”调整按钮文本。