属性表编辑器






4.65/5 (9投票s)
2004 年 8 月 12 日
1分钟阅读

50821

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。有时当你操作它时,或者当你最小化它时,等待一段时间(可能半个小时),你会发现工具栏变回了之前的样子。
我不知道是什么原因造成的。也许有人可以告诉我或解决它。我会非常感激他/她!你能做到吗?