void CCheckButtonDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
GetDlgItem(IDC_BUTTON1)->EnableWindow(FALSE);
m_myEdit=++i;
Sleep(1000);
UpdateData(FALSE);
GetDlgItem(IDC_BUTTON1)->EnableWindow(TRUE);
}
这是一个基于对话框的项目。
i是一个int全局变量,初始值为0. m_myEdit是一个int类型editControl.
我的小程序的目的就是点击一下按钮,编辑框里的数字就加1.
我想通过GetDlgItem(IDC_BUTTON1)->EnableWindow()来改变按钮是否可用。
但是,在第一次点击的时候,一切正常,按钮在变灰一秒后,又恢复可以点击了。但是以后再按,它就不会变灰,而是整个对话框都被占用了(关闭等按钮都无反应),程序仍能达到效果,但是为什么它不会每次都变灰呢?MFC对话框, 按钮,enablewindow

解决方案 »

  1.   

    你这个Sleep把主线程都挂起了 肯定主界面响应不了啊 第一次正常? 第一次你点击还能操作其他地方?你Sleep(10000)试试 看第一次正常不正常...
      

  2.   

    EnableWindow(FALSE)这个置为true呢?
      

  3.   

    updateData放sleep前面也不行啊,第二次以后就都不变灰了。
      

  4.   

    我现在的要求是点一次按钮,就变灰一秒,然后可以继续点,用timer不是变成自动的了么?
      

  5.   

    “点一次按钮,就变灰一秒”同时定时器打开,OnTimer 来时 按钮使能,KillTimer