我有几个浮动属性。默认情况下,CMFCPropertyGridProperty显示6个小数位。我希望它们显示2个小数位,如12.75
vs 12.750000
。所以我输入以下内容:
CMFCPropertyGridProperty::m_strFormatFloat = "%.2f";
这使得它可以正确显示2个小数位。但是当我更改值时,%.2f
不是有效的scanf格式,因此程序会爆炸。
我尝试覆盖FormatProperty()
函数,如下所示:
class PropertyGrid2Digits : public CMFCPropertyGridProperty
{
public:
PropertyGrid2Digits(const CString& strName, const float InitialValue = 0, LPCTSTR lpszDescr = NULL, DWORD_PTR dwData = 0);
virtual ~PropertyGrid2Digits();
virtual CString FormatProperty() {
CString str;
str.Format("%.2f", GetValue().fltVal);
return str;
}
};
但我的版本仅在首次创建属性时被调用。不知何故,只要属性被绘制,就会调用CMFCPropertyGridProperty::FormatProperty()
函数。
有人知道如何解决这个问题吗? 谢谢!