回 帖 发 新 帖 刷新版面

主题:AbortProc中的消息循环

您好!

我正在看《windows程序设计》“使用打印机”一章。书中说为了便于用户随时中止打印,windows提供SetAbortProc 来引出一个AbortProc回调函数。AbortProc返回TRUE表示可继续打印,返回FALSE的话windows就会中止打印。

BOOL CALLBACK AbortProc (HDC hdcPrn, int iCode)       
{     
   MSG   msg ;
   while (PeekMessage (&msg, NULL, 0, 0, PM_REMOVE))
   {
     TranslateMessage (&msg) ;
        
     DispatchMessage (&msg) ;
   }
   return TRUE ;
}
MSDN中说AbortProc是SetAbortProc的回调函数:“The AbortProc function is an application-defined callback function used with the SetAbortProc function.”

我的认识回调函数是处理主函数接收到的消息的。比如WndProc回调函数处理WinMain主函数接收到的消息。消息循环位于WinMain中向WndProc发送消息。

这个AbortProc函数的参数和一般的CALLBACK函数不一样,更重要的是,WinMain函数中已有了消息循环,我实在不能理解AbortProc里面的PeekMessage消息循环是干什么用的,它从哪接收消息?DispatchMessage又把消息发到了哪去呢?

回复列表 (共3个回复)

沙发

[quote]我实在不能理解AbortProc里面的PeekMessage消息循环是干什么用的,它从哪接收消息?[/quote]
阻塞调用它的线程,从当前线程中取得消息:PeekMessage (&msg, NULL, 0, 0, PM_REMOVE)
发送到线程默认消息处理过程.

板凳

寻找一直寻找机会的人!
一个趋势中的趋势的项目!
一个直销和传销终结者的项目!
一个帮助普通创业者成功的项目!
   我们在互联网上正在拓展一个生意项目,现在正在寻求合作伙伴。我们认为成功的关键是你是什么人?还有你和谁在一起。我们在乎的是--您是否是有激情、有梦想的人。有意者请跟我们联系,我们和您谈谈,给您讲解一些生意概念,或许我们可以合作。一个集即时网游、交友,娱乐游戏,网络品牌代理商城,互联网平台项目招商进行中……详情QQ空间资料 http://user.qzone.qq.com/909065437/infocenter
网商咨询 摩客天宇QQ 909065437 

3 楼

北京法蕾雅竹元诚
空白市场 兆亿商机 第一批卖电脑的发了! 第一批卖手机的发了!! 第一批卖保暖内衣的也发了!!! 抢占先机 您将是第一批卖生态家纺竹纤维产品的人!!!! 法蕾雅生态家纺全国招商咨询QQ294355161 科技之光传访法蕾雅http://player.youku.com/player.php/sid/XMTc2MzY4MjQ0/v.swf

http://blog.sina.com.cn/s/blog_6ca0216a0100n7h9.html
法蕾雅竹纤维的神奇六大功效

我来回复

您尚未登录,请登录后再回复。点此登录或注册