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

时间:2013-06-27 18:12:18

标签: mfc mfc-feature-pack

我有几个浮动属性。默认情况下,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()函数。

有人知道如何解决这个问题吗? 谢谢!

0 个答案:

没有答案