1

そのため、VisualStudio2008でC++/MFCを使用するエディタースタイルのアプリケーションに取り組んでいます。

Visual Studioスタイルのアプリケーションのデフォルトのウィザードプロジェクトは便利な機能でいっぱいですが、すべてに対応しているわけではなく、私が見つけたいくつかのMFCの本でさえ、この特定の質問について言及していません。

CMFCPropertyGridProperty浮動小数点値を表示するプロパティビューアを使用して、表示される小数点以下の桁数を制限するにはどうすればよいですか?現在、浮動小数点値(浮動小数点を使用して構築_variant_t)の小数点以下6桁を取得しているようです。これを変更する方法はありますか?

4

1 に答える 1

3

このクラスCMFCPropertyGridPropertyには、と呼ばれる仮想関数がありFormatProperty()ます。CStringこの関数は、プロパティの値の文字列表現を含むオブジェクトを返します。プロパティ値を表示する必要がある場合にフレームワークによって呼び出されます。

関数は仮想であるため、その関数から独自のプロパティクラスを派生させてCMFCPropertyGridPropertyオーバーライドし、一般的なケースで基本クラスの実装が呼び出されるようにし、対応するバリアントのタイプがVT_R4float)またはVT_R8double)。

このようなもの:

class CMyProperty : CMFCPropertyGridProperty
{
    ...
    virtual CString FormatProperty()
    {
        CString str;
        if (GetValue().vt == VT_R8)
        {
            str.Format(...); // Or whatever you want
        }
        else
        {
            str = CMFCPropertyGridProperty::FormatProperty();
        }

        return str;
    }
};

CMyProperty次に、独自のプロパティクラスのインスタンスをCMFCPropertyGridの関数に渡すことができますAddProperty()

于 2013-01-25T19:12:36.037 に答える