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