171 lines
4.5 KiB
C
171 lines
4.5 KiB
C
|
/****************************************************************************/
|
||
|
/* */
|
||
|
/* WFPRINT.C - */
|
||
|
/* */
|
||
|
/* Windows Print Routines */
|
||
|
/* */
|
||
|
/****************************************************************************/
|
||
|
|
||
|
#include "winfile.h"
|
||
|
#include "winexp.h"
|
||
|
|
||
|
/*--------------------------------------------------------------------------*/
|
||
|
/* */
|
||
|
/* PrintFile() - */
|
||
|
/* */
|
||
|
/*--------------------------------------------------------------------------*/
|
||
|
|
||
|
WORD
|
||
|
PrintFile(
|
||
|
HWND hwnd,
|
||
|
LPSTR szFile
|
||
|
)
|
||
|
{
|
||
|
WORD ret;
|
||
|
INT iCurCount;
|
||
|
INT i;
|
||
|
HCURSOR hCursor;
|
||
|
|
||
|
ret = 0;
|
||
|
|
||
|
hCursor = SetCursor(LoadCursor(NULL, IDC_WAIT));
|
||
|
iCurCount = ShowCursor(TRUE) - 1;
|
||
|
|
||
|
/* open the object +++ ShellExecute() returns an hInstance?!?!?
|
||
|
*/
|
||
|
ret = (WORD)RealShellExecute(hwnd, "print", szFile, "", NULL, NULL, NULL, NULL, SW_SHOWNORMAL, NULL);
|
||
|
|
||
|
DosResetDTAAddress(); // undo any bad things COMMDLG did
|
||
|
switch (ret) {
|
||
|
case 0:
|
||
|
case 8:
|
||
|
ret = IDS_NOMEMORYMSG;
|
||
|
break;
|
||
|
|
||
|
case 2:
|
||
|
ret = IDS_FILENOTFOUNDMSG;
|
||
|
break;
|
||
|
|
||
|
case 3:
|
||
|
case 5: // access denied
|
||
|
ret = IDS_BADPATHMSG;
|
||
|
break;
|
||
|
|
||
|
case 4:
|
||
|
ret = IDS_MANYOPENFILESMSG;
|
||
|
break;
|
||
|
|
||
|
case 10:
|
||
|
ret = IDS_NEWWINDOWSMSG;
|
||
|
break;
|
||
|
|
||
|
case 12:
|
||
|
ret = IDS_OS2APPMSG;
|
||
|
break;
|
||
|
|
||
|
case 15:
|
||
|
/* KERNEL has already put up a messagebox for this one. */
|
||
|
ret = 0;
|
||
|
break;
|
||
|
|
||
|
case 16:
|
||
|
ret = IDS_MULTIPLEDSMSG;
|
||
|
break;
|
||
|
|
||
|
case 18:
|
||
|
ret = IDS_PMODEONLYMSG;
|
||
|
break;
|
||
|
|
||
|
case 19:
|
||
|
ret = IDS_COMPRESSEDEXE;
|
||
|
break;
|
||
|
|
||
|
case 20:
|
||
|
ret = IDS_INVALIDDLL;
|
||
|
break;
|
||
|
|
||
|
case SE_ERR_SHARE:
|
||
|
ret = IDS_SHAREERROR;
|
||
|
break;
|
||
|
|
||
|
case SE_ERR_ASSOCINCOMPLETE:
|
||
|
ret = IDS_ASSOCINCOMPLETE;
|
||
|
break;
|
||
|
|
||
|
case SE_ERR_DDETIMEOUT:
|
||
|
case SE_ERR_DDEFAIL:
|
||
|
case SE_ERR_DDEBUSY:
|
||
|
ret = IDS_DDEFAIL;
|
||
|
break;
|
||
|
|
||
|
case SE_ERR_NOASSOC:
|
||
|
ret = IDS_NOASSOCMSG;
|
||
|
break;
|
||
|
|
||
|
default:
|
||
|
if (ret < 32)
|
||
|
goto EPExit;
|
||
|
ret = 0;
|
||
|
}
|
||
|
|
||
|
EPExit:
|
||
|
i = ShowCursor(FALSE);
|
||
|
|
||
|
/* Make sure that the cursor count is still balanced. */
|
||
|
if (i != iCurCount)
|
||
|
ShowCursor(TRUE);
|
||
|
|
||
|
SetCursor(hCursor);
|
||
|
|
||
|
return (ret);
|
||
|
}
|
||
|
|
||
|
/*--------------------------------------------------------------------------*/
|
||
|
/* */
|
||
|
/* WFPrint() - */
|
||
|
/* */
|
||
|
/*--------------------------------------------------------------------------*/
|
||
|
|
||
|
WORD
|
||
|
APIENTRY
|
||
|
WFPrint(
|
||
|
LPSTR pSel
|
||
|
)
|
||
|
{
|
||
|
CHAR szFile[MAXPATHLEN];
|
||
|
CHAR szTemp[20];
|
||
|
WORD ret;
|
||
|
|
||
|
/* Turn off the print button. */
|
||
|
if (hdlgProgress)
|
||
|
EnableWindow(GetDlgItem(hdlgProgress, IDOK), FALSE);
|
||
|
|
||
|
bUserAbort = FALSE;
|
||
|
|
||
|
if (!(pSel = GetNextFile(pSel, szFile, sizeof(szFile))))
|
||
|
return TRUE;
|
||
|
|
||
|
/* See if there is more than one file to print. Abort if so
|
||
|
*/
|
||
|
if (pSel = GetNextFile(pSel, szTemp, sizeof(szTemp))) {
|
||
|
MyMessageBox(hwndFrame, IDS_WINFILE, IDS_PRINTONLYONE, MB_OK | MB_ICONEXCLAMATION);
|
||
|
return (FALSE);
|
||
|
}
|
||
|
|
||
|
if (hdlgProgress) {
|
||
|
/* Display the name of the file being printed. */
|
||
|
LoadString(hAppInstance, IDS_PRINTINGMSG, szTitle, 32);
|
||
|
wsprintf(szMessage, szTitle, (LPSTR)szFile);
|
||
|
SetDlgItemText(hdlgProgress, IDD_STATUS, szMessage);
|
||
|
}
|
||
|
|
||
|
ret = PrintFile(hdlgProgress ? hdlgProgress : hwndFrame, szFile);
|
||
|
|
||
|
if (ret) {
|
||
|
MyMessageBox(hwndFrame, IDS_EXECERRTITLE, ret, MB_OK | MB_ICONEXCLAMATION);
|
||
|
return FALSE;
|
||
|
}
|
||
|
|
||
|
return TRUE;
|
||
|
}
|