PATCH - Split Comdlg32 print dialogs

Steven Edwards Steven_Ed4153 at yahoo.com
Thu Jun 19 10:45:18 CDT 2003


This is last patch that should create any new files. After this almost 
every Win16 function can be compiled out although quite a few of the 
internal and Win32 functions still call the Win16 api. I am starting to 
work on this now.

Changelog:
Split Win16/32 print dialog support.


-------------- next part --------------
Index: Makefile.in
===================================================================
RCS file: /home/wine/wine/dlls/commdlg/Makefile.in,v
retrieving revision 1.31
diff -u -r1.31 Makefile.in
--- Makefile.in	16 Jun 2003 01:19:16 -0000	1.31
+++ Makefile.in	19 Jun 2003 15:40:15 -0000
@@ -28,7 +28,8 @@
 	colordlg16.c \
 	filedlg16.c \
 	finddlg.c \
-	fontdlg16.c
+	fontdlg16.c \
+	printdlg16.c
 
 RC_SRCS= rsrc.rc
 

Index: printdlg.c
===================================================================
RCS file: /home/wine/wine/dlls/commdlg/printdlg.c,v
retrieving revision 1.65
diff -u -r1.65 printdlg.c
--- printdlg.c	18 Jun 2003 03:30:41 -0000	1.65
+++ printdlg.c	19 Jun 2003 15:39:11 -0000
@@ -43,6 +43,7 @@
 WINE_DEFAULT_DEBUG_CHANNEL(commdlg);
 
 #include "cdlg.h"
+#include "printdlg.h"
 
 /* This PRINTDLGA internal structure stores
  * pointers to several throughout useful structures.
@@ -50,23 +51,6 @@
  */
 typedef struct
 {
-  LPDEVMODEA        lpDevMode;
-  struct {
-      LPPRINTDLGA       lpPrintDlg;
-      LPPRINTDLG16	lpPrintDlg16;
-  } dlg;
-  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;
   struct {
       LPPRINTDLGW       lpPrintDlg;
@@ -145,7 +129,7 @@
  *
  * Returns TRUE on success else FALSE
  */
-static BOOL PRINTDLG_GetDefaultPrinterNameA(LPSTR buf, DWORD len)
+BOOL PRINTDLG_GetDefaultPrinterNameA(LPSTR buf, DWORD len)
 {
     char *ptr;
 
@@ -215,7 +199,7 @@
  *
  * Returns number of printers added to list.
  */
-static INT PRINTDLG_SetUpPrinterListComboA(HWND hDlg, UINT id, LPCSTR name)
+INT PRINTDLG_SetUpPrinterListComboA(HWND hDlg, UINT id, LPCSTR name)
 {
     DWORD needed, num;
     INT i;
@@ -1005,7 +989,7 @@
  *                 PRINTDLG_ChangePrinter
  *
  */
-static BOOL PRINTDLG_ChangePrinterA(HWND hDlg, char *name,
+BOOL PRINTDLG_ChangePrinterA(HWND hDlg, char *name,
 				   PRINT_PTRA *PrintStructures)
 {
     LPPRINTDLGA lppd = PrintStructures->dlg.lpPrintDlg;
@@ -1540,127 +1524,10 @@
     return TRUE;
 }
 
-
-/***********************************************************************
- *           PRINTDLG_WMInitDialog                      [internal]
- */
-static LRESULT PRINTDLG_WMInitDialog16(HWND hDlg, WPARAM wParam,
-				     PRINT_PTRA* PrintStructures)
-{
-    LPPRINTDLG16 lppd = PrintStructures->dlg.lpPrintDlg16;
-    DEVNAMES *pdn;
-    DEVMODEA *pdm;
-    char *name = NULL;
-    UINT comboID = (lppd->Flags & PD_PRINTSETUP) ? cmb1 : cmb4;
-
-    /* load Collate ICONs */
-    PrintStructures->hCollateIcon =
-      LoadIconA(COMDLG32_hInstance, "PD32_COLLATE");
-    PrintStructures->hNoCollateIcon =
-      LoadIconA(COMDLG32_hInstance, "PD32_NOCOLLATE");
-    if(PrintStructures->hCollateIcon == 0 ||
-       PrintStructures->hNoCollateIcon == 0) {
-        ERR("no icon in resourcefile\n");
-	COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE);
-	EndDialog(hDlg, FALSE);
-    }
-
-    /* load Paper Orientation ICON */
-    /* FIXME: not implemented yet */
-
-    /*
-     * if lppd->Flags PD_SHOWHELP is specified, a HELPMESGSTRING message
-     * must be registered and the Help button must be shown.
-     */
-    if (lppd->Flags & PD_SHOWHELP) {
-        if((PrintStructures->HelpMessageID =
-	    RegisterWindowMessageA(HELPMSGSTRINGA)) == 0) {
-	    COMDLG32_SetCommDlgExtendedError(CDERR_REGISTERMSGFAIL);
-	    return FALSE;
-	}
-    } else
-        PrintStructures->HelpMessageID = 0;
-
-    if (!(lppd->Flags & PD_PRINTSETUP)) {
-	/* We have a print quality combo box. What shall we do? */
-	if (GetDlgItem(hDlg,cmb1)) {
-	    char buf [20];
-
-	    FIXME("Print quality only displaying currently.\n");
-
-	    pdm = GlobalLock16(lppd->hDevMode);
-	    if(pdm) {
-		switch (pdm->dmPrintQuality) {
-		case DMRES_HIGH		: strcpy(buf,"High");break;
-		case DMRES_MEDIUM	: strcpy(buf,"Medium");break;
-		case DMRES_LOW		: strcpy(buf,"Low");break;
-		case DMRES_DRAFT	: strcpy(buf,"Draft");break;
-		case 0			: strcpy(buf,"Default");break;
-		default			: sprintf(buf,"%ddpi",pdm->dmPrintQuality);break;
-		}
-	        GlobalUnlock16(lppd->hDevMode);
-	    } else
-		strcpy(buf,"Default");
-	    SendDlgItemMessageA(hDlg,cmb1,CB_ADDSTRING,0,(LPARAM)buf);
-	    SendDlgItemMessageA(hDlg,cmb1,CB_SETCURSEL,0,0);
-	    EnableWindow(GetDlgItem(hDlg,cmb1),FALSE);
-	}
-    }
-
-    /* FIXME: I allow more freedom than either Win95 or WinNT,
-     *        which do not agree to what errors should be thrown or not
-     *        in case nToPage or nFromPage is out-of-range.
-     */
-    if (lppd->nMaxPage < lppd->nMinPage)
-    	lppd->nMaxPage = lppd->nMinPage;
-    if (lppd->nMinPage == lppd->nMaxPage)
-    	lppd->Flags |= PD_NOPAGENUMS;
-    if (lppd->nToPage < lppd->nMinPage)
-        lppd->nToPage = lppd->nMinPage;
-    if (lppd->nToPage > lppd->nMaxPage)
-        lppd->nToPage = lppd->nMaxPage;
-    if (lppd->nFromPage < lppd->nMinPage)
-        lppd->nFromPage = lppd->nMinPage;
-    if (lppd->nFromPage > lppd->nMaxPage)
-        lppd->nFromPage = lppd->nMaxPage;
-
-    /* If the printer combo box is in the dialog, fill it */
-    if (GetDlgItem(hDlg,comboID)) {
-	/* Fill Combobox
-	 */
-	pdn = GlobalLock16(lppd->hDevNames);
-	pdm = GlobalLock16(lppd->hDevMode);
-	if(pdn)
-	    name = (char*)pdn + pdn->wDeviceOffset;
-	else if(pdm)
-	    name = pdm->dmDeviceName;
-	PRINTDLG_SetUpPrinterListComboA(hDlg, comboID, name);
-	if(pdm) GlobalUnlock16(lppd->hDevMode);
-	if(pdn) GlobalUnlock16(lppd->hDevNames);
-
-	/* Now find selected printer and update rest of dlg */
-	name = HeapAlloc(GetProcessHeap(),0,256);
-	if (GetDlgItemTextA(hDlg, comboID, name, 255))
-	    PRINTDLG_ChangePrinterA(hDlg, name, PrintStructures);
-    } else {
-	/* else just use default printer */
-	char name[200];
-	BOOL ret = PRINTDLG_GetDefaultPrinterNameA(name, sizeof(name));
-
-	if (ret)
-	    PRINTDLG_ChangePrinterA(hDlg, name, PrintStructures);
-	else
-	    FIXME("No default printer found, expect problems!\n");
-    }
-    HeapFree(GetProcessHeap(),0,name);
-
-    return TRUE;
-}
-
 /***********************************************************************
  *                              PRINTDLG_WMCommand               [internal]
  */
-static LRESULT PRINTDLG_WMCommandA(HWND hDlg, WPARAM wParam,
+LRESULT PRINTDLG_WMCommandA(HWND hDlg, WPARAM wParam,
 			LPARAM lParam, PRINT_PTRA* PrintStructures)
 {
     LPPRINTDLGA lppd = PrintStructures->dlg.lpPrintDlg;
@@ -3462,98 +3329,6 @@
     );
     return bRet;
 }
-
-/**********************************************************************
- *
- *      16 bit commdlg
- */
-
-/***********************************************************************
- *           PrintDlgProc   (COMMDLG.21)
- */
-BOOL16 CALLBACK PrintDlgProc16(HWND16 hDlg16, UINT16 uMsg, WPARAM16 wParam,
-                            LPARAM lParam)
-{
-    HWND hDlg = HWND_32(hDlg16);
-    PRINT_PTRA* PrintStructures;
-    BOOL16 res = FALSE;
-
-    if (uMsg!=WM_INITDIALOG) {
-        PrintStructures = (PRINT_PTRA*)GetPropA(hDlg,"__WINE_PRINTDLGDATA");
-	if (!PrintStructures)
-	    return FALSE;
-    } else {
-        PrintStructures = (PRINT_PTRA*) lParam;
-	SetPropA(hDlg,"__WINE_PRINTDLGDATA",PrintStructures);
-	res = PRINTDLG_WMInitDialog16(hDlg, wParam, PrintStructures);
-
-	if(PrintStructures->dlg.lpPrintDlg16->Flags & PD_ENABLEPRINTHOOK) {
-	    res = CallWindowProc16(
-		(WNDPROC16)PrintStructures->dlg.lpPrintDlg16->lpfnPrintHook,
-		hDlg16, uMsg, wParam, (LPARAM)PrintStructures->dlg.lpPrintDlg16
-	    );
-	}
-	return res;
-    }
-
-    if(PrintStructures->dlg.lpPrintDlg16->Flags & PD_ENABLEPRINTHOOK) {
-        res = CallWindowProc16(
-		(WNDPROC16)PrintStructures->dlg.lpPrintDlg16->lpfnPrintHook,
-		hDlg16,uMsg, wParam, lParam
-	);
-	if(LOWORD(res)) return res;
-    }
-
-    switch (uMsg) {
-    case WM_COMMAND: {
-	 /* We need to map those for the 32bit window procedure, compare
-	  * with 32Ato16 mapper in winproc.c
-	  */
-        return PRINTDLG_WMCommandA(
-		hDlg,
-		MAKEWPARAM(wParam,HIWORD(lParam)),
-		LOWORD(lParam),
-		PrintStructures
-	);
-    }
-    case WM_DESTROY:
-	DestroyIcon(PrintStructures->hCollateIcon);
-	DestroyIcon(PrintStructures->hNoCollateIcon);
-    /* FIXME: don't forget to delete the paper orientation icons here! */
-
-        return FALSE;
-    }
-    return res;
-}
-
-
-/***********************************************************************
- *           PrintSetupDlgProc   (COMMDLG.22)
- */
-BOOL16 CALLBACK PrintSetupDlgProc16(HWND16 hWnd16, UINT16 wMsg, WPARAM16 wParam,
-				   LPARAM lParam)
-{
-  HWND hWnd = HWND_32(hWnd16);
-  switch (wMsg)
-    {
-    case WM_INITDIALOG:
-      TRACE("WM_INITDIALOG lParam=%08lX\n", lParam);
-      ShowWindow(hWnd, SW_SHOWNORMAL);
-      return (TRUE);
-    case WM_COMMAND:
-      switch (wParam) {
-      case IDOK:
-	EndDialog(hWnd, TRUE);
-	return(TRUE);
-      case IDCANCEL:
-	EndDialog(hWnd, FALSE);
-	return(TRUE);
-      }
-      return(FALSE);
-    }
-  return FALSE;
-}
-
 
 /***********************************************************************
  *	PrintDlgExA (COMDLG32.@)


--- /dev/null	Thu Jun 19 11:40:24 2003
+++ printdlg.h	Thu Jun 19 11:40:22 2003
@@ -0,0 +1,65 @@
+/*
+ * COMMDLG - Print Dialog
+ *
+ * Copyright 1994 Martin Ayotte
+ * Copyright 1996 Albrecht Kleine
+ * Copyright 1999 Klaas van Gend
+ * Copyright 2000 Huw D M Davies
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#ifndef _WINE_PRINTDLG_H
+#define _WINE_PRINTDLG_H
+
+#define NONAMELESSUNION
+#define NONAMELESSSTRUCT
+
+#include "cdlg.h"
+
+/* This PRINTDLGA internal structure stores
+ * pointers to several throughout useful structures.
+ *
+ */
+typedef struct
+{
+  LPDEVMODEA        lpDevMode;
+  struct {
+      LPPRINTDLGA       lpPrintDlg;
+      LPPRINTDLG16	lpPrintDlg16;
+  } dlg;
+  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;
+
+/* Internal Functions
+ * Do not Export to other Apps or Dlls.
+ */
+
+INT PRINTDLG_SetUpPrinterListComboA(HWND hDlg, UINT id, LPCSTR name);
+BOOL PRINTDLG_ChangePrinterA(HWND hDlg, char *name,
+				   PRINT_PTRA *PrintStructures);
+BOOL PRINTDLG_GetDefaultPrinterNameA(LPSTR buf, DWORD len);
+LRESULT PRINTDLG_WMCommandA(HWND hDlg, WPARAM wParam,
+			LPARAM lParam, PRINT_PTRA* PrintStructures);
+
+#endif /* _WINE_PRINTDLG_H */
+

--- /dev/null	Thu Jun 19 11:42:09 2003
+++ printdlg16.c	Thu Jun 19 11:33:18 2003
@@ -0,0 +1,252 @@
+/*
+ * COMMDLG - Print Dialog
+ *
+ * Copyright 1994 Martin Ayotte
+ * Copyright 1996 Albrecht Kleine
+ * Copyright 1999 Klaas van Gend
+ * Copyright 2000 Huw D M Davies
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+#include <ctype.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+#define NONAMELESSUNION
+#define NONAMELESSSTRUCT
+#include "windef.h"
+#include "winbase.h"
+#include "wingdi.h"
+#include "wine/wingdi16.h"
+#include "winuser.h"
+#include "wine/winuser16.h"
+#include "commdlg.h"
+#include "dlgs.h"
+#include "wine/debug.h"
+#include "cderr.h"
+#include "winspool.h"
+#include "winerror.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(commdlg);
+
+#include "printdlg.h"
+
+/***********************************************************************
+ *           PRINTDLG_WMInitDialog                      [internal]
+ */
+static LRESULT PRINTDLG_WMInitDialog16(HWND hDlg, WPARAM wParam,
+				     PRINT_PTRA* PrintStructures)
+{
+    LPPRINTDLG16 lppd = PrintStructures->dlg.lpPrintDlg16;
+    DEVNAMES *pdn;
+    DEVMODEA *pdm;
+    char *name = NULL;
+    UINT comboID = (lppd->Flags & PD_PRINTSETUP) ? cmb1 : cmb4;
+
+    /* load Collate ICONs */
+    PrintStructures->hCollateIcon =
+      LoadIconA(COMDLG32_hInstance, "PD32_COLLATE");
+    PrintStructures->hNoCollateIcon =
+      LoadIconA(COMDLG32_hInstance, "PD32_NOCOLLATE");
+    if(PrintStructures->hCollateIcon == 0 ||
+       PrintStructures->hNoCollateIcon == 0) {
+        ERR("no icon in resourcefile\n");
+	COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE);
+	EndDialog(hDlg, FALSE);
+    }
+
+    /* load Paper Orientation ICON */
+    /* FIXME: not implemented yet */
+
+    /*
+     * if lppd->Flags PD_SHOWHELP is specified, a HELPMESGSTRING message
+     * must be registered and the Help button must be shown.
+     */
+    if (lppd->Flags & PD_SHOWHELP) {
+        if((PrintStructures->HelpMessageID =
+	    RegisterWindowMessageA(HELPMSGSTRINGA)) == 0) {
+	    COMDLG32_SetCommDlgExtendedError(CDERR_REGISTERMSGFAIL);
+	    return FALSE;
+	}
+    } else
+        PrintStructures->HelpMessageID = 0;
+
+    if (!(lppd->Flags & PD_PRINTSETUP)) {
+	/* We have a print quality combo box. What shall we do? */
+	if (GetDlgItem(hDlg,cmb1)) {
+	    char buf [20];
+
+	    FIXME("Print quality only displaying currently.\n");
+
+	    pdm = GlobalLock16(lppd->hDevMode);
+	    if(pdm) {
+		switch (pdm->dmPrintQuality) {
+		case DMRES_HIGH		: strcpy(buf,"High");break;
+		case DMRES_MEDIUM	: strcpy(buf,"Medium");break;
+		case DMRES_LOW		: strcpy(buf,"Low");break;
+		case DMRES_DRAFT	: strcpy(buf,"Draft");break;
+		case 0			: strcpy(buf,"Default");break;
+		default			: sprintf(buf,"%ddpi",pdm->dmPrintQuality);break;
+		}
+	        GlobalUnlock16(lppd->hDevMode);
+	    } else
+		strcpy(buf,"Default");
+	    SendDlgItemMessageA(hDlg,cmb1,CB_ADDSTRING,0,(LPARAM)buf);
+	    SendDlgItemMessageA(hDlg,cmb1,CB_SETCURSEL,0,0);
+	    EnableWindow(GetDlgItem(hDlg,cmb1),FALSE);
+	}
+    }
+
+    /* FIXME: I allow more freedom than either Win95 or WinNT,
+     *        which do not agree to what errors should be thrown or not
+     *        in case nToPage or nFromPage is out-of-range.
+     */
+    if (lppd->nMaxPage < lppd->nMinPage)
+    	lppd->nMaxPage = lppd->nMinPage;
+    if (lppd->nMinPage == lppd->nMaxPage)
+    	lppd->Flags |= PD_NOPAGENUMS;
+    if (lppd->nToPage < lppd->nMinPage)
+        lppd->nToPage = lppd->nMinPage;
+    if (lppd->nToPage > lppd->nMaxPage)
+        lppd->nToPage = lppd->nMaxPage;
+    if (lppd->nFromPage < lppd->nMinPage)
+        lppd->nFromPage = lppd->nMinPage;
+    if (lppd->nFromPage > lppd->nMaxPage)
+        lppd->nFromPage = lppd->nMaxPage;
+
+    /* If the printer combo box is in the dialog, fill it */
+    if (GetDlgItem(hDlg,comboID)) {
+	/* Fill Combobox
+	 */
+	pdn = GlobalLock16(lppd->hDevNames);
+	pdm = GlobalLock16(lppd->hDevMode);
+	if(pdn)
+	    name = (char*)pdn + pdn->wDeviceOffset;
+	else if(pdm)
+	    name = pdm->dmDeviceName;
+	PRINTDLG_SetUpPrinterListComboA(hDlg, comboID, name);
+	if(pdm) GlobalUnlock16(lppd->hDevMode);
+	if(pdn) GlobalUnlock16(lppd->hDevNames);
+
+	/* Now find selected printer and update rest of dlg */
+	name = HeapAlloc(GetProcessHeap(),0,256);
+	if (GetDlgItemTextA(hDlg, comboID, name, 255))
+	    PRINTDLG_ChangePrinterA(hDlg, name, PrintStructures);
+    } else {
+	/* else just use default printer */
+	char name[200];
+	BOOL ret = PRINTDLG_GetDefaultPrinterNameA(name, sizeof(name));
+
+	if (ret)
+	    PRINTDLG_ChangePrinterA(hDlg, name, PrintStructures);
+	else
+	    FIXME("No default printer found, expect problems!\n");
+    }
+    HeapFree(GetProcessHeap(),0,name);
+
+    return TRUE;
+}
+
+/**********************************************************************
+ *
+ *      16 bit commdlg
+ */
+
+/***********************************************************************
+ *           PrintDlgProc   (COMMDLG.21)
+ */
+BOOL16 CALLBACK PrintDlgProc16(HWND16 hDlg16, UINT16 uMsg, WPARAM16 wParam,
+                            LPARAM lParam)
+{
+    HWND hDlg = HWND_32(hDlg16);
+    PRINT_PTRA* PrintStructures;
+    BOOL16 res = FALSE;
+
+    if (uMsg!=WM_INITDIALOG) {
+        PrintStructures = (PRINT_PTRA*)GetPropA(hDlg,"__WINE_PRINTDLGDATA");
+	if (!PrintStructures)
+	    return FALSE;
+    } else {
+        PrintStructures = (PRINT_PTRA*) lParam;
+	SetPropA(hDlg,"__WINE_PRINTDLGDATA",PrintStructures);
+	res = PRINTDLG_WMInitDialog16(hDlg, wParam, PrintStructures);
+
+	if(PrintStructures->dlg.lpPrintDlg16->Flags & PD_ENABLEPRINTHOOK) {
+	    res = CallWindowProc16(
+		(WNDPROC16)PrintStructures->dlg.lpPrintDlg16->lpfnPrintHook,
+		hDlg16, uMsg, wParam, (LPARAM)PrintStructures->dlg.lpPrintDlg16
+	    );
+	}
+	return res;
+    }
+
+    if(PrintStructures->dlg.lpPrintDlg16->Flags & PD_ENABLEPRINTHOOK) {
+        res = CallWindowProc16(
+		(WNDPROC16)PrintStructures->dlg.lpPrintDlg16->lpfnPrintHook,
+		hDlg16,uMsg, wParam, lParam
+	);
+	if(LOWORD(res)) return res;
+    }
+
+    switch (uMsg) {
+    case WM_COMMAND: {
+	 /* We need to map those for the 32bit window procedure, compare
+	  * with 32Ato16 mapper in winproc.c
+	  */
+        return PRINTDLG_WMCommandA(
+		hDlg,
+		MAKEWPARAM(wParam,HIWORD(lParam)),
+		LOWORD(lParam),
+		PrintStructures
+	);
+    }
+    case WM_DESTROY:
+	DestroyIcon(PrintStructures->hCollateIcon);
+	DestroyIcon(PrintStructures->hNoCollateIcon);
+    /* FIXME: don't forget to delete the paper orientation icons here! */
+
+        return FALSE;
+    }
+    return res;
+}
+
+
+/***********************************************************************
+ *           PrintSetupDlgProc   (COMMDLG.22)
+ */
+BOOL16 CALLBACK PrintSetupDlgProc16(HWND16 hWnd16, UINT16 wMsg, WPARAM16 wParam,
+				   LPARAM lParam)
+{
+  HWND hWnd = HWND_32(hWnd16);
+  switch (wMsg)
+    {
+    case WM_INITDIALOG:
+      TRACE("WM_INITDIALOG lParam=%08lX\n", lParam);
+      ShowWindow(hWnd, SW_SHOWNORMAL);
+      return (TRUE);
+    case WM_COMMAND:
+      switch (wParam) {
+      case IDOK:
+	EndDialog(hWnd, TRUE);
+	return(TRUE);
+      case IDCANCEL:
+	EndDialog(hWnd, FALSE);
+	return(TRUE);
+      }
+      return(FALSE);
+    }
+  return FALSE;
+}


More information about the wine-devel mailing list