Any application written for Windows that supports printing should provide an abort procedure and a modeless dialog box that allow a user to cancel a print job. The abort procedure for the sample application contains a message loop that retrieves messages for the modeless dialog box.
BOOL CALLBACK AbortProc(HDC hdc, int nCode)
{
MSG msg;
/*
* Retrieve and remove messages from the thread's message
* queue.
*/
while (PeekMessage((LPMSG) &msg, (HWND) NULL,
0, 0, PM_REMOVE)) {
/* Process any messages for the Cancel dialog box. */
if (!IsDialogMessage(hdlgCancel, (LPMSG) &msg)) {
TranslateMessage((LPMSG) &msg);
DispatchMessage((LPMSG) &msg);
}
}
/*
* Return the global bPrint flag (which is set to FALSE
* if the user presses the Cancel button).
*/
return bPrint;
}
For Win16-based applications, this procedure must be exported in the application's module-definition (.DEF) file.