没有合适的资源?快使用搜索试试~ 我知道了~
MFC对按钮实现鼠标停留,按下,松开变换三种图片的按钮类
资源推荐
资源详情
资源评论
(1)新的按钮类的消息响应
在新的类里,按钮可以直接响应属于他自己的按钮消息,例如鼠标点击,鼠标移动,但是不响应鼠标移出。
使用:
if (GetCapture() != this)
{
this->SetCapture();
}
GetCapture,该函数取得捕获了鼠标的窗口(如果存在)的句柄。在同一时刻,只有一个窗口能捕获鼠标;此时,该窗口接收鼠标的 输入,无论光标是否在其范围内。
SetCapture();函数功能:该函数在属于当前线程的指定窗口里设置鼠标捕获。一旦窗口捕获了鼠标,所有鼠标输入都针对该窗口, 无论光标是否在窗口的边界内。同一时刻只能有一个窗口捕获鼠标。如果鼠标光标在另一个线程创建的窗口上,只有当鼠标键按 下时系统才将鼠标输入指向指定的窗口。
然后在合适的时机ReleaseCapture();
综上:当鼠标位于按钮范围内,触发了mousemove之后,获取此时鼠标属于的窗口,并把此时的按钮设置为获取鼠标信息的窗口;
此时,就只有这个按钮可以获取鼠标的信息,即可以响应如何位置的鼠标移动消息,当鼠标移出按钮范围时,把这个绑定
关系取消;
(2)只有重画按钮的时候才会触发按钮的void CMybutton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)函数
(3)图片显示逻辑:
用Now_btrack记录现在的状态,Bef_btrack记录上一态。鼠标移入,Now_btrac置1,鼠标移出Now_btrac置零。
当Now_btrack和Bef_btrack不同时,触发重画,并令上一态等于现在态,重画判断此时鼠标是否在按钮内,
是则显示选中图片,否显示常态图片
/*核心代码*/
void CMybutton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
CDC* pDC;
CRect rct;
pDC = CDC::FromHandle(lpDrawItemStruct->hDC);
资源评论
小·资
- 粉丝: 16
- 资源: 10
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功