trent
驱动老牛
驱动老牛
  • 注册日期2002-03-01
  • 最后登录2014-09-18
  • 粉丝0
  • 关注0
  • 积分61分
  • 威望185点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
阅读:1489回复:4

如何结束程序

楼主#
更多 发布于:2002-04-25 11:33
我在VxD中用VWIN32_QueueUserApc()函数触发应用程序的回调函数
而在应用程序中用while(1) SleepEx(INFINITE,TRUE);等待.
在dos界面下用ctrl+c退出程序.但在VC++中,会不会死循环?
用什么办法结束程序?
我不仅要金子,我还要点石成金的手指!
zydcat
驱动老牛
驱动老牛
  • 注册日期2001-12-06
  • 最后登录2006-04-12
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-04-25 11:37
会死循环的
你最好不要在SleepEx(INFINITE,TRUE)用INFINITE
使用个确定的时间值,如1000
[color=red]肥虫虫[/color] [img]http://www.driverdevelop.com/forum/upload/bradley/2002-11-15_ig01.gif[/img]
zydcat
驱动老牛
驱动老牛
  • 注册日期2001-12-06
  • 最后登录2006-04-12
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-04-25 11:46
sorry,上面说的不对,
vc++中会死循环,但是问题是在你的while(1)中,
应该不需要使用循环,只要将主线程sleepex就可以了,第一个参数为INFINITE,
这样直到你的vxd调用了你应用程序的回调函数后,主线程会被自动唤醒。
[color=red]肥虫虫[/color] [img]http://www.driverdevelop.com/forum/upload/bradley/2002-11-15_ig01.gif[/img]
trent
驱动老牛
驱动老牛
  • 注册日期2002-03-01
  • 最后登录2014-09-18
  • 粉丝0
  • 关注0
  • 积分61分
  • 威望185点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-04-25 12:12
如果不要while(1),是不是回调一次就结束.是不是设一个
bool型变量如aa来控制;然后while(aa)...?

by the way,VC中时延好像用不了delay函数(#include <dos.h>好像不行),那用什么?
我不仅要金子,我还要点石成金的手指!
zydcat
驱动老牛
驱动老牛
  • 注册日期2001-12-06
  • 最后登录2006-04-12
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-04-25 13:06
应该是回调一次就结束
在vc中最好不要在主线程中进行这类循环,否则你的窗口就无法响应事件了,重新开一个线程吧。
vc中的延时就是sleep()和sleepex()
[color=red]肥虫虫[/color] [img]http://www.driverdevelop.com/forum/upload/bradley/2002-11-15_ig01.gif[/img]
游客

返回顶部