如何用MFC制作一个按钮,第一次按下,再按一次弹起

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用MFC制作一个按钮,第一次按下,再按一次弹起相关的知识,希望对你有一定的参考价值。

学VC++时间还不长
被要求做一个按钮如题,可是不管用CButton还是CBitmapButton
都只能做出按下无法弹起或按下始终弹起

不知道有哪位高手能指教
希望能提供一些思路和可能会用到的函数 谢谢

选择 Check Box控件然后按图选中椭圆圈注的属性

然后可以添加单击事件

 CButton* but = (CButton*)GetDlgItem(IDC_CHECK5);

 if (but->GetCheck())

 

  MessageBox("按下");

 

 else

 

  MessageBox("弹起");

 

//就可以出现想要的结果了

参考技术A 兄弟,我不知道你到底学到哪了。不好把握到底该详细说还是说关键点。说的啰嗦点。
用SetState;
我假设你是用的Button控件。资源为IDC_BUTTON1,在MFC classWized->Member Variables -》Control IDS中IDC_BUTTON1添加
TYPE为CButton,Member为m_b.
为控件添加响应函数OnButton1(),
添加代码如下;
bool b=1;
void CFsaefwefDlg::OnButton1()

// TODO: Add your control notification handler code here
m_b.SetState(b); //关键部分
b=!b;

PS:bool b=1;写得不标准。你还是写到FsaefwefDlg.h中。
我试过了可以实现
参考技术B x.h:
bool isPress;
----------------------------------------------------
x.cpp:
构造函数中:
isPress=False;

在消息宏中添加左键单击的函数中:
if(isPress)

...//画按下去的按钮图

else

...//画未按下去的按钮图
参考技术C 这个很简单,使用CButton的SetState函数控制button的状态

再按一次退出程序的实现

重写返回按键的方法:(个人认为这是最简单的)

用一个参数来纪录按下按键的返回时间,与上一次作比较。

    private long exitTime = 0;
    @Override
    public void onBackPressed() {
        if ((System.currentTimeMillis() - exitTime) > 2000) {//判断此次按键于上一次按键的时间差是否>2s
            Toast.makeText(MainActivity.this, "再按一次退出应用", Toast.LENGTH_SHORT).show();
            exitTime = System.currentTimeMillis();//纪录这次按键的时间,下次有用
            return;//时间差大于2s,退出返回事件
        }
        finish();//时间差小于2s,销毁
    }

 

以上是关于如何用MFC制作一个按钮,第一次按下,再按一次弹起的主要内容,如果未能解决你的问题,请参考以下文章

Javascript:使用切换按钮隐藏和显示 div 标签

再按一次退出程序的实现

unity3d如何使物体一直旋转 ,既按下按键后物体一直旋转,再按一次则停止,切换两种旋转速度时不冲突

delphi button如何实现按键按下暂停 再按下启动

51单片机(CC2530)发送按键次数到串口助手显示 实现功能:按1次按键 串口助手显示1 再按一次 显示2 以此

MFC按钮控件按下和弹起的消息函数分别是啥啊