"VS2008相关操作和代码:创建逃跑按钮与鼠标移动捕捉"
版权申诉
93 浏览量
更新于2024-02-19
收藏 860KB PDF 举报
了以下声明:
Button m_btn1;
Button m_btn2;
并在 mfc8_1Dlg.cpp 文件中进行相应的初始化:
m_btn1.SubclassDlgItem(IDC_BUTTON1, this);
m_btn2.SubclassDlgItem(IDC_BUTTON2, this);
4, 在 CButton 派生类中添加鼠标移动消息处理函数(图 3):
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
DECLARE_MESSAGE_MAP()
5, 在消息映射中添加消息映射宏:
ON_WM_MOUSEMOVE()
6, 在 OnMouseMove 函数中编写判断鼠标是否接触按钮的代码,如果接触则随机设置按钮的位置:
void CMyButton::OnMouseMove(UINT nFlags, CPoint point) {
CRect rect;
GetWindowRect(&rect);
ScreenToClient(&point);
if (rect.PtInRect(point)) {
int x = rand() % 600;
int y = rand() % 400;
SetWindowPos(NULL, x, y, 0, 0, SWP_NOSIZE | SWP_NOZORDER);
}
}
7, 在对话框类中添加 CMyButton 对象,并在 OnInitDialog 函数中添加初始化代码:
m_myBtn1.Create(_T("Run away"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, CRect(200, 200, 300, 230), this, IDC_BUTTON1);
m_myBtn2.Create(_T("Catch me if you can!"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, CRect(200, 200, 300, 230), this, IDC_BUTTON2);
m_myBtn1.ShowWindow(SW_SHOW);
m_myBtn2.ShowWindow(SW_HIDE);
// 使定时器消息生效SetTimer(1, 100, NULL);
至此,一个简单的逃跑按钮程序就完成了。通过移动鼠标来控制按钮的位置,使用户很难点击到按钮,增加了互动性和趣味性。
二、简易的翻转效果//添加一个按钮,单击后可以旋转按钮的文字1, 打开之前创建的 MFC 应用程序,在之前的对话框基础上添加一个按钮:添加按钮(图 4)2, 给按钮添加一个控件变量:添加控件变量(图 5)3,在按钮的单击消息处理函数中添加如下代码:
void CMyButtonDlg::OnBnClickedButton1() {
CString strText;
m_btn.GetWindowText(strText);
std::reverse(strText.GetBuffer(), strText.GetBuffer() + strText.GetLength());
m_btn.SetWindowText(strText);
}
通过将按钮的文本内容进行逆序处理,实现了一个简易的翻转效果。这种简单的操作可以增加按钮的趣味性,让用户在操作过程中感受到一些小惊喜。
三、自定义对话框背景颜色//改变对话框的背景颜色1, 打开之前创建的 MFC 应用程序,在资源视图中找到 IDD_MFC8_1_DIALOG 对话框2, 选中对话框,设置其中的 Background 颜色属性为你想要的颜色3, 在对话框类的 OnInitDialog 函数中添加如下代码来实现对话框的背景颜色:
CDialogEx::OnInitDialog();
// 设置此对话框的背景颜色
this->SetBackgroundColor(RGB(255, 255, 0));
return TRUE;
通过设置对话框的背景颜色,可以使界面更加美观和个性化。根据实际需要选择合适的颜色,能够让用户在使用过程中感到更加舒适和愉悦。
以上就是关于在 VS2008 中进行一些简单操作和代码的总结。通过对按钮的移动、文字翻转和对话框背景颜色的修改,可以让程序更加具有交互性和吸引力,为用户提供更好的体验。希望以上内容对您有所帮助,谢谢!
2023-05-26 上传
2019-12-10 上传
2023-08-21 上传
2022-07-14 上传
2023-06-01 上传
2013-01-14 上传
G11176593
- 粉丝: 6876
- 资源: 3万+
最新资源
- 火炬连体网络在MNIST的2D嵌入实现示例
- Angular插件增强Application Insights JavaScript SDK功能
- 实时三维重建:InfiniTAM的ros驱动应用
- Spring与Mybatis整合的配置与实践
- Vozy前端技术测试深入体验与模板参考
- React应用实现语音转文字功能介绍
- PHPMailer-6.6.4: PHP邮件收发类库的详细介绍
- Felineboard:为猫主人设计的交互式仪表板
- PGRFileManager:功能强大的开源Ajax文件管理器
- Pytest-Html定制测试报告与源代码封装教程
- Angular开发与部署指南:从创建到测试
- BASIC-BINARY-IPC系统:进程间通信的非阻塞接口
- LTK3D: Common Lisp中的基础3D图形实现
- Timer-Counter-Lister:官方源代码及更新发布
- Galaxia REST API:面向地球问题的解决方案
- Node.js模块:随机动物实例教程与源码解析