MFC属性网格格式化浮点数

时间:2013-01-22 15:44:02

标签: c++ mfc

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

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

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

1 个答案:

答案 0 :(得分: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()