对话框上有几个按钮,分别是1到5。按键1到5的时候响应相应的函数。
比如按键1,调用OnButton1函数,函数创建一个线程处理发送数据到串口,然后接收串口响应数据。
按键2也一样,只是发送到串口的数据不一样而已。
现在的问题是按了1之后再按2,那么执行OnButton1之后会接着再执行OnButton2。有没有什么办法可以在执行OnButton1完成之前不响应按键消息啊?
过个1秒钟之后再接着响应按键消息?
比如按键1,调用OnButton1函数,函数创建一个线程处理发送数据到串口,然后接收串口响应数据。
按键2也一样,只是发送到串口的数据不一样而已。
现在的问题是按了1之后再按2,那么执行OnButton1之后会接着再执行OnButton2。有没有什么办法可以在执行OnButton1完成之前不响应按键消息啊?
过个1秒钟之后再接着响应按键消息?
禁用了这函数一样可以调用
按键直接调用该函数的。跟控件是否可用没关啊。
//创建一个全局对象事件对象
CEvent* m_Event;
//...
OnButton1()
{
m_Event=new CEvent(FASLE,FALSE);AfxBeginThread(ThreadFun1,...)//创建线程1
WatForSingleObject(m_Event.m_hObject,INFINITE);//等待事件
}OnButton2()
{
AfxBeginThread(ThreadFun2,...)//创建线程1
}
//全局函数或者类静态函数,线程1入口
ThreadFun1(LPVOID pParam)
{
.....
//函数返回以前将m_Event设为有信号
m_Event.SetEvent()
return 0;
}
这样主线程就不会被挂起,可以响应鼠标或者其他消息。
启用一个按钮的时候其他都置假
操作结束之后再射程真
进消息的时候先看这个变量
是假直接返回