diff options
Diffstat (limited to 'Linux_C_12/cCrossCallPrinter_121.c')
-rw-r--r-- | Linux_C_12/cCrossCallPrinter_121.c | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/Linux_C_12/cCrossCallPrinter_121.c b/Linux_C_12/cCrossCallPrinter_121.c new file mode 100644 index 0000000..593d736 --- /dev/null +++ b/Linux_C_12/cCrossCallPrinter_121.c @@ -0,0 +1,121 @@ +/********************************************************************************************
+ Clean OS Windows library module version 1.2.1.
+ This module is part of the Clean Object I/O library, version 1.2.1,
+ for the Windows platform.
+********************************************************************************************/
+
+/********************************************************************************************
+ About this module:
+ Routines related to printer handling.
+********************************************************************************************/
+
+#include "cCrossCallPrinter_121.h"
+
+#if 0
+
+#include "cCrossCall_121.h"
+#include "cprinter_121.h"
+
+extern BOOL bUserAbort;
+extern HWND hDlgPrint; /* MW: hDlgPrint is the handle of the "Cancel Printing" dialog. */
+extern HWND hwndText; /* MW: hwndText is the handle of the page count text in the dialog. */
+
+
+/* Cross call procedure implementations.
+ Eval<nr> corresponds with a CrossCallEntry generated by NewCrossCallEntry (nr,Eval<nr>).
+*/
+void EvalCcRqDO_PRINT_SETUP (CrossCallInfo *pcci)
+{ int ok;
+ PRINTDLG *pdPtr;
+ printSetup(0, pcci->p1,
+ (char*) pcci->p2, (char*) pcci->p3, (char*) pcci->p4, (char*) pcci->p5,
+ &ok, &pdPtr);
+ MakeReturn2Cci (pcci, ok, (int) pdPtr);
+}
+
+void EvalCcRqGET_PRINTER_DC (CrossCallInfo *pcci)
+{ int doDialog,emulateScreenRes,
+ err,first,last,copies,pPrintDlg,deviceContext;
+
+ // unpack doDialog and emulateScreenRes
+ doDialog = (pcci->p1) & 1;
+ emulateScreenRes = (pcci->p1) & 2;
+
+ getDC( doDialog,emulateScreenRes,FALSE,pcci->p2,
+ (char*) pcci->p3,(char*) pcci->p4,(char*) pcci->p5,(char*) pcci->p6,
+ &err,&first,&last,&copies,(PRINTDLG**)&pPrintDlg,&deviceContext);
+ MakeReturn6Cci (pcci,err,first,last,copies,pPrintDlg,deviceContext);
+}
+
+void EvalCcRqSTARTDOC (CrossCallInfo *pcci)
+{
+ HDC hdc = (HDC) pcci->p1;
+ int err;
+
+ EnableWindow (ghMainWindow, FALSE) ;
+ hDlgPrint = CreateCancelDialog ();
+ SetAbortProc (hdc, AbortProc) ;
+ err = startDoc((int) hdc);
+ if (err<=0 && ghMainWindow!=NULL && !bUserAbort)
+ {
+ EnableWindow (ghMainWindow, TRUE) ;
+ DestroyWindow (hDlgPrint) ;
+ };
+ MakeReturn1Cci (pcci,err);
+}
+
+void EvalCcRqENDDOC (CrossCallInfo *pcci)
+{
+ HDC hdc = (HDC) pcci->p1;
+
+ endDoc((int) hdc);
+ if (ghMainWindow!=NULL && !bUserAbort)
+ {
+ EnableWindow (ghMainWindow, TRUE) ;
+ DestroyWindow (hDlgPrint) ;
+ };
+ MakeReturn0Cci (pcci);
+}
+
+void EvalCcRqDISPATCH_MESSAGES_WHILE_PRINTING (CrossCallInfo *pcci)
+{
+ MSG msg ;
+ char *pageMessage= (char *) (pcci->p1);
+
+ SetWindowText(hwndText,pageMessage);
+
+ while (!bUserAbort && PeekMessage (&msg, NULL, 0, 0, PM_REMOVE))
+ {
+ if (!hDlgPrint || !IsDialogMessage (hDlgPrint, &msg))
+ {
+ TranslateMessage (&msg) ;
+ DispatchMessage (&msg) ;
+ }
+ }
+ MakeReturn0Cci (pcci);
+}
+
+
+/* Install the cross call procedures in the gCrossCallProcedureTable of cCrossCall_121.
+*/
+void InstallCrossCallPrinter ()
+{
+ CrossCallProcedureTable newTable;
+
+ newTable = EmptyCrossCallProcedureTable ();
+ AddCrossCallEntry (newTable, CcRqDO_PRINT_SETUP, EvalCcRqDO_PRINT_SETUP);
+ AddCrossCallEntry (newTable, CcRqGET_PRINTER_DC, EvalCcRqGET_PRINTER_DC);
+ AddCrossCallEntry (newTable, CcRqSTARTDOC, EvalCcRqSTARTDOC);
+ AddCrossCallEntry (newTable, CcRqENDDOC, EvalCcRqENDDOC);
+ AddCrossCallEntry (newTable, CcRqDISPATCH_MESSAGES_WHILE_PRINTING, EvalCcRqDISPATCH_MESSAGES_WHILE_PRINTING);
+ AddCrossCallEntries (gCrossCallProcedureTable, newTable);
+}
+
+#else
+
+OS InstallCrossCallPrinter (OS ios)
+{
+ return ios;
+}
+
+#endif
|