/****************************************************************************/ /* */ /* 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; }