65.9K
CodeProject 正在变化。 阅读更多。
Home

属性表编辑器

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.65/5 (9投票s)

2004 年 8 月 12 日

1分钟阅读

viewsIcon

50821

downloadIcon

2426

一篇文章展示了一个类似于 VC7.0 属性表的编辑器。

引言

最近,我想使用一个类似于 VC7.0 的属性表编辑器。因此,我在 CodeProject 网站上搜索了一下。我找到了 sramsay 创建的一个很好的例子“CPropTree v1.0 - Property Tree Control”。感谢作者。我对其进行了一些修改,并添加了一个工具栏和一个组合框,使其看起来像 VC7.0 的属性表。

我添加了一个新的类,用于工具栏:CPropToolbar,这个类并非我原创。很抱歉我忘记了它的原始作者。

并且我添加了一个新的类:CToolbarContainer,用于响应工具栏的命令。

实现

PropToolbar.cpp 中,你需要添加你的工具栏 ID。

static const UINT toolbarItems[] =
{
    ID_PROP_CATEGORIZE,
    ID_PROP_ALPHABETIC
};

BEGIN_MESSAGE_MAP(CPropToolbar, CToolBarCtrl)
    ON_NOTIFY_RANGE( TTN_NEEDTEXTA, ID_PROP_CATEGORIZE, 
                       ID_PROP_ALPHABETIC, OnNeedTextA)
    ON_NOTIFY_RANGE( TTN_NEEDTEXTW, ID_PROP_CATEGORIZE, 
                       ID_PROP_ALPHABETIC, OnNeedTextW)

ON_WM_LBUTTONDBLCLK()
END_MESSAGE_MAP()

ToolbarContainer.h 中,我添加了一个消息映射来处理工具栏的命令。

    afx_msg void OnSortByCategory();
    afx_msg void OnSortByAlpha();

你可以在我的源代码中获得详细的实现。我的代码可能注释较少,但还算整洁:(,你可以获取它。

一个有趣的 Bug

哇,在实现之后,我很高兴它看起来很不错。但很快,我发现了一个大 bug。有时当你操作它时,或者当你最小化它时,等待一段时间(可能半个小时),你会发现工具栏变回了之前的样子。

我不知道是什么原因造成的。也许有人可以告诉我或解决它。我会非常感激他/她!你能做到吗?

© . All rights reserved.