MFC 中Static text 如何响应鼠标hover事件?

如题,本人想用静态文本实现超链接功能,当鼠标放在文本上,文本内容显示下划线。请问如何实现。知道的指导小弟一下,不胜感激... 如题,本人想用静态文本实现超链接功能,当鼠标放在文本上,文本内容显示下划线。请问如何实现。知道的指导小弟一下,不胜感激 展开
 我来答
bai_lj
2011-10-13 · TA获得超过276个赞
知道小有建树答主
回答量:505
采纳率:77%
帮助的人:281万
展开全部
重耐念载CStatic类,在鼠标姿滚入入事件中添加
TRACKMOUSEEVENT tme;
tme.cbSize = sizeof(tme);
tme.hwndTrack = m_hWnd;
tme.dwFlags = TME_LEAVE | TME_HOVER;
tme.dwHoverTime = 1;
_TrackMouseEvent(&tme);
则会接收到鼠标昌册困离开事件。

BEGIN_MESSAGE_MAP(CMyStatic, CStatic)
//}}AFX_MSG_MAP
ON_MESSAGE(WM_MOUSEMOVE,mv)
ON_MESSAGE(WM_MOUSEHOVER,mho)
ON_MESSAGE(WM_MOUSELEAVE,ml)
ON_MESSAGE(WM_MOUSEFIRST,mf)
END_MESSAGE_MAP()
更多追问追答
追问
我重写了CStatic类,但是不能相应鼠标HOver和鼠标进入的消息,能相应鼠标移动的消息
追答
CMyStatic::CMyStatic(CTestMFCDlg* p):m_p(p),m_bin(false)
{
}

CMyStatic::~CMyStatic(void)
{
}
LRESULT CMyStatic::mv(WPARAM wParam,LPARAM lParam){
if(!m_bin){
m_bin=true;
TRACKMOUSEEVENT tme;
tme.cbSize = sizeof(tme);
tme.hwndTrack = m_hWnd;
tme.dwFlags = TME_LEAVE | TME_HOVER;
tme.dwHoverTime = 1;
_TrackMouseEvent(&tme);
}
if(m_p)
m_p->PostMessage(MY_MESSAGE,0,lParam);
return 0;
}
BEGIN_MESSAGE_MAP(CMyStatic, CStatic)
//}}AFX_MSG_MAP
ON_MESSAGE(WM_MOUSEMOVE,mv)
ON_MESSAGE(WM_MOUSEHOVER,mho)
ON_MESSAGE(WM_MOUSELEAVE,ml)
ON_MESSAGE(WM_MOUSEFIRST,mf)
END_MESSAGE_MAP()

LRESULT CMyStatic::ml(WPARAM wParam,LPARAM lParam){
m_bin=false;
if(m_p)
m_p->PostMessage(MY_MESSAGE,1,lParam);
return 0;
}
LRESULT CMyStatic::mho(WPARAM wParam,LPARAM lParam){
if(m_p)
m_p->PostMessage(MY_MESSAGE,2,lParam);
return 0;
}
LRESULT CMyStatic::mf(WPARAM wParam,LPARAM lParam){
if(m_p)
m_p->PostMessage(MY_MESSAGE,3,lParam);
return 0;
}
八度雪花
2011-10-13
知道答主
回答量:9
采纳率:0%
帮助的人:12.2万
展开全部
需要重写CSTATIC类!~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式