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
  | 
