如何格式化浮点/双精度值的CMFCPropertyGridProperty
我有几个属性是浮动的。默认情况下,CMFCPropertyGridProperty以6位小数显示这些属性。我希望它们以2位小数显示,如如何格式化浮点/双精度值的CMFCPropertyGridProperty,mfc,mfc-feature-pack,Mfc,Mfc Feature Pack,我有几个属性是浮动的。默认情况下,CMFCPropertyGridProperty以6位小数显示这些属性。我希望它们以2位小数显示,如12.75vs12.750000。因此,我加入了以下行: CMFCPropertyGridProperty::m_strFormatFloat = "%.2f"; 这使得它以2位小数正确显示。但是当我更改该值时,%.2f不是有效的scanf格式,因此程序会崩溃 我尝试像这样重写formattroperty()函数: class PropertyGrid2Digi
12.75
vs12.750000
。因此,我加入了以下行:
CMFCPropertyGridProperty::m_strFormatFloat = "%.2f";
这使得它以2位小数正确显示。但是当我更改该值时,%.2f
不是有效的scanf格式,因此程序会崩溃
我尝试像这样重写formattroperty()
函数:
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()
函数
有人知道我怎么解决这个问题吗?
谢谢 您的问题有点让人困惑,“每当绘制属性时都会调用CMFCPropertyGridProperty::FormatProperty()函数”——那么
CMFCPropertyGridProperty::FormatProperty()
到底有什么问题呢?基本FormatProperty()
函数会被调用,不是我的重写。我能想到为什么会发生这种情况的唯一原因是,并非所有属性项都是使用newpropertyGrid2Digits(…)