VC让鼠标指到按钮上变成手型

2023-11-11 11:18
文章标签 鼠标 按钮 变成 vc 手型

本文主要是介绍VC让鼠标指到按钮上变成手型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

两种方法: 
1、派生一个CButton类,然后重载OnSetCursor函数,在里面 
使用SetCursor函数设置鼠标指针。 
然后删除 
return CButton::OnSetCursor(pWnd, nHITTest, message); 
改成 
return TRUE; 例如:
BOOL   CMyButton::OnSetCursor(CWnd*   pWnd,   UINT   nHITTest,   UINT   message)     {   ::SetCursor(::LoadCursor(NULL,   MAKEINTRESOURCE(IDC_HAND)));   return   TRUE;   } 2、直接在程序里,响应WM_MOUSEMOVE消息,在里面判断鼠标指针是否指到了按钮上,是的话就用SetCursor函数设置鼠标指针,离开再设回以前的指针
 
[cpp] view plaincopy
print?
  1. void CbpmDlg::OnMouseMove(UINT nFlags, CPoint point)  
  2. {  
  3.     // TODO: 在此添加消息处理程序代码和/或调用默认值  
  4.     CRect adbanerRect;  
  5.     CRect  btnSelectPathRect;  
  6.     CRect  btnStartRect;  
  7.     m_GifPic.GetWindowRect(&adbanerRect);  
  8.     m_btnSelectPath.GetWindowRect(&btnSelectPathRect);  
  9.     m_btnStart.GetWindowRect(&btnStartRect);  
  10.   
  11.     //如何鼠标在广告位置或按钮上,改变鼠标指针  
  12.     if(adbanerRect.PtInRect(point)||btnSelectPathRect.PtInRect(point)||btnStartRect.PtInRect(point))  
  13.     SetCursor(AfxGetApp()->LoadStandardCursor(IDC_HAND));  
  14.   
  15.     CDialog::OnMouseMove(nFlags, point);  
  16. }  
光有上面一个函数还是不行的,还需要重载CWnd类的虚拟函数PreTranslateMessage()
 
[cpp] view plaincopy
print?
  1. BOOL CbpmDlg::PreTranslateMessage(MSG *pMsg)  
  2. {  
  3.     if(pMsg->message == WM_MOUSEMOVE)  
  4.     {  
  5.         OnMouseMove(pMsg->wParam,pMsg->pt);  
  6.     }  
  7.     return CDialog::PreTranslateMessage(pMsg);  

                                    

这篇关于VC让鼠标指到按钮上变成手型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/389669

相关文章

韦季李输入法_输入法和鼠标的深度融合

在数字化输入的新纪元,传统键盘输入方式正悄然进化。以往,面对实体键盘,我们常需目光游离于屏幕与键盘之间,以确认指尖下的精准位置。而屏幕键盘虽直观可见,却常因占据屏幕空间,迫使我们在操作与视野间做出妥协,频繁调整布局以兼顾输入与界面浏览。 幸而,韦季李输入法的横空出世,彻底颠覆了这一现状。它不仅对输入界面进行了革命性的重构,更巧妙地将鼠标这一传统外设融入其中,开创了一种前所未有的交互体验。 想象

VC网络协议

// PCControlDlg.cpp : 实现文件//#include "stdafx.h"#include "PCControl.h"#include "PCControlDlg.h"#include "afxdialogex.h"#ifdef _DEBUG#define new DEBUG_NEW#endif// 用于应用程序“关于”菜单项的 CAboutDlg 对话框#ifde

Unity3D自带Mouse Look鼠标视角代码解析。

Unity3D自带Mouse Look鼠标视角代码解析。 代码块 代码块语法遵循标准markdown代码,例如: using UnityEngine;using System.Collections;/// MouseLook rotates the transform based on the mouse delta./// Minimum and Maximum values can

简单的角色响应鼠标而移动

actor类 //处理移动距离,核心是找到角色坐标在世界坐标的向量的投影(x,y,z),然后在世界坐标中合成,此CC是在地面行走,所以Y轴投影始终置为0; using UnityEngine; using System.Collections; public class actor : MonoBehaviour { public float speed=0.1f; CharacterCo

C# 防止按钮botton重复“点击”的方法

在使用C#的按钮控件的时候,经常我们想如果出现了多次点击的时候只让其在执行的时候只响应一次。这个时候很多人可能会想到使用Enable=false, 但是实际情况是还是会被多次触发,因为C#采用的是消息队列机制,这个时候我们只需要在Enable = true 之前加一句 Application.DoEvents();就能达到防止重复点击的问题。 private void btnGenerateSh

PNG透明背景按钮的实现(MFC)

问题描述: 当前要在对话框上添加一个以两个PNG图片作为背景的按钮,PNG图的背景是透明的,按钮也要做出相同的透明效果。并且鼠标不在按钮上时,按钮显示"bg1.png";鼠标移动到按钮上时,按钮显示"bg2.png" 开发环境为VS2010。 解决办法: 使用GDI+库装载PNG图片,并使用MFC Button Control和CMFCButton类结合,调用CMFCButton

VC环境下字符串转整型最终版

剑指Offer 字符串转化为整型 今天闲来无事,就搜了下这方面的知识,结果发现,这个题就是一个经典的算法题,在剑指Offer里已经详细分析了 直接上代码了,运行可靠,如果大家继续深入理解的话,参考这本书:《剑指Offer——名企面试官精讲典型编程题》 博主:http://blog.csdn.net/cadcisdhht/article/details/36875535 ---------

VC环境下window网络程序:UDP Socket程序

最近在学Windows网络编程,正好在做UDPsocket的程序,贴上来: 服务器框架函数:              socket();    bind();    recfrom();  sendto();  closesocket(); 客户机框架函数:            socket();      recfrom();  sendto();  closesocket();

VC环境下整型转换为字符串型(2)

在串口下位机的发送中,可能会用到需要发送数字,显示为字符串型的 和上一篇文字《串口中字符串转换为整型》一正一反,知识点学习会了: #include<iostream.h> #include <stdio.h> #include <string.h>   void inttostr(int m,unsigned char * str) { int length=0;   int tmp,te

龙芯+FreeRTOS+LVGL实战笔记(新)——05部署主按钮

本专栏是笔者另一个专栏《龙芯+RT-Thread+LVGL实战笔记》的姊妹篇,主要的区别在于实时操作系统的不同,章节的安排和任务的推进保持一致,并对源码做了改进和优化,各位可以先到本人主页下去浏览另一专栏的博客列表(目前已撰写36篇,图1所示),再决定是否订阅。此外,也可以前往本人在B站的视频合集(图2所示)观看所有演示视频,合集首个视频链接为: 借助RT-Thread和LVGL