在VC的静态文本下,可以通过响应WM_MOUSEMOVE和WM_LBUTTON消息的方法来完成嵌入超链接,这个方法在很多网上的文章都有叙述,在此就不多说了,想看原文的,可以看这里:
http://blog.youkuaiyun.com/wangningyu/archive/2009/08/07/4423442.aspx
但是在Visual Studio 2010下测试时,发现,尽管超链接可以完美的启动,但是每当鼠标进入响应区域时,就会消失不见。
检查了一下每个函数和调用,似乎都没有问题。这是写在CxxxxDlg的鼠标响应函数中的鼠标变化代码,其中CxxxxDlg::m_pRectLink是CRect型的变量,用来存储被设置为超链接的静态文本框的位置和尺寸: 检查了一下AfxGetApp的MSDN定义:
发现AfxGetApp所得到的,其实就是theApp全局变量,是整个程序最低层的部分,AfxWinMain的入口点。而Dlg类则是运行于theApp之上的,所以在theApp中定义的鼠标,就被在上方的Dlg类遮盖了。
解决方法显然也有那么几个,但是这里用个最简单的方法。只需要把代码 替换为 即可在静态框上正常显示手状鼠标了。
新手,欢迎吐槽……
更新:AFX_GLOBAL_DATA类(虽然写的是structure)存在于afxglobals.h中,该头文件仅在VS 2010中存在。经过测试,在VS 2008中也存在着使用AfxGetApp()->LoadCursor()无法正常工作的问题。此时,可以直接不考虑使用程序的指针,而直接使用全局成员函数,也就是系统API。即:
http://blog.youkuaiyun.com/wangningyu/archive/2009/08/07/4423442.aspx
但是在Visual Studio 2010下测试时,发现,尽管超链接可以完美的启动,但是每当鼠标进入响应区域时,就会消失不见。
检查了一下每个函数和调用,似乎都没有问题。这是写在CxxxxDlg的鼠标响应函数中的鼠标变化代码,其中CxxxxDlg::m_pRectLink是CRect型的变量,用来存储被设置为超链接的静态文本框的位置和尺寸: 检查了一下AfxGetApp的MSDN定义:
发现AfxGetApp所得到的,其实就是theApp全局变量,是整个程序最低层的部分,AfxWinMain的入口点。而Dlg类则是运行于theApp之上的,所以在theApp中定义的鼠标,就被在上方的Dlg类遮盖了。
解决方法显然也有那么几个,但是这里用个最简单的方法。只需要把代码 替换为 即可在静态框上正常显示手状鼠标了。
新手,欢迎吐槽……
更新:AFX_GLOBAL_DATA类(虽然写的是structure)存在于afxglobals.h中,该头文件仅在VS 2010中存在。经过测试,在VS 2008中也存在着使用AfxGetApp()->LoadCursor()无法正常工作的问题。此时,可以直接不考虑使用程序的指针,而直接使用全局成员函数,也就是系统API。即: