0

フロートであるプロパティがいくつかあります。既定では、CMFCPropertyGridProperty はこれらを小数点以下 6 桁で表示します。12.75vsのように小数点以下 2 桁で表示するようにします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()プロパティが描画されるたびに関数が呼び出されます。

これを修正する方法を知っている人はいますか?ありがとう!

4

0 に答える 0