• 逃跑按钮的实现


           最近没事在看孙鑫的VC视频教程,也想学学VC了,虽说自己是学嵌入式的,但嵌入式这条路没个少说5年的学习恐怕是不行的,再加上自己喜欢走软件道路,所以想学学VC呢,感觉挺有趣的。
           在第八课中有一个逃跑按钮的实现,不过在视频中是用两个按钮,依次一个显示,一个隐藏来实现的,后面孙鑫也提到了可以用SetWindowPos函数来实现一个坐标随机的逃跑按钮,但视频中没有给出实现过程,这里,我们来实现一下。
    1.建议一个基于Dialog的MFC程序,并在资源视图中删除原有的控件,再添加一个Button控件,并修改Caption属性为“你能抓到我吗?”,如图所示。
    2.如图所示,添加一个新的MFC类,基类选择CButton。
    3.在CBtnDlg类中为IDC_BUTTON1添加一个控件变量m_btn,如图所示。
    注:这里不明白为什么变量类型中不能选择我们刚刚创建的CPhBtn类,按理说这个类继承与CButton类,是可以选择的,不解,还请高人指点。
    因为无法直接选择CPhBtn类,但也可以在CBtnDlg类的代码中手动修改一下。
    在BtnDlg.h头文件中头部添加#include "PhBtn.h",且修改类成员CButton m_btn为CPhBtn m_btn,至此修改完毕。
    4.在CPhBtn类中添加WM_MOUSEMOVE消息响应函数捕捉鼠标移动的消息,并添加代码。
     
    1. void CPhBtn::OnMouseMove(UINT nFlags, CPoint point) 
    2.         // TODO: 在此添加消息处理程序代码和/或调用默认值        
    3.     CRect rectBtn; 
    4.         CRect rectDialog; 
    5.          
    6.         //获取按钮和对话框的尺寸坐标        
    7.         GetWindowRect(&rectBtn); 
    8.         GetParent()->GetWindowRect(&rectDialog); 
    9.         //将相对于屏幕的尺寸大小转换为相对于对话框窗口的        
    10.         ScreenToClient(rectBtn); 
    11.         ScreenToClient(rectDialog); 
    12.  
    13.         //获取一个相对于对话框大小的一个随机坐标        
    14.         int x = rand() % rectDialog.right; 
    15.         //保证整个按钮完整的显示在对话框内部        
    16.         if(x > rectDialog.right - rectBtn.right)     x -= rectBtn.right; 
    17.         int y = rand() % rectDialog.bottom; 
    18.         if(y > rectDialog.right - rectBtn.bottom)        y -= rectBtn.bottom; 
    19.  
    20.         //不改变尺寸,不改变Z次序        
    21.         SetWindowPos(NULL, x, y, 0, 0, SWP_NOSIZE | SWP_NOZORDER); 
    22.          
    23.         CButton::OnMouseMove(nFlags, point); 
    24. }  
     
    OK,一个真正的逃跑按钮完成了。
     
    ---------------------------------------------------------------------------------- 
    转载我博客文章郑重声明:技术性网站著名原创作者即可转载,商业性网站必须经过我的同意才能转载,否则追究责任——
    pang123hui的博客:
  • 相关阅读:
    css技巧和经验列表
    CSS3嵌入字体@font-face调用字体
    新闻列表单行滚动(多行显示)简洁向上滚动js效果
    打破构图的平衡!增强设计感染力
    何以双十(补昨天)
    MySQL5.7 基于二进制包的安装
    Nginx Log日志统计分析常用命令
    MySQL错误代码大全
    MVC4中的Display Mode简介
    ReadOnly关键字修饰的变量可以修改,只是不能重新分配
  • 原文地址:https://www.cnblogs.com/pang123hui/p/1947402.html
Copyright © 2020-2023  润新知