From 05e6a4e60c55885624f5a47c0a4ea8c0a1c75cdd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20Nicolaysen=20S=C3=B8rnes?= Date: Thu, 23 Aug 2007 15:03:00 +0200 Subject: [PATCH] wordpad: Add support for printing a page range. --- programs/wordpad/wordpad.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/programs/wordpad/wordpad.c b/programs/wordpad/wordpad.c index de58c2f40dd..03f93913304 100644 --- a/programs/wordpad/wordpad.c +++ b/programs/wordpad/wordpad.c @@ -936,6 +936,7 @@ static void print(LPPRINTDLGW pd) FORMATRANGE fr; DOCINFOW di; int dpiY, dpiX, width, height; + int printedPages = 0; fr.hdc = pd->hDC; fr.hdcTarget = pd->hDC; @@ -975,6 +976,18 @@ static void print(LPPRINTDLGW pd) gt.codepage = 1200; fr.chrg.cpMin = 0; fr.chrg.cpMax = SendMessageW(hEditorWnd, EM_GETTEXTLENGTHEX, (WPARAM)>, 0); + + if(pd->Flags & PD_PAGENUMS) + { + int i; + for(i = 1; i <= pd->nToPage; i++) + { + if(i == pd->nFromPage) + break; + + fr.chrg.cpMin = SendMessageW(hEditorWnd, EM_FORMATRANGE, TRUE, (LPARAM)&fr); + } + } } StartDocW(fr.hdc, &di); @@ -987,6 +1000,10 @@ static void print(LPPRINTDLGW pd) if(EndPage(fr.hdc) <= 0) break; + + printedPages++; + if((pd->Flags & PD_PAGENUMS) && (printedPages > (pd->nToPage - pd->nFromPage))) + break; } while(fr.chrg.cpMin < fr.chrg.cpMax); @@ -1061,7 +1078,7 @@ static void dialog_print(void) pd.hwndOwner = hMainWnd; pd.Flags = PD_RETURNDC | PD_USEDEVMODECOPIESANDCOLLATE; pd.nMinPage = 1; - pd.nMaxPage = 1; + pd.nMaxPage = -1; pd.hDevMode = devMode; pd.hDevNames = devNames;