#include "commdlg.h"
#include "dlgs.h"
#include "cderr.h"
+#include "cdlg.h"
WINE_DEFAULT_DEBUG_CHANNEL(commdlg);
-#include "cdlg.h"
-#include "printdlg.h"
-
/* Yes these constants are the same, but we're just copying win98 */
#define UPDOWN_ID 0x270f
#define MAX_COPIES 9999
-DEVMODEW* WINAPI GdiConvertToDevmodeW(const DEVMODEA*);
+/* This PRINTDLGA internal structure stores
+ * pointers to several throughout useful structures.
+ */
+
+typedef struct
+{
+ LPDEVMODEA lpDevMode;
+ LPPRINTDLGA lpPrintDlg;
+ LPPRINTER_INFO_2A lpPrinterInfo;
+ LPDRIVER_INFO_3A lpDriverInfo;
+ UINT HelpMessageID;
+ HICON hCollateIcon; /* PrintDlg only */
+ HICON hNoCollateIcon; /* PrintDlg only */
+ HICON hPortraitIcon; /* PrintSetupDlg only */
+ HICON hLandscapeIcon; /* PrintSetupDlg only */
+ HWND hwndUpDown;
+} PRINT_PTRA;
+
+typedef struct
+{
+ LPDEVMODEW lpDevMode;
+ LPPRINTDLGW lpPrintDlg;
+ LPPRINTER_INFO_2W lpPrinterInfo;
+ LPDRIVER_INFO_3W lpDriverInfo;
+ UINT HelpMessageID;
+ HICON hCollateIcon; /* PrintDlg only */
+ HICON hNoCollateIcon; /* PrintDlg only */
+ HICON hPortraitIcon; /* PrintSetupDlg only */
+ HICON hLandscapeIcon; /* PrintSetupDlg only */
+ HWND hwndUpDown;
+} PRINT_PTRW;
/* Debugging info */
+struct pd_flags
+{
+ DWORD flag;
+ LPCSTR name;
+};
+
static const struct pd_flags psd_flags[] = {
{PSD_MINMARGINS,"PSD_MINMARGINS"},
{PSD_MARGINS,"PSD_MARGINS"},
{-1, NULL}
};
+static const struct pd_flags pd_flags[] = {
+ {PD_SELECTION, "PD_SELECTION "},
+ {PD_PAGENUMS, "PD_PAGENUMS "},
+ {PD_NOSELECTION, "PD_NOSELECTION "},
+ {PD_NOPAGENUMS, "PD_NOPAGENUMS "},
+ {PD_COLLATE, "PD_COLLATE "},
+ {PD_PRINTTOFILE, "PD_PRINTTOFILE "},
+ {PD_PRINTSETUP, "PD_PRINTSETUP "},
+ {PD_NOWARNING, "PD_NOWARNING "},
+ {PD_RETURNDC, "PD_RETURNDC "},
+ {PD_RETURNIC, "PD_RETURNIC "},
+ {PD_RETURNDEFAULT, "PD_RETURNDEFAULT "},
+ {PD_SHOWHELP, "PD_SHOWHELP "},
+ {PD_ENABLEPRINTHOOK, "PD_ENABLEPRINTHOOK "},
+ {PD_ENABLESETUPHOOK, "PD_ENABLESETUPHOOK "},
+ {PD_ENABLEPRINTTEMPLATE, "PD_ENABLEPRINTTEMPLATE "},
+ {PD_ENABLESETUPTEMPLATE, "PD_ENABLESETUPTEMPLATE "},
+ {PD_ENABLEPRINTTEMPLATEHANDLE, "PD_ENABLEPRINTTEMPLATEHANDLE "},
+ {PD_ENABLESETUPTEMPLATEHANDLE, "PD_ENABLESETUPTEMPLATEHANDLE "},
+ {PD_USEDEVMODECOPIES, "PD_USEDEVMODECOPIES[ANDCOLLATE] "},
+ {PD_DISABLEPRINTTOFILE, "PD_DISABLEPRINTTOFILE "},
+ {PD_HIDEPRINTTOFILE, "PD_HIDEPRINTTOFILE "},
+ {PD_NONETWORKBUTTON, "PD_NONETWORKBUTTON "},
+ {-1, NULL}
+};
/* address of wndproc for subclassed Static control */
static WNDPROC lpfnStaticWndProc;
static WNDPROC edit_wndproc;
*
* Returns TRUE on success else FALSE
*/
-BOOL PRINTDLG_OpenDefaultPrinter(HANDLE *hprn)
+static BOOL PRINTDLG_OpenDefaultPrinter(HANDLE *hprn)
{
WCHAR buf[260];
DWORD dwBufLen = sizeof(buf) / sizeof(buf[0]);
*
* Returns number of printers added to list.
*/
-INT PRINTDLG_SetUpPrinterListComboA(HWND hDlg, UINT id, LPCSTR name)
+static INT PRINTDLG_SetUpPrinterListComboA(HWND hDlg, UINT id, LPCSTR name)
{
DWORD needed, num;
INT i;
* PRINTDLG_ChangePrinter
*
*/
-BOOL PRINTDLG_ChangePrinterA(HWND hDlg, char *name,
- PRINT_PTRA *PrintStructures)
+static BOOL PRINTDLG_ChangePrinterA(HWND hDlg, char *name, PRINT_PTRA *PrintStructures)
{
LPPRINTDLGA lppd = PrintStructures->lpPrintDlg;
LPDEVMODEA lpdm = NULL;
* FIXME: The ico3 is not displayed for some reason. I don't know why.
*/
if (lppd->Flags & PD_COLLATE) {
- SendDlgItemMessageA(hDlg, ico3, STM_SETIMAGE, (WPARAM) IMAGE_ICON,
+ SendDlgItemMessageA(hDlg, ico3, STM_SETIMAGE, IMAGE_ICON,
(LPARAM)PrintStructures->hCollateIcon);
CheckDlgButton(hDlg, chx2, 1);
} else {
- SendDlgItemMessageA(hDlg, ico3, STM_SETIMAGE, (WPARAM) IMAGE_ICON,
+ SendDlgItemMessageA(hDlg, ico3, STM_SETIMAGE, IMAGE_ICON,
(LPARAM)PrintStructures->hNoCollateIcon);
CheckDlgButton(hDlg, chx2, 0);
}
PrintStructures->lpPrinterInfo->pPortName,
lpdm);
CheckRadioButton(hDlg, rad1, rad2, bPortrait ? rad1: rad2);
- SendDlgItemMessageA(hDlg, ico1, STM_SETIMAGE, (WPARAM) IMAGE_ICON,
+ SendDlgItemMessageA(hDlg, ico1, STM_SETIMAGE, IMAGE_ICON,
(LPARAM)(bPortrait ? PrintStructures->hPortraitIcon :
PrintStructures->hLandscapeIcon));
* FIXME: The ico3 is not displayed for some reason. I don't know why.
*/
if (lppd->Flags & PD_COLLATE) {
- SendDlgItemMessageW(hDlg, ico3, STM_SETIMAGE, (WPARAM) IMAGE_ICON,
+ SendDlgItemMessageW(hDlg, ico3, STM_SETIMAGE, IMAGE_ICON,
(LPARAM)PrintStructures->hCollateIcon);
CheckDlgButton(hDlg, chx2, 1);
} else {
- SendDlgItemMessageW(hDlg, ico3, STM_SETIMAGE, (WPARAM) IMAGE_ICON,
+ SendDlgItemMessageW(hDlg, ico3, STM_SETIMAGE, IMAGE_ICON,
(LPARAM)PrintStructures->hNoCollateIcon);
CheckDlgButton(hDlg, chx2, 0);
}
PrintStructures->lpPrinterInfo->pPortName,
lpdm);
CheckRadioButton(hDlg, rad1, rad2, bPortrait ? rad1: rad2);
- SendDlgItemMessageW(hDlg, ico1, STM_SETIMAGE, (WPARAM) IMAGE_ICON,
+ SendDlgItemMessageW(hDlg, ico1, STM_SETIMAGE, IMAGE_ICON,
(LPARAM)(bPortrait ? PrintStructures->hPortraitIcon :
PrintStructures->hLandscapeIcon));
/***********************************************************************
* PRINTDLG_WMInitDialog [internal]
*/
-static LRESULT PRINTDLG_WMInitDialog(HWND hDlg, WPARAM wParam,
+static LRESULT PRINTDLG_WMInitDialog(HWND hDlg,
PRINT_PTRA* PrintStructures)
{
LPPRINTDLGA lppd = PrintStructures->lpPrintDlg;
LoadIconA(COMDLG32_hInstance, "PD32_LANDSCAPE");
/* display the collate/no_collate icon */
- SendDlgItemMessageA(hDlg, ico3, STM_SETIMAGE, (WPARAM) IMAGE_ICON,
+ SendDlgItemMessageA(hDlg, ico3, STM_SETIMAGE, IMAGE_ICON,
(LPARAM)PrintStructures->hNoCollateIcon);
if(PrintStructures->hCollateIcon == 0 ||
return TRUE;
}
-static LRESULT PRINTDLG_WMInitDialogW(HWND hDlg, WPARAM wParam,
+static LRESULT PRINTDLG_WMInitDialogW(HWND hDlg,
PRINT_PTRW* PrintStructures)
{
LPPRINTDLGW lppd = PrintStructures->lpPrintDlg;
LoadIconW(COMDLG32_hInstance, pd32_landscapeW);
/* display the collate/no_collate icon */
- SendDlgItemMessageW(hDlg, ico3, STM_SETIMAGE, (WPARAM) IMAGE_ICON,
+ SendDlgItemMessageW(hDlg, ico3, STM_SETIMAGE, IMAGE_ICON,
(LPARAM)PrintStructures->hNoCollateIcon);
if(PrintStructures->hCollateIcon == 0 ||
/***********************************************************************
* PRINTDLG_WMCommand [internal]
*/
-LRESULT PRINTDLG_WMCommandA(HWND hDlg, WPARAM wParam,
- LPARAM lParam, PRINT_PTRA* PrintStructures)
+static LRESULT PRINTDLG_WMCommandA(HWND hDlg, WPARAM wParam,
+ LPARAM lParam, PRINT_PTRA* PrintStructures)
{
LPPRINTDLGA lppd = PrintStructures->lpPrintDlg;
UINT PrinterComboID = (lppd->Flags & PD_PRINTSETUP) ? cmb1 : cmb4;
case chx2: /* collate pages checkbox */
if (IsDlgButtonChecked(hDlg, chx2) == BST_CHECKED)
- SendDlgItemMessageA(hDlg, ico3, STM_SETIMAGE, (WPARAM) IMAGE_ICON,
+ SendDlgItemMessageA(hDlg, ico3, STM_SETIMAGE, IMAGE_ICON,
(LPARAM)PrintStructures->hCollateIcon);
else
- SendDlgItemMessageA(hDlg, ico3, STM_SETIMAGE, (WPARAM) IMAGE_ICON,
+ SendDlgItemMessageA(hDlg, ico3, STM_SETIMAGE, IMAGE_ICON,
(LPARAM)PrintStructures->hNoCollateIcon);
break;
case edt1: /* from page nr editbox */
}
break;
-#if 0
- case psh1: /* Print Setup */
- {
- PRINTDLG16 pdlg;
-
- if (!PrintStructures->dlg.lpPrintDlg16) {
- FIXME("The 32bit print dialog does not have this button!?\n");
- break;
- }
-
- memcpy(&pdlg,PrintStructures->dlg.lpPrintDlg16,sizeof(pdlg));
- pdlg.Flags |= PD_PRINTSETUP;
- pdlg.hwndOwner = HWND_16(hDlg);
- if (!PrintDlg16(&pdlg))
- break;
- }
- break;
-#endif
case psh2: /* Properties button */
{
HANDLE hPrinter;
if (lppd->Flags & PD_PRINTSETUP)
{
lpdm->u1.s1.dmOrientation = DMORIENT_PORTRAIT;
- SendDlgItemMessageA(hDlg, ico1, STM_SETIMAGE, (WPARAM) IMAGE_ICON,
+ SendDlgItemMessageA(hDlg, ico1, STM_SETIMAGE, IMAGE_ICON,
(LPARAM)(PrintStructures->hPortraitIcon));
}
break;
if (lppd->Flags & PD_PRINTSETUP)
{
lpdm->u1.s1.dmOrientation = DMORIENT_LANDSCAPE;
- SendDlgItemMessageA(hDlg, ico1, STM_SETIMAGE, (WPARAM) IMAGE_ICON,
+ SendDlgItemMessageA(hDlg, ico1, STM_SETIMAGE, IMAGE_ICON,
(LPARAM)(PrintStructures->hLandscapeIcon));
}
break;
if (IsDlgButtonChecked(hDlg, rad1) == BST_CHECKED) {
if(lpdm->u1.s1.dmOrientation != DMORIENT_PORTRAIT) {
lpdm->u1.s1.dmOrientation = DMORIENT_PORTRAIT;
- SendDlgItemMessageA(hDlg, stc10, STM_SETIMAGE,
- (WPARAM)IMAGE_ICON,
+ SendDlgItemMessageA(hDlg, stc10, STM_SETIMAGE, IMAGE_ICON,
(LPARAM)PrintStructures->hPortraitIcon);
- SendDlgItemMessageA(hDlg, ico1, STM_SETIMAGE,
- (WPARAM)IMAGE_ICON,
+ SendDlgItemMessageA(hDlg, ico1, STM_SETIMAGE, IMAGE_ICON,
(LPARAM)PrintStructures->hPortraitIcon);
}
} else {
if(lpdm->u1.s1.dmOrientation != DMORIENT_LANDSCAPE) {
lpdm->u1.s1.dmOrientation = DMORIENT_LANDSCAPE;
- SendDlgItemMessageA(hDlg, stc10, STM_SETIMAGE,
- (WPARAM)IMAGE_ICON,
+ SendDlgItemMessageA(hDlg, stc10, STM_SETIMAGE, IMAGE_ICON,
(LPARAM)PrintStructures->hLandscapeIcon);
- SendDlgItemMessageA(hDlg, ico1, STM_SETIMAGE,
- (WPARAM)IMAGE_ICON,
+ SendDlgItemMessageA(hDlg, ico1, STM_SETIMAGE, IMAGE_ICON,
(LPARAM)PrintStructures->hLandscapeIcon);
}
}
case chx2: /* collate pages checkbox */
if (IsDlgButtonChecked(hDlg, chx2) == BST_CHECKED)
- SendDlgItemMessageW(hDlg, ico3, STM_SETIMAGE, (WPARAM) IMAGE_ICON,
+ SendDlgItemMessageW(hDlg, ico3, STM_SETIMAGE, IMAGE_ICON,
(LPARAM)PrintStructures->hCollateIcon);
else
- SendDlgItemMessageW(hDlg, ico3, STM_SETIMAGE, (WPARAM) IMAGE_ICON,
+ SendDlgItemMessageW(hDlg, ico3, STM_SETIMAGE, IMAGE_ICON,
(LPARAM)PrintStructures->hNoCollateIcon);
break;
case edt1: /* from page nr editbox */
}
break;
- case psh1: /* Print Setup */
- {
- ERR("psh1 is called from 16bit code only, we should not get here.\n");
- }
- break;
case psh2: /* Properties button */
{
HANDLE hPrinter;
if (lppd->Flags & PD_PRINTSETUP)
{
lpdm->u1.s1.dmOrientation = DMORIENT_PORTRAIT;
- SendDlgItemMessageW(hDlg, ico1, STM_SETIMAGE, (WPARAM) IMAGE_ICON,
+ SendDlgItemMessageW(hDlg, ico1, STM_SETIMAGE, IMAGE_ICON,
(LPARAM)(PrintStructures->hPortraitIcon));
}
break;
if (lppd->Flags & PD_PRINTSETUP)
{
lpdm->u1.s1.dmOrientation = DMORIENT_LANDSCAPE;
- SendDlgItemMessageW(hDlg, ico1, STM_SETIMAGE, (WPARAM) IMAGE_ICON,
+ SendDlgItemMessageW(hDlg, ico1, STM_SETIMAGE, IMAGE_ICON,
(LPARAM)(PrintStructures->hLandscapeIcon));
}
break;
if (IsDlgButtonChecked(hDlg, rad1) == BST_CHECKED) {
if(lpdm->u1.s1.dmOrientation != DMORIENT_PORTRAIT) {
lpdm->u1.s1.dmOrientation = DMORIENT_PORTRAIT;
- SendDlgItemMessageW(hDlg, stc10, STM_SETIMAGE,
- (WPARAM)IMAGE_ICON,
+ SendDlgItemMessageW(hDlg, stc10, STM_SETIMAGE, IMAGE_ICON,
(LPARAM)PrintStructures->hPortraitIcon);
- SendDlgItemMessageW(hDlg, ico1, STM_SETIMAGE,
- (WPARAM)IMAGE_ICON,
+ SendDlgItemMessageW(hDlg, ico1, STM_SETIMAGE, IMAGE_ICON,
(LPARAM)PrintStructures->hPortraitIcon);
}
} else {
if(lpdm->u1.s1.dmOrientation != DMORIENT_LANDSCAPE) {
lpdm->u1.s1.dmOrientation = DMORIENT_LANDSCAPE;
- SendDlgItemMessageW(hDlg, stc10, STM_SETIMAGE,
- (WPARAM)IMAGE_ICON,
+ SendDlgItemMessageW(hDlg, stc10, STM_SETIMAGE, IMAGE_ICON,
(LPARAM)PrintStructures->hLandscapeIcon);
- SendDlgItemMessageW(hDlg, ico1, STM_SETIMAGE,
- (WPARAM)IMAGE_ICON,
+ SendDlgItemMessageW(hDlg, ico1, STM_SETIMAGE, IMAGE_ICON,
(LPARAM)PrintStructures->hLandscapeIcon);
}
}
EndDialog(hDlg,FALSE);
return FALSE;
}
- res = PRINTDLG_WMInitDialog(hDlg, wParam, PrintStructures);
+ res = PRINTDLG_WMInitDialog(hDlg, PrintStructures);
if(PrintStructures->lpPrintDlg->Flags & PD_ENABLEPRINTHOOK)
res = PrintStructures->lpPrintDlg->lpfnPrintHook(
EndDialog(hDlg,FALSE);
return FALSE;
}
- res = PRINTDLG_WMInitDialogW(hDlg, wParam, PrintStructures);
+ res = PRINTDLG_WMInitDialogW(hDlg, PrintStructures);
if(PrintStructures->lpPrintDlg->Flags & PD_ENABLEPRINTHOOK)
res = PrintStructures->lpPrintDlg->lpfnPrintHook(hDlg, uMsg, wParam, (LPARAM)PrintStructures->lpPrintDlg);
return FALSE;
}
- hInst = (HINSTANCE)GetWindowLongPtrA( lppd->hwndOwner, GWLP_HINSTANCE );
if(TRACE_ON(commdlg)) {
char flagstr[1000] = "";
const struct pd_flags *pflag = pd_flags;
/* and create & process the dialog .
* -1 is failure, 0 is broken hwnd, everything else is ok.
*/
+ hInst = COMDLG32_hInstance;
+ if (lppd->Flags & (PD_ENABLESETUPTEMPLATE | PD_ENABLEPRINTTEMPLATE)) hInst = lppd->hInstance;
bRet = (0<DialogBoxIndirectParamA(hInst, ptr, lppd->hwndOwner,
PrintDlgProcA,
(LPARAM)PrintStructures));
return FALSE;
}
- hInst = (HINSTANCE)GetWindowLongPtrW( lppd->hwndOwner, GWLP_HINSTANCE );
if(TRACE_ON(commdlg)) {
char flagstr[1000] = "";
const struct pd_flags *pflag = pd_flags;
/* and create & process the dialog .
* -1 is failure, 0 is broken hwnd, everything else is ok.
*/
+ hInst = COMDLG32_hInstance;
+ if (lppd->Flags & (PD_ENABLESETUPTEMPLATE | PD_ENABLEPRINTTEMPLATE)) hInst = lppd->hInstance;
bRet = (0<DialogBoxIndirectParamW(hInst, ptr, lppd->hwndOwner,
PrintDlgProcW,
(LPARAM)PrintStructures));