在VC中为应用程序添加图形超链接功能
2008-11-14 19:35:28 来源:WEB开发网Visual C++提供了CCtoolTipCtrl类用来实现提示功能。工具提示控制是一个小窗口,在其中显示单行文字用以描述应用程序中的工具的用途。这里的工具所指的既可以是窗口(如工具栏上的按钮),也可以是一个固定的区域。大家都知道利用APPWIZARD生成 的应用程序中工具栏带有提示,当你将鼠标放在工具栏某一个按钮上时,将显示一个小提示框告诉你按钮的功能,这种功能方便了软件的使用者。但是在超链接区如何实现提示呢?首先声明一个CtoolTipCtrl类的变量,调用Create()成员函数创建通用工具提示,并将它附在CtoolTipCtrl对象上,然后调用CtoolTipCtrl类的AddToo()成员函数注册工具提示控制,从而为光标放在规定的窗口或区域内时显示工具提示做准备。该函数的原形为:
BOOL AddTool( CWnd* pWnd,LPCTSTR lpszText, LPCRECT lpRectTool,UINT nIDTOOL );
其中参数pWnd为指向包含工具提示控制的窗口指针,参数lpszText为所要在工具提示中显示的文字,参数lpRectTool为工具书提示所对应的窗口或规定区域,参数nIDTOOL为工具提示的标志号。
在调用CtoolTipCtrl类的Active()函数激活提示后,最后要作的工作是调用CtoolTipCtrl类的RelayEvent()函数将鼠标的WM_LBUTTONDOWN、WM_MOUSEMOVE、WM_LBUTTONUP等消息传递给工具提示控制对象,以便控件进行提示处理。
下面的代码实现了在应用程序的视图区显示对应点的坐标为例:
//在文件头定义的全局变量
CToolTipCtrl m_ToolTip;//工具提示对象
char string[50];//用来存放提示文字
CRect rect;//用来存放工具提示所对应的窗口的尺寸
#define IDC_CONST 12345//定义的工具提示标志号,注意不要和系统冲突
void CTestView::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
wsprintf(string,"%d,%d",point.x,point.y);
GetClientRect(&recty);
m_ToolTip.AddTool(this,string,&rect,IDC_CONST);
m_ToolTip.Activate(TRUE);
CView::OnMouseMove(nFlags, point);
}
LRESULT CTestView::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
// TODO: Add your specialized code here and/or call the base class
switch(message)
{case WM_LBUTTONDOWN:
case WM_RBUTTONDOWN:
case WM_MBUTTONDOWN:
case WM_LBUTTONUP:
case WM_MBUTTONUP:
case WM_RBUTTONUP:
case WM_MOUSEMOVE:
{MSG msg;
msg.hwnd=m_hWnd;
msg.message=message;
msg.wParam=wParam;
msg.lParam=lParam;
m_ToolTip.RelayEvent(&msg);
}
}
return CView::WindowProc(message, wParam, lParam);
}
更多精彩
赞助商链接