Alexander Nicolaysen Sørnes : wordpad: Add quick print support.

Alexandre Julliard julliard at wine.codeweavers.com
Wed Sep 12 07:50:58 CDT 2007


Module: wine
Branch: master
Commit: f586e1cce11658ed0f45541e34b90ca07655e00c
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=f586e1cce11658ed0f45541e34b90ca07655e00c

Author: Alexander Nicolaysen Sørnes <alex at thehandofagony.com>
Date:   Thu Aug 23 15:00:44 2007 +0200

wordpad: Add quick print support.

---

 programs/wordpad/resource.h |    5 +++--
 programs/wordpad/wordpad.c  |   41 ++++++++++++++++++++++++++++++++++++++++-
 2 files changed, 43 insertions(+), 3 deletions(-)

diff --git a/programs/wordpad/resource.h b/programs/wordpad/resource.h
index 7915568..9264cd8 100644
--- a/programs/wordpad/resource.h
+++ b/programs/wordpad/resource.h
@@ -31,9 +31,10 @@
 #define ID_PRINT 1010
 #define ID_PREVIEW 1011
 #define ID_PRINTSETUP 1012
+#define ID_PRINT_QUICK 1013
 
-#define ID_FIND 1013
-#define ID_FIND_NEXT 1014
+#define ID_FIND 1014
+#define ID_FIND_NEXT 1015
 
 #define ID_ALIGN_LEFT 1100
 #define ID_ALIGN_CENTER 1101
diff --git a/programs/wordpad/wordpad.c b/programs/wordpad/wordpad.c
index 8d302bf..456f33f 100644
--- a/programs/wordpad/wordpad.c
+++ b/programs/wordpad/wordpad.c
@@ -929,6 +929,7 @@ static int twips_to_centmm(int twips)
 }
 
 static HGLOBAL devMode;
+static HGLOBAL devNames;
 
 static void print(LPPRINTDLGW pd)
 {
@@ -1006,6 +1007,7 @@ static void dialog_printsetup(void)
     ps.rtMargin.top = twips_to_centmm(margins.top);
     ps.rtMargin.bottom = twips_to_centmm(margins.bottom);
     ps.hDevMode = devMode;
+    ps.hDevNames = devNames;
 
     if(PageSetupDlgW(&ps))
     {
@@ -1014,9 +1016,40 @@ static void dialog_printsetup(void)
         margins.top = centmm_to_twips(ps.rtMargin.top);
         margins.bottom = centmm_to_twips(ps.rtMargin.bottom);
         devMode = ps.hDevMode;
+        devNames = ps.hDevNames;
     }
 }
 
+static void print_quick(void)
+{
+    PRINTDLGW pd;
+    ZeroMemory(&pd, sizeof(pd));
+
+    if(devMode && devNames)
+    {
+        LPDEVNAMES dn = GlobalLock(devNames);
+        LPDEVMODEW dm = GlobalLock(devMode);
+        pd.hDC = CreateDCW((LPWSTR)dn + dn->wDriverOffset,
+                           (LPWSTR)dn + dn->wDeviceOffset, 0, dm);
+        GlobalUnlock(dn);
+        GlobalUnlock(dm);
+    } else
+    {
+        ZeroMemory(&pd, sizeof(pd));
+        pd.lStructSize = sizeof(pd);
+        pd.Flags = PD_RETURNDC | PD_RETURNDEFAULT;
+        pd.hwndOwner = hMainWnd;
+        pd.hDevMode = (HGLOBAL)devMode;
+
+        PrintDlgW(&pd);
+
+        devMode = pd.hDevMode;
+        devNames = pd.hDevNames;
+    }
+
+    print(&pd);
+}
+
 static void dialog_print(void)
 {
     PRINTDLGW pd;
@@ -1030,6 +1063,7 @@ static void dialog_print(void)
     pd.nMinPage = 1;
     pd.nMaxPage = 1;
     pd.hDevMode = devMode;
+    pd.hDevNames = devNames;
 
     SendMessageW(hEditorWnd, EM_GETSEL, (WPARAM)&from, (LPARAM)&to);
     if(from == to)
@@ -1038,6 +1072,7 @@ static void dialog_print(void)
     if(PrintDlgW(&pd))
     {
         devMode = pd.hDevMode;
+        devNames = pd.hDevNames;
         print(&pd);
     }
 }
@@ -1643,7 +1678,7 @@ static LRESULT OnCreate( HWND hWnd, WPARAM wParam, LPARAM lParam)
     AddButton(hToolBarWnd, nStdBitmaps+STD_FILEOPEN, ID_FILE_OPEN);
     AddButton(hToolBarWnd, nStdBitmaps+STD_FILESAVE, ID_FILE_SAVE);
     AddSeparator(hToolBarWnd);
-    AddButton(hToolBarWnd, nStdBitmaps+STD_PRINT, ID_PRINT);
+    AddButton(hToolBarWnd, nStdBitmaps+STD_PRINT, ID_PRINT_QUICK);
     AddButton(hToolBarWnd, nStdBitmaps+STD_PRINTPRE, ID_PREVIEW);
     AddSeparator(hToolBarWnd);
     AddButton(hToolBarWnd, nStdBitmaps+STD_FIND, ID_FIND);
@@ -1888,6 +1923,10 @@ static LRESULT OnCommand( HWND hWnd, WPARAM wParam, LPARAM lParam)
         dialog_print();
         break;
 
+    case ID_PRINT_QUICK:
+        print_quick();
+        break;
+
     case ID_PREVIEW:
         {
             static const WCHAR wszNotImplemented[] = {'N','o','t',' ',




More information about the wine-cvs mailing list