WEB开发网
开发学院软件开发VC VC中给树形控件的图标加上工具提示 阅读

VC中给树形控件的图标加上工具提示

 2008-11-13 19:32:33 来源:WEB开发网   
核心提示: 第三步:处理TTN_NEEDTEXT消息; 加入一个函数处理TTN_NEEDTEXT消息通知,当工具处理控制需要知道应该显示什么信息时,VC中给树形控件的图标加上工具提示(3),这条消息被发出,由于上一步中我们给TOOLINFO的lpszText赋值为LPSTR_TEXTCALLBACK

---- 第三步:处理TTN_NEEDTEXT消息;

---- 加入一个函数处理TTN_NEEDTEXT消息通知。当工具处理控制需要知道应该显示什么信息时,这条消息被发出。由于上一步中我们给TOOLINFO的lpszText赋值为LPSTR_TEXTCALLBACK,所以我们要处理这个消息VC的ClassWizard并不支持这条消息被映射,所以只有我们自己加入这条消息的映射机制加入到MESSAGE_MAP中去。我们不得不处理这个消息的两个版本,TTN_NEEDTEXTA和TTN_NEEDTEXTA。消息映射的代码如下所示:

BEGIN_MESSAGE_MAP(CTreeCtrlX, CTreeCtrl)
//{{AFX_MSG_MAP(CTreeCtrlX)

//}}AFX_MSG_MAP
ON_NOTIFY_EX_RANGE
(TTN_NEEDTEXTW, 0, 0xFFFF, OnToolTipText)
ON_NOTIFY_EX_RANGE
(TTN_NEEDTEXTA, 0, 0xFFFF, OnToolTipText)
END_MESSAGE_MAP()

下面的代码是加到类声明中:

protected:
//{{AFX_MSG(CTreeCtrlX)

//}}AFX_MSG
afx_msg BOOL OnToolTipText
( UINT id, NMHDR * pNMHDR, LRESULT * pResult );
DECLARE_MESSAGE_MAP()

---- 现在讨论这个函数本身的实现。为了适应不同的语言字符集,ANSI字符集和UNICODE字符集都必须被处理,处理过程会有些不同。此处对树形控件的本身产生的ToolTip消息不予处理,过滤掉上述消息的原则是树形控件本身产生的消息的ID是树形控件窗口的句柄,并且有TTF_IDISHWND标志。根据鼠标位置可以确定应该给出节点图标还是状态图标的工具提示。本文根据笔者画的图显示了一些无关紧要的提示,读者做这一步时应该加入一些有意义的提示。当然,本文假定控件包含节点图标和状态图标。如不包含,计算鼠标位置时要注意 不要计算错误。

上一页  1 2 3 4  下一页

Tags:VC 树形 控件

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接