按钮无法响应

billy145533 2009-10-12 04:10:39
本人用vs2005+wm6 pro sdk开发一个程序,
程序开始运算前,一切正常
在开始后台处理后,由于运算量较大,程序对按钮单击这些事件都不响应了
通常在windows平台上都可以通过类似以下的代码可以解决的,但是在windows mobile上似乎不行

if ( PeekMessage(&msg, NULL, NULL,NULL, PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}

不知道有什么解决办法没有
...全文
108 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
billy145533 2009-10-14
  • 打赏
  • 举报
回复
if( PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ) )
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}
在mobile下用处似乎不大
使用多线程解决
wliaoc 2009-10-13
  • 打赏
  • 举报
回复
一开始没问题,运算量大了才有问题
是不是运算将内存都占用了引起卡机了?
leijunyuncyuyan 2009-10-13
  • 打赏
  • 举报
回复
可能是内存不够!
skynet000 2009-10-13
  • 打赏
  • 举报
回复
可能是运算量过大,卡住了。
另建线程,让OS来切换,比较可靠一些。
billy145533 2009-10-13
  • 打赏
  • 举报
回复
点一次开始,再点一次就是关闭,这个程序中当然是有区分
这和加不加按钮没有关系
问题运算开始后,界面就死掉了,不再响应外部输入
程序并没有死掉
xunjingzhpu 2009-10-13
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 jgj58 的回复:]
引用 6 楼 billy145533 的回复:
点一次开始,再点一次就是关闭,这个程序中当然是有区分
这和加不加按钮没有关系
问题运算开始后,界面就死掉了,不再响应外部输入
程序并没有死掉


你说的界面“死掉”可能是运算大也可能是你的程序有问题。让你加个按钮目的是终止这个正在运行的线程。不用多线程,老想界面和后台都在一个线程里还不出现那样的情况,貌似不可能的。
你所说那 
                if( PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ) )
                {
                    TranslateMessage( &msg );
                    DispatchMessage( &msg );
                }
应该可以用的,有人在mobile用过了。
[/Quote]
说得对,多线程就能解决的问题搞那么复杂干嘛
jgj58 2009-10-13
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 billy145533 的回复:]
点一次开始,再点一次就是关闭,这个程序中当然是有区分
这和加不加按钮没有关系
问题运算开始后,界面就死掉了,不再响应外部输入
程序并没有死掉
[/Quote]

你说的界面“死掉”可能是运算大也可能是你的程序有问题。让你加个按钮目的是终止这个正在运行的线程。不用多线程,老想界面和后台都在一个线程里还不出现那样的情况,貌似不可能的。
你所说那
if( PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ) )
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}
应该可以用的,有人在mobile用过了。
jgj58 2009-10-12
  • 打赏
  • 举报
回复
你点一次程序就开始运算,你在点一次不还是发同样的运算消息,也就是说又启动一次运算?
能否给大家讲讲你是如何让计算机分清这两次点击的关系? 另外可能你的程序进入死循环?
不方便用多线程,加一个停止按钮,杀死这个线程,呵呵。
billy145533 2009-10-12
  • 打赏
  • 举报
回复
是这样的,界面只有一个按钮
点一次开始运算,再点一次就停止运算
问题是点了一次开始后,就无法点停止了
不方便使用多线程
ProgrammerNO1 2009-10-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xunjingzhpu 的回复:]
运算代码是否在另一个线程中进行?如果不是试下线程应该没问题,线程中加sleep()
[/Quote]
1, 先别这样麻烦吧
2, LZ跟下,看在执行哪部分会这么长延时?
儿大不由爷 2009-10-12
  • 打赏
  • 举报
回复
不要再界面的消息处理中做复杂的操作,还是另启动线程处里吧
xunjingzhpu 2009-10-12
  • 打赏
  • 举报
回复
运算代码是否在另一个线程中进行?如果不是试下线程应该没问题,线程中加sleep()

19,500

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧