Общие сведения.
Сейчас я пытаюсь выполнить печать через GDI Print API и выглядит следующим образом:
StartDoc(hDC,&docinfo)
foreach page in page_buf
StartPage(hDC)
/* write the page to printer DC */
EndPage(hDC)
EndDoc(hDC)
Проблема:
Во время печати появлялся значок в области уведомлений, и при нажатии на него появлялось небольшое окно, показывающее текущие задания на печать на указанном принтере.
При нажатии правой кнопкой мыши. на задании на печать и выбрав Cancel
, задание на печать будет отменено. Но мое приложение продолжает отправлять данные на контроллер домена принтера до тех пор, пока все страницы не будут обработаны, а статус продолжает показывать Deleting - Spooling
до завершения.
Я хочу остановить процедуру печати сразу после ее отмены.
Что я пробовал:
1. Сначала я подумал, что содержимое устройства станет недействительным после отмены задания (это, конечно, неверно), и попытался проверить возвращаемые значения StartPage
и EndPage
. Затем я обнаружил, что они оба не выходят из строя после отмены задания на печать.
2. Я также пробовал SetAbortProc
и DocumentEvent
и обнаружил, что это не то, что мне нужно.
Но я полагаю, что должен быть какой-то механизм, чтобы указать мое приложение, когда задание на печать отменено. Будем признательны, если кто-то попытается помочь.