本文将简单的介绍使用ShellExecute这个API函数,在About对话框的静态文本控件上创建一个指向指定网页的超级链接!
1) 在CAboutDlg中添加一个成员变量
protected:
RECT m_pRectLink; //用于保存静态文本框的屏幕坐标
2) 在About对话框资源上添加一个CStatic控件,ID命为IDC_LINK;
3) 在OnInitDialog()中添加如下代码,以获得控件坐标
GetDlgItem(IDC_LINK)->GetWindowRect(&m_pRectLink);
ScreenToClient(&m_pRectLink);
4) 当鼠标移动到热点上时,鼠标指针变成手型
为WM_MOUSEMOVE添加消息响应函数OnMouseMove(UINT nFlags, CPoint point),在该函数中, point参数可获得对应于窗口左上角的鼠标坐标,通过判断算法就可实现事件的控制。
if(point.x > m_pRectLink.left && point.x < m_pRectLink.right && point.y > m_pRectLink.top && point.y < m_pRectLink.bottom)
{
HCURSOR hCursor;
hCursor = AfxGetApp()->LoadCursor(IDC_HANDLINK);
SetCursor(hCursor);
}
else{…….};//设置默认鼠标指针的形状
5) 为About对话框添加WM_LBUTTONDOWN消息响应函数OnLButtonDown(UINT nFlags, CPoint point)
if(point.x > m_pRectLink.left && point.x < m_pRectLink.right && point.y > m_pRectLink.top && point.y < m_pRectLink.bottom)
{
if (nFlags==MK—LBUTTON)//鼠标左键按下
{
//为改善鼠标效果,此处加入以上变换鼠标形状的代码
ShellExecute(NULL, NULL, _T(“http://www.zsc.edu.cn”), NULL,NULL, SW_SHOWNORMAL);
//ShellExecute(NULL, _T("open"),_T("mailto:hsxw001@163.com"), NULL, NULL, SW_SHOWNORMAL);
//在默认邮件客户端中打开新邮件窗口,并自动填入收件人地址。若指定多个收件人地址,则收件人地址之间必须用分号或逗号分隔开。
}}
关于ShellExecute()函数的用法详情,请参考MSDN