如何用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制作一个按钮,第一次按下,再按一次弹起的主要内容,如果未能解决你的问题,请参考以下文章
unity3d如何使物体一直旋转 ,既按下按键后物体一直旋转,再按一次则停止,切换两种旋转速度时不冲突