如何实现鼠标上移到一个对话框里的控件上,对话框能获取该事件?顶者有分!!!!!!!

zhenwang 2005-04-17 10:01:49
现在有一个对话框mydialog,该对话框上面放置了一个文本框myEdit,然后,当鼠标移动到该文本框上,我在对话框类里面怎么才能获取到这个消息?我试过使用CMyDialog::OnMouseMove判断不行,没有任何反应,鼠标移动到文本框上的时候,对话框根本没有获取到这个消息,这个消息肯定发送到文本框的窗口处理过程里面去了,但是我们怎么才能在对话框里获取这个消息呢?
我不是通过create的方法动态创建这个文本框的,是直接在资源里面把这个文本框拖上去的。
...全文
150 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
computersoftdiy 2005-05-22
  • 打赏
  • 举报
回复
到网上下载CButtonST也可以,里面有个SetBkCursor成员函数,调用就可以了,很好用的!
umbrella1984 2005-05-22
  • 打赏
  • 举报
回复
子类化吧
ZQJ 2005-05-22
  • 打赏
  • 举报
回复
直接在父窗口的PreTranslateMessage过程中处理
会思考的草 2005-04-18
  • 打赏
  • 举报
回复
nod好象是的。不过简单一点可以用SDK的子类化方法。
zhenwang 2005-04-18
  • 打赏
  • 举报
回复
恩,试过了,必须得子类化,然后再子类里解决才行,谢谢各位!结贴了!
pomelowu 2005-04-18
  • 打赏
  • 举报
回复
message reflection 也要用到子类化吧?
fanqing 2005-04-17
  • 打赏
  • 举报
回复
gz
zhenwang 2005-04-17
  • 打赏
  • 举报
回复
ding!
zhenwang 2005-04-17
  • 打赏
  • 举报
回复
顶!
zhenwang 2005-04-17
  • 打赏
  • 举报
回复
没有mouseOver这条消息,你是不是说我再继承一下CEdit类,然后自定义一个消息MouseOver,这条消息是鼠标移动和按下两个消息的综合。这个方法我知道,我是想不用这个方法看行不行?
BluntBlade 2005-04-17
  • 打赏
  • 举报
回复
为MyEdit注册MouseOver这条消息的响应函数。
会思考的草 2005-04-17
  • 打赏
  • 举报
回复
two method.

1. subclass your editbox, process WM_MOUSEMOVE message in your class.
2. Use MFC message reflect.
fanqing 2005-04-17
  • 打赏
  • 举报
回复
void mybt::OnLButtonDown(UINT nFlags, CPoint point)
{
GetParent()->SendMessage(WM_LBUTTONDOWN,(WPARAM)MK_LBUTTON,(LPARAM)MAKELONG(point.x,point.y));
CButton::OnLButtonDown(nFlags, point);

}

将控件接收到消息转发给他的父窗口.
lyjlee 2005-04-17
  • 打赏
  • 举报
回复
简述如下:
1,新建一个CNCButton继承自CButton

2,添加成员:

BOOL m_bOver; //鼠标位于按钮之上时该值为true,反之为flase


3,添加消息:
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
afx_msg LRESULT OnMouseLeave(WPARAM wParam, LPARAM lParam);
afx_msg LRESULT OnMouseHover(WPARAM wParam, LPARAM lParam);


ON_WM_MOUSEMOVE()
ON_MESSAGE(WM_MOUSELEAVE, OnMouseLeave)
ON_MESSAGE(WM_MOUSEHOVER, OnMouseHover)


void CNCButton::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
if (!m_bOver)
{
TRACKMOUSEEVENT tme;
tme.cbSize = sizeof(tme);
tme.hwndTrack = m_hWnd;
tme.dwFlags = TME_LEAVE | TME_HOVER;
tme.dwHoverTime = 100;//100毫秒
///////////////////////////////////////////////////////////
BOOL m_bTracking = _TrackMouseEvent(&tme);
if (!m_bTracking)return FALSE;
///////////////////////////////////////////////////////////
}
CButton::OnMouseMove(nFlags, point);
}


LRESULT CNCButton::OnMouseLeave(WPARAM wParam, LPARAM lParam)
{
m_bOver = FALSE;
return 0;
}

LRESULT CNCButton::OnMouseHover(WPARAM wParam, LPARAM lParam)
{
m_bOver = TRUE;
AfxMessageBox("鼠标悬停100毫秒");
return 0;
}

注意在构造函数处将m_bOver = FALSE;

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧