所以我工作在Visual Studio中使用C++/MFC的编辑风格的应用程序2008年MFC属性网格格式化湘江边
的视觉工作室风格应用程序的默认向导项目充满了有用的善良,但没有按没有解决所有问题,甚至我找到的几本MFC书籍都没有提到这个问题。
如何获得使用CMFCPropertyGridProperty
的属性查看器来显示浮点值以限制显示的小数位数?现在,您似乎在浮点值上获得6个小数位(使用浮点数_variant_t
构造)。有什么方法可以改变它吗?
所以我工作在Visual Studio中使用C++/MFC的编辑风格的应用程序2008年MFC属性网格格式化湘江边
的视觉工作室风格应用程序的默认向导项目充满了有用的善良,但没有按没有解决所有问题,甚至我找到的几本MFC书籍都没有提到这个问题。
如何获得使用CMFCPropertyGridProperty
的属性查看器来显示浮点值以限制显示的小数位数?现在,您似乎在浮点值上获得6个小数位(使用浮点数_variant_t
构造)。有什么方法可以改变它吗?
类CMFCPropertyGridProperty
有一个虚拟函数,称为FormatProperty()
。该函数返回一个CString
对象,该对象包含属性值的字符串表示形式。当需要显示属性值时,由框架调用它。
由于该功能是虚拟的,你可以从CMFCPropertyGridProperty
派生自己的财产类和重写功能,使基类的实现将在一般情况下被调用,而你自己的格式逻辑将被应用在 相应的变体具有类型VT_R4
(float
)或VT_R8
(double
)。
事情是这样的:
class CMyProperty : CMFCPropertyGridProperty
{
...
virtual CString FormatProperty()
{
CString str;
if (GetValue().vt == VT_R8)
{
str.Format(...); // Or whatever you want
}
else
{
str = CMFCPropertyGridProperty::FormatProperty();
}
return str;
}
};
然后,你可以通过你自己的财产类CMyProperty
的实例CMFCPropertyGrid
的功能AddProperty()
。
安迪 - 谢谢你的回答,我已经得到它主要工作。你碰巧知道如何让它在施工中调用'FormatProperty'?它似乎没有设置该属性的格式,直到设置了值。解决方案可能很简单,只需创建并调用“SetValue”,但我希望更好。谢谢! – James
@James:'FormatProperty()'是一个虚函数,所以你不应该试图在构造上调用它(意味着:在你的类的构造函数中)。但是,也许我误解了你真正想要的东西?你为什么希望它被建造?我认为任何时候它的价值需要被显示的时候框架都会调用它,不是吗? –
我能弄明白,但它看起来像是如果你通过构造函数初始化一个'CMFCPropertyGridProperty'并且不调用'SetValue',那么这个函数永远不会被调用,并且你会得到默认的格式。可能是因为你所说的 - 它不能在构造函数中调用虚函数。 – James