MFC对话框响应按键的有关问题

MFC对话框响应按键的问题
对话框上有几个按钮,分别是1到5。按键1到5的时候响应相应的函数。
比如按键1,调用OnButton1函数,函数创建一个线程处理发送数据到串口,然后接收串口响应数据。
按键2也一样,只是发送到串口的数据不一样而已。
现在的问题是按了1之后再按2,那么执行OnButton1之后会接着再执行OnButton2。

有没有什么办法可以在执行OnButton1完成之前不响应按键消息啊?
过个1秒钟之后再接着响应按键消息?


------解决方案--------------------
加个标记,PreTranslateMessage里过滤WM_KEYDOWN,一个按键处理完成之后才重置该标记
------解决方案--------------------
最好的方法就是给线程关联一个数据队列,任何BUTTON数据都进入队列。
------解决方案--------------------
创建一个事件内核对象,在按钮2创建线程2后,将线程2挂起,等待事件。
在网上搜事件内核对象线程同步。
------解决方案--------------------
C/C++ code

//创建一个全局对象事件对象
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;
}
这样主线程就不会被挂起,可以响应鼠标或者其他消息。