WEB开发网
开发学院软件开发VC 有Toolbar功能的可重用类CPopupText 阅读

有Toolbar功能的可重用类CPopupText

 2008-01-19 20:23:51 来源:WEB开发网   
核心提示:背景:我用一个CListBox派生类实现宿主(owner-draw)列表框,这个列表框的项目宽度超过了列表框本身的宽度,有Toolbar功能的可重用类CPopupText,因此当鼠标指针指向大宽度的列表框项时,我想显示一个类似Toolbar的提示窗口,你可以使用这个特点来替代对ShowWindow的调用,如果要隐藏提示

背景:我用一个CListBox派生类实现宿主(owner-draw)列表框,这个列表框的项目宽度超过了列表框本身的宽度,因此当鼠标指针指向大宽度的列表框项时,我想显示一个类似Toolbar的提示窗口,在窗口中显示完整的列表框项目文本。

起初我想使用CToolTipCtrl::AddTool的第三个参数lpRectTool来实现这个功能,但没有成功。后来,我采用了自立更生的解决方案,创建了一个可重用窗口类,CPopupText-基类是CWnd。用这个派生类不仅可以在列表框中实现类似Toolbar的提示窗口,还可以在其它的通用控件(如组合框、列表视图等)中实现类似Toolbar的提示窗口。

CPopupText实现了一个类似Toolbar的弹出式窗口-浅黄色的背景,黑色的文本。

CPopupText的使用方法是:实例化对象并创建窗口。

CPopupText wndText;
wndText.Create(...);

Create 函数的参数为:父窗口,风格,ID以及位置信息CPoint,通常你要创建不可见窗口(即关闭WS_VISIBLE),然后,当你想显示提示时,先调用 SetWindowText 函数

设置提示文本,接着调用 ShowWindow 函数显示提示文本。

wndText.SetWindowText("hello, world");
wndText.ShowWindow(SW_SHOWNA);

CPopupText类会根据提示文本的长度自己决定弹出窗口的大小。它的字体默认值与状态行显示字体相同(由SystemParametersInfo(SPI_GETNONCLIENTMETRICS)返回的 NONCLIENTMETRICS 结构成员 lfStatusFont 定义),设置 SW_SHOWNA是很重要的,因为你不想使提示窗口为活动窗口,而只是显示它。另外,CPopupText还提供一个专门的函数CPopupText::ShowDelayed,它的功能是在显示提示窗口之前设置一个毫秒级延时,如果延时为零,则立刻显示提示窗口,你可以使用这个特点来替代对ShowWindow的调用。如果要隐藏提示窗口或取消ShowDelayed,调用CPopupText::Cancel。

1 2  下一页

Tags:Toolbar 功能 重用

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