MFC 如何判断鼠标指针在按钮控件内

nh0583024120 2008-07-28 06:56:10
MFC 如何判断鼠标指针在控件内
想弄个按钮 鼠标在按钮内 按钮就改变贴图 不知如何判断指针
...全文
1140 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
www_OK2002_com 2009-09-25
  • 打赏
  • 举报
回复
学习
nh0583024120 2008-07-29
  • 打赏
  • 举报
回复
多谢各位大侠指教 小弟刚接触MFC 资料也不全 能不能用下实例
以下面为例
class CPlayerDlg : public CDialog
{
//略
CBitmapButton m_play;
//略
}
nh0583024120 2008-07-29
  • 打赏
  • 举报
回复
无论是WM_MOUSEMOVE还是wndProc(...) 跪求可行实例
长安宁 2008-07-29
  • 打赏
  • 举报
回复
你直接在wndProc(...)里面捕捉消息;
nh0583024120 2008-07-29
  • 打赏
  • 举报
回复
void CMP3PlayerDlg::OnMouseMove(UINT nFlags, CPoint point)
{
CRect rect;
m_play.GetWindowRect(&rect);
if(rect.PtInRect(point)) m_play.LoadBitmaps(IDB_BITMAPOPEN1);
CDialog::OnMouseMove(nFlags, point);
}

这样好像不行 高人指教啊
nh0583024120 2008-07-29
  • 打赏
  • 举报
回复
小弟我用对话框做了个MP3播放器 想鼠标悬停在按钮上的时候改变按钮的图
能不能给个实例 小弟我太菜了
sailfar 2008-07-29
  • 打赏
  • 举报
回复
CButton也会处理WM_MOUSEXX和按钮消息的, 但是默认发向了自己的父窗口, 要做个性化的Button或者其他控件, 两个方法:
1.派生这些控件, 然后实现对响应消息的响应.
2.在父窗口的消息响应函数里面, 实现控件方面的定制渲染, 如控件颜色可以在OnCtlColor中进行个性化的设置等.

你在网上搜, CButton 修改 背景色, 很多这方面的资料, 你的问题跟这个差不多, 应该可以举一反三的搞过来.
fengogo 2008-07-29
  • 打赏
  • 举报
回复
惭愧,学了一段时间windows程序设计,对楼主的问题还是没反应过来. 只好再去翻书.
要解决这个问题, 首先想到button来处理鼠标移入移出的消息. 而一般做为子窗口的控件, 只会对其父窗口发送wm_command消息,该消息中只包含了
点击,获得/失去焦点等事件. 怎么办,书上介绍了一种窗口子类化的方法. 用SetWindowLong函数将子控件的WndProc改为自己写的函数. 此时在自己写的函数中就可以接收到所有的窗口消息了,包括WM_MOUSEMOVE等. 如何判断移入移出, 这又是另外一个问题了,记忆中没有MOVEIN与MOVEOUT之类的消息.
sailfar 2008-07-29
  • 打赏
  • 举报
回复
记不太清了, 你在判断点是否在控件区域的时候是不是应该加上窗口到客户区的转换.
先用一个messagebox看看是不是真的有效.
还有一般修改button的背景图片什么的, 应该在onpaint或者父窗口的onctlcolor里面对相应控件进行修改.
thankall 2008-07-28
  • 打赏
  • 举报
回复
派生CButton类,响应WM_MOUSEMOVE方法,在方法内得到按钮所在的矩形区域CRect,然后使用CRect的成员方法PtInRect就可以检查出当前光标的位置是否在按钮上,
如果是的话就改变图片,如果不是就返回。

这个应该可以实现吧。
jay的Fans 2008-07-28
  • 打赏
  • 举报
回复
自己继承CButon类,然后处理WM_MOUSE事件,然后使用子类化不就行了。
sailfar 2008-07-28
  • 打赏
  • 举报
回复
继承CButton类, 实现WM_MOUSE_XX消息的响应
nh0583024120 2008-07-28
  • 打赏
  • 举报
回复
大侠 麻烦帮我找找详细点 这样没办法解决啊
机智的呆呆 2008-07-28
  • 打赏
  • 举报
回复
GetCursorPos?
机智的呆呆 2008-07-28
  • 打赏
  • 举报
回复
有个api能得到鼠标当前位置的坐标,具体是什么记不清了,然后判读鼠标在不在控件的区域内就行了

65,206

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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