为Windows支持打印的任何应用程序应提供中止过程和无模式对话框,允许用户取消打印作业。示例应用程序的中止过程包含一个消息循环,该循环检索无模式对话框的消息。
BOOL CALLBACK AbortProc(HDC hdc, int nCode)
{
MSG msg;
/*
*从线程的消息中检索和删除消息
*队列。
*/
而(PeekMessage((LPMSG)& msg,(HWND)NULL,
0, 0, PM_REMOVE)) {
/ *处理“取消”对话框的任何消息。*/
if(!IsDialogMessage(hdlgCancel,(LPMSG)& msg)){
TranslateMessage((LPMSG) &msg);
DispatchMessage((LPMSG) &msg);
}
}
/*
*返回全局bPrint标志(设置为FALSE)
*如果用户按取消按钮)。
*/
return bPrint;
}
对于基于Win16的应用程序,此过程必须导出到应用程序的模块定义(.DEF)文件中。