"VS2008操作与代码: 定义捕获鼠标移动点的简单逃跑按钮"
版权申诉
181 浏览量
更新于2024-02-25
收藏 896KB DOCX 举报
#include "afxwin.h"
class CMyButton :
public CButton
{
public:
CMyButton();
~CMyButton();
BOOL m_bVisible;
BOOL m_bIsOn;
DECLARE_MESSAGE_MAP()
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnMouseHover(UINT nFlags, CPoint point);
afx_msg void OnMouseLeave();
};
BEGIN_MESSAGE_MAP(CMyButton, CButton)
ON_WM_MOUSEMOVE()
ON_WM_LBUTTONDOWN()
ON_MESSAGE(WM_MOUSEHOVER, OnMouseHover)
ON_MESSAGE(WM_MOUSELEAVE, OnMouseLeave)
END_MESSAGE_MAP()
CMyButton::CMyButton()
{
m_bVisible = TRUE;
m_bIsOn = FALSE;
}
CMyButton::~CMyButton()
{
}
void CMyButton::OnMouseMove(UINT nFlags, CPoint point)
{
if (!m_bIsOn)
{
CRect rect;
GetWindowRect(&rect);
ScreenToClient(&rect);
if (rect.PtInRect(point))
{
m_bIsOn = TRUE;
SetCursor(LoadCursor(NULL, IDC_HAND));
}
}
else
{
CButton::OnMouseMove(nFlags, point);
}
}
void CMyButton::OnLButtonDown(UINT nFlags, CPoint point)
{
if (m_bIsOn)
{
MessageBox(_T("逃跑成功!"));
}
}
void CMyButton::OnMouseHover(UINT nFlags, CPoint point)
{
if (!m_bIsOn)
{
SetCursor(LoadCursor(NULL, IDC_HAND));
}
}
void CMyButton::OnMouseLeave()
{
m_bIsOn = FALSE;
}
//在对话框类中添加成员变量
CMyButton m_btnEscape;
//在OnInitDialog()函数中添加代码
m_btnEscape.Create(_T("你能抓住我吗?"), WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON, CRect(100, 100, 200, 130), this, ID_ESCAPE_BUTTON);
m_btnEscape.ShowWindow(SW_HIDE);
//接下来就可以根据需要轮流显示隐藏按钮了
if (m_btnEscape.m_bVisible)
{
m_btnEscape.ShowWindow(SW_SHOW);
}
else
{
m_btnEscape.ShowWindow(SW_HIDE);
}
在这段代码中,我们创建了一个自定义的按钮类CMyButton,通过重写鼠标移动、鼠标点击等消息处理函数,在鼠标移动到按钮上时改变光标形状,并在点击按钮时弹出消息框表示“逃跑成功!”。然后在对话框类中添加了一个成员变量m_btnEscape,用于创建这个按钮,并在OnInitDialog()函数中初始化按钮并设置初始状态。最后根据需要轮流显示隐藏按钮。
这段代码实现了一个简单的逃跑按钮,让用户在程序界面上体验到一些趣味性。通过这个例子,我们也学习了如何在VS2008中创建自定义的按钮类,重写消息处理函数,以及控件的显示与隐藏等操作。希望这个例子对你有所帮助。
2023-12-18 上传
2024-10-05 上传
2022-11-07 上传
2018-03-09 上传
2021-09-14 上传
2023-04-04 上传
G11176593
- 粉丝: 6877
- 资源: 3万+
最新资源
- 俄罗斯RTSD数据集实现交通标志实时检测
- 易语言开发的文件批量改名工具使用Ex_Dui美化界面
- 爱心援助动态网页教程:前端开发实战指南
- 复旦微电子数字电路课件4章同步时序电路详解
- Dylan Manley的编程投资组合登录页面设计介绍
- Python实现H3K4me3与H3K27ac表观遗传标记域长度分析
- 易语言开源播放器项目:简易界面与强大的音频支持
- 介绍rxtx2.2全系统环境下的Java版本使用
- ZStack-CC2530 半开源协议栈使用与安装指南
- 易语言实现的八斗平台与淘宝评论采集软件开发
- Christiano响应式网站项目设计与技术特点
- QT图形框架中QGraphicRectItem的插入与缩放技术
- 组合逻辑电路深入解析与习题教程
- Vue+ECharts实现中国地图3D展示与交互功能
- MiSTer_MAME_SCRIPTS:自动下载MAME与HBMAME脚本指南
- 前端技术精髓:构建响应式盆栽展示网站