主题: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又把消息发到了哪去呢?
我正在看《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又把消息发到了哪去呢?