zoukankan      html  css  js  c++  java
  • 对话框捕获鼠标移动消息,实现“逃跑按钮”

    在弹出的对话框上显示逃跑按钮,当鼠标移动到该按钮上时,该按钮隐藏,而在别的位置上显示一个一模一样的按钮,鼠标再次置于新按钮上时,该按钮再次隐藏而在另一位置显示,用户感觉按钮好像在自动逃跑移动;

    1、新建一个基于对话框的MFC工程,将其资源窗口的对话框中的自带控件删除,在不同位置添加两个一模一样的按钮控件

      

    2、此处需要让按钮来捕获鼠标移动的消息,但是该对话框中有两个一样的按钮,故需要创建一个派生于CButton类的新的类CNewButton,为两个按钮控件分别添加成员变量并与CNewButton类关联

      

      

      

      会弹出提示框,要在CTestDlg类的头文件中包含CNewButton类的头文件--“NewButton.h”;

      在类窗口的CNewButton类上右击添加WM_MOUSEMOVE的消息响应函数:

      

      在CNewButton类中添加成员变量:CNewButton* m_pBtn,因两个按钮的成员变量均关联至CNewButton类,故两个按钮对象内部均有了m_pBtn变量,利用此变量互相指向对方的首地址;在CTestDlg类的OnInitDialog函数中先互相将对方的首地址交换保存,当对话框显示后捕获到鼠标移动到一个按钮上时,此时该按钮的m_pBtn指向的已是对方的首地址了,再用m_pBtn调ShowWindow函数即显示对方按钮了; 

    BOOL CTestDlg::OnInitDialog()
    {
        ......  
        // TODO: Add extra initialization here
    
        m_btn1.m_pBtn=&m_btn2;
        m_btn2.m_pBtn=&m_btn1;
        
        return TRUE;  // return TRUE  unless you set the focus to a control
    }
    
    void CNewButton::OnMouseMove(UINT nFlags, CPoint point) 
    {
        // TODO: Add your message handler code here and/or call default
        ShowWindow(SW_HIDE);
        m_pBtn->ShowWindow(SW_SHOW);
    
        CButton::OnMouseMove(nFlags, point);
    }
    

      要在弹出对话框时只显示一个按钮,将另一个按钮的属性中的“可见”去掉即可;

      可利用SetWindowPos函数设置按钮在屏幕上移动的位置;

  • 相关阅读:
    Android调用浏览器打开网址遇到的问题
    TexturePacker压缩png的命令
    碎碎念
    推荐几款API文档集合工具
    XCode打包脚本
    Android手机提示“未安装应用程序”
    移动环境下DNS解析失败后的优化方案
    7z压缩与解压命令
    Lua的文件操作
    IOS判断用户的网络类型(2/3/4G、wifi)
  • 原文地址:https://www.cnblogs.com/zhouwanqiu/p/6918824.html
Copyright © 2011-2022 走看看