如何格式化浮点/双精度值的CMFCPropertyGridProperty

如何格式化浮点/双精度值的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

我有几个属性是浮动的。默认情况下,CMFCPropertyGridProperty以6位小数显示这些属性。我希望它们以2位小数显示,如
12.75
vs
12.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(…)