1

所以我正在使用 Visual Studio 2008 中的 C++/MFC 开发一个编辑器风格的应用程序。

Visual Studio 风格应用程序的默认向导项目充满了有用的优点,但并没有解决所有问题,甚至我发现的一些 MFC 书籍也没有提到这个特定的问题。

您如何使用CMFCPropertyGridProperty显示浮点值来限制其显示的小数位数的属性查看器?现在,您似乎在浮点值上获得了 6 位小数(使用浮点构造_variant_t)。有什么办法可以改变这个吗?

4

1 回答 1

3

该类CMFCPropertyGridProperty有一个名为 的虚函数FormatProperty()。此函数返回一个CString对象,该对象包含属性值的字符串表示形式。当需要显示属性值时,由框架调用。

由于该函数是虚函数,因此您可以从该函数派生CMFCPropertyGridProperty并覆盖您自己的属性类,以便在一般情况下调用基类的实现,而当相应的变体具有类型VT_R4( float) 或VT_R8( double)。

像这样的东西:

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;
    }
};

然后,您可以将自己的属性类的实例传递CMyPropertyCMFCPropertyGrid's function AddProperty()

于 2013-01-25T19:12:36.037 回答