打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
VC++定义光标热区,默认聚焦在某个按钮上

VC++定义光标热区,上网浏览网页时,当鼠标移动到屏幕的某一块区域(例如一幅图像或一个按钮)内时,鼠标指针变成了一只“手”,有时还会出现一些提示性的文字。这图像或按钮所在的区域就是光标热区。本例就介绍如何实现光标热区。编译并运行本例程序,如图所示,当鼠标光标放到图片和【Hot Button】按钮上时,鼠标光标形状呈手形,并在左下角显示提示文字。


VC++定义光标热区的例子

实现方法和思路:如果在窗口中设置鼠标光标,则Windows 会向当前窗口发送WM_SETCURSOR 消息。窗口接收
WM_SETCURSOR 消息并作相应的处理。在程序中我们通过判断鼠标光标当前位置来捕捉热区。如果鼠标光标位于热区内,则设置手形指针并显示提示文字。如果鼠标光标离开了热区,则恢复为原来的形状。程序代码为:
(1)利用AppWizard 创建基于对话框的应用程序HotCursor。
(2)将一个位图文件和手型鼠标指针文件用Import(导入)方式增加到该项目的资源文件中,分别给这两个资源指定ID 号为IDB_PIC 和IDC_HAND。
(3)对话框窗体中加入一个Picture(图像)控件,属性设置如下:ID=IDC_PICTURE、TYPE=Bitmap、Image=IDB_PIC,选中Visible、Group、Tabstop、Notify 这4 项;加入一个Button(按钮)控件,属性设置如下:ID=IDC_BUTTON1,选中Visible 和Tabstop 两项;加入一个Static Text(静态文本)控件,属性设置如下:ID=IDC_TEXT,不选中Visible 项。
(4)通过ClassWizard 响应WM_SETCURSOR 消息,其响应函数定义如下:

01BOOL CHotCursorDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
02{
03switch(pWnd->GetDlgCtrlID()) // 得到鼠标所在位置的控件的ID 号
04{
05case IDC_PICTURE: // 鼠标位于“热点”1(图像框)区域内
06{
07// 设置鼠标指针为“手”形指针
08SetCursor(AfxGetApp()->LoadCursor(IDC_HAND));
09// 将提示文字可见
10GetDlgItem(IDC_TEXT)->ShowWindow(SW_SHOW);
11// 显示“This is a picture!”一行字
12GetDlgItem(IDC_TEXT)->SetWindowText("This is a picture!");
13return TRUE;
14}
15break;
16case IDC_BUTTON1: //鼠标位于“热点”2(按钮)区域内
17{
18SetCursor(AfxGetApp()->LoadCursor(IDC_HAND));
19GetDlgItem(IDC_TEXT)->ShowWindow(SW_SHOW);
20// 显示“This is a button!”一行字
21GetDlgItem(IDC_TEXT)->SetWindowText("This is a button!");
22return TRUE;
23}
24break;
25default: // 鼠标离开了“热点”
26{
27// 将提示性文字隐藏
28GetDlgItem(IDC_TEXT)->ShowWindow(SW_HIDE);
29// 将鼠标指针设置为标准的鼠标指针
30SetCursor(AfxGetApp()->LoadStandardCursor(IDC_ARROW));
31return TRUE;
32}
33}
34return CDialog::OnSetCursor(pWnd, nHitTest, message);
35}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
自定义鼠标
设置鼠标外观
VC++6.0 设置光标(鼠标)形状的方法
MFC/VC中当鼠标经过按钮等控件时出现文字提示功能
mfc改变鼠标形状
VC制作简易flash播放器
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服