基于对话框的程序运行后,其他的控件都不响应鼠标单击事件了
求助:基于对话框的程序运行后,其他的控件都不响应鼠标单击事件了
如题,建立了一个基于对话框的程序,里面有各种控件,画图的,不同程序的按钮,还有编辑框,滑块。现在的问题是,按下任意一个运行程序的按钮后,其他的编辑框,按钮和滑块就不能响应鼠标单击了,请问是为什么呢?
我想在程序运行后,在编辑框中输入值,改变程序里的变量,却发现,所有的控件都不能动了,画图的还在实时显示,单步调试,程序也在正常运行着。
怀疑是由于sleep或ontimer导致的,于是试着把其中一个按钮对应的程序改成简单的加减法,不调用其它的程序,运行后,还是一样,其他的控件都不能用鼠标控制了。
请各位帮我分析一下原因,万分感谢!
------解决思路----------------------
界面中的所有控件的响应的动作都是放在一个队列中被顺序执行(消息队列),你的按钮的执行任务如果死在里面,那么其它的控件就无法响应。 所以、。。。。。。
------解决思路----------------------
把你程序中的循环注释掉试试。影响UI的循环要放到单独的线程中进行,否则会造成界面假死。
------解决思路----------------------
请在运行程序的循环中每隔比如200毫秒,插入消息循环:
如题,建立了一个基于对话框的程序,里面有各种控件,画图的,不同程序的按钮,还有编辑框,滑块。现在的问题是,按下任意一个运行程序的按钮后,其他的编辑框,按钮和滑块就不能响应鼠标单击了,请问是为什么呢?
我想在程序运行后,在编辑框中输入值,改变程序里的变量,却发现,所有的控件都不能动了,画图的还在实时显示,单步调试,程序也在正常运行着。
怀疑是由于sleep或ontimer导致的,于是试着把其中一个按钮对应的程序改成简单的加减法,不调用其它的程序,运行后,还是一样,其他的控件都不能用鼠标控制了。
请各位帮我分析一下原因,万分感谢!
------解决思路----------------------
界面中的所有控件的响应的动作都是放在一个队列中被顺序执行(消息队列),你的按钮的执行任务如果死在里面,那么其它的控件就无法响应。 所以、。。。。。。
------解决思路----------------------
把你程序中的循环注释掉试试。影响UI的循环要放到单独的线程中进行,否则会造成界面假死。
------解决思路----------------------
请在运行程序的循环中每隔比如200毫秒,插入消息循环:
MSG msg;
if (GetMessage(&msg,NULL,0,0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}