https://git.reactos.org/?p=reactos.git;a=commitdiff;h=064ac123d136d4b2a7022b76a04208718aaa6bd0

commit 064ac123d136d4b2a7022b76a04208718aaa6bd0
Author:     Katayama Hirofumi MZ <[email protected]>
AuthorDate: Tue Mar 7 14:42:27 2023 +0900
Commit:     GitHub <[email protected]>
CommitDate: Tue Mar 7 14:42:27 2023 +0900

    [NOTEPAD] Improve printing (header/footer/tabs/performance) (#5111)
    
    - Fix GetPrintingRect function.
    - Add DrawHeaderOrFooter, DoPrintBody, DoPrintPage, DoCreatePrintFonts, and 
DoPrintDocument helper functions.
    - Implement page header/footer and tabs printing in DIALOG_FilePrint 
function.
    - Improve printing performance.
    - Modify the header/footer resource strings.
    - Delete the needless resource strings.
    CORE-18837
---
 base/applications/notepad/dialog.c      | 575 +++++++++++++++++++++-----------
 base/applications/notepad/lang/bg-BG.rc |   8 +-
 base/applications/notepad/lang/cs-CZ.rc |   8 +-
 base/applications/notepad/lang/da-DK.rc |   8 +-
 base/applications/notepad/lang/de-DE.rc |   8 +-
 base/applications/notepad/lang/el-GR.rc |   8 +-
 base/applications/notepad/lang/en-US.rc |   8 +-
 base/applications/notepad/lang/es-ES.rc |   8 +-
 base/applications/notepad/lang/et-EE.rc |   8 +-
 base/applications/notepad/lang/eu-ES.rc |   8 +-
 base/applications/notepad/lang/fi-FI.rc |   8 +-
 base/applications/notepad/lang/fr-FR.rc |   8 +-
 base/applications/notepad/lang/he-IL.rc |   8 +-
 base/applications/notepad/lang/hi-IN.rc |   8 +-
 base/applications/notepad/lang/hr-HR.rc |   8 +-
 base/applications/notepad/lang/hu-HU.rc |   8 +-
 base/applications/notepad/lang/hy-AM.rc |   8 +-
 base/applications/notepad/lang/id-ID.rc |   8 +-
 base/applications/notepad/lang/it-IT.rc |   8 +-
 base/applications/notepad/lang/ja-JP.rc |   8 +-
 base/applications/notepad/lang/lt-LT.rc |   8 +-
 base/applications/notepad/lang/ms-MY.rc |   8 +-
 base/applications/notepad/lang/nl-NL.rc |   8 +-
 base/applications/notepad/lang/no-NO.rc |   8 +-
 base/applications/notepad/lang/pl-PL.rc |   8 +-
 base/applications/notepad/lang/pt-BR.rc |   8 +-
 base/applications/notepad/lang/pt-PT.rc |   8 +-
 base/applications/notepad/lang/ro-RO.rc |   8 +-
 base/applications/notepad/lang/ru-RU.rc |   8 +-
 base/applications/notepad/lang/sk-SK.rc |   8 +-
 base/applications/notepad/lang/sl-SI.rc |   8 +-
 base/applications/notepad/lang/sq-AL.rc |   8 +-
 base/applications/notepad/lang/sv-SE.rc |   8 +-
 base/applications/notepad/lang/th-TH.rc |   8 +-
 base/applications/notepad/lang/tr-TR.rc |   8 +-
 base/applications/notepad/lang/uk-UA.rc |   8 +-
 base/applications/notepad/lang/uz-UZ.rc |   8 +-
 base/applications/notepad/lang/zh-CN.rc |   8 +-
 base/applications/notepad/lang/zh-HK.rc |   8 +-
 base/applications/notepad/lang/zh-TW.rc |   8 +-
 base/applications/notepad/notepad_res.h |   4 -
 41 files changed, 466 insertions(+), 425 deletions(-)

diff --git a/base/applications/notepad/dialog.c 
b/base/applications/notepad/dialog.c
index 0d4272b1bb5..d9c71447264 100644
--- a/base/applications/notepad/dialog.c
+++ b/base/applications/notepad/dialog.c
@@ -281,26 +281,31 @@ int GetSelectionText(HWND hWnd, LPTSTR lpString, int 
nMaxCount)
 }
 
 static RECT
-GetPrintingRect(HDC hdc, RECT margins)
+GetPrintingRect(IN HDC hdc, IN LPCRECT pMargins)
 {
-    int iLogPixelsX, iLogPixelsY;
-    int iHorzRes, iVertRes;
-    int iPhysPageX, iPhysPageY, iPhysPageW, iPhysPageH;
-    RECT rcPrintRect;
-
-    iPhysPageX = GetDeviceCaps(hdc, PHYSICALOFFSETX);
-    iPhysPageY = GetDeviceCaps(hdc, PHYSICALOFFSETY);
-    iPhysPageW = GetDeviceCaps(hdc, PHYSICALWIDTH);
-    iPhysPageH = GetDeviceCaps(hdc, PHYSICALHEIGHT);
-    iLogPixelsX = GetDeviceCaps(hdc, LOGPIXELSX);
-    iLogPixelsY = GetDeviceCaps(hdc, LOGPIXELSY);
-    iHorzRes = GetDeviceCaps(hdc, HORZRES);
-    iVertRes = GetDeviceCaps(hdc, VERTRES);
-
-    rcPrintRect.left = (margins.left * iLogPixelsX / 2540) - iPhysPageX;
-    rcPrintRect.top = (margins.top * iLogPixelsY / 2540) - iPhysPageY;
-    rcPrintRect.right = iHorzRes - (((margins.left * iLogPixelsX / 2540) - 
iPhysPageX) + ((margins.right * iLogPixelsX / 2540) - (iPhysPageW - iPhysPageX 
- iHorzRes)));
-    rcPrintRect.bottom = iVertRes - (((margins.top * iLogPixelsY / 2540) - 
iPhysPageY) + ((margins.bottom * iLogPixelsY / 2540) - (iPhysPageH - iPhysPageY 
- iVertRes)));
+    INT iLogPixelsX = GetDeviceCaps(hdc, LOGPIXELSX);
+    INT iLogPixelsY = GetDeviceCaps(hdc, LOGPIXELSY);
+    INT iHorzRes = GetDeviceCaps(hdc, HORZRES); /* in pixels */
+    INT iVertRes = GetDeviceCaps(hdc, VERTRES); /* in pixels */
+    RECT rcPrintRect, rcPhysical;
+
+#define CONVERT_X(x) MulDiv((x), iLogPixelsX, 2540) /* 100th millimeters to 
pixels */
+#define CONVERT_Y(y) MulDiv((y), iLogPixelsY, 2540) /* 100th millimeters to 
pixels */
+    SetRect(&rcPrintRect,
+            CONVERT_X(pMargins->left), CONVERT_Y(pMargins->top),
+            iHorzRes - CONVERT_X(pMargins->right),
+            iVertRes - CONVERT_Y(pMargins->bottom));
+
+    rcPhysical.left = GetDeviceCaps(hdc, PHYSICALOFFSETX);
+    rcPhysical.right = rcPhysical.left + GetDeviceCaps(hdc, PHYSICALWIDTH);
+    rcPhysical.top = GetDeviceCaps(hdc, PHYSICALOFFSETY);
+    rcPhysical.bottom = rcPhysical.top + GetDeviceCaps(hdc, PHYSICALHEIGHT);
+
+    /* Adjust the margin */
+    rcPrintRect.left = max(rcPrintRect.left, rcPhysical.left);
+    rcPrintRect.top = max(rcPrintRect.top, rcPhysical.top);
+    rcPrintRect.right = min(rcPrintRect.right, rcPhysical.right);
+    rcPrintRect.bottom = min(rcPrintRect.bottom, rcPhysical.bottom);
 
     return rcPrintRect;
 }
@@ -614,219 +619,415 @@ BOOL DIALOG_FileSaveAs(VOID)
     }
 }
 
-VOID DIALOG_FilePrint(VOID)
+/* Convert the points into pixels */
+#define X_POINTS_TO_PIXELS(hDC, points) MulDiv((points), GetDeviceCaps((hDC), 
LOGPIXELSX), 72)
+#define Y_POINTS_TO_PIXELS(hDC, points) MulDiv((points), GetDeviceCaps((hDC), 
LOGPIXELSY), 72)
+
+/*
+ * See also:
+ * 
https://support.microsoft.com/en-us/windows/changing-header-and-footer-commands-in-notepad-c1b0e27b-497d-c478-c4c1-0da491cac148
+ */
+static VOID
+DrawHeaderOrFooter(HDC hDC, LPRECT pRect, LPCTSTR pszFormat, INT nPageNo, 
const SYSTEMTIME *pstNow)
 {
-    DOCINFO di;
-    TEXTMETRIC tm;
-    PRINTDLG printer;
-    SIZE szMetric;
-    int border;
-    int xLeft, yTop, pagecount, dopage, copycount;
-    unsigned int i;
-    LOGFONT hdrFont;
-    HFONT font, old_font=0;
-    DWORD size;
-    LPTSTR pTemp;
-    static const TCHAR times_new_roman[] = _T("Times New Roman");
-    RECT rcPrintRect;
-
-    /* Get a small font and print some header info on each page */
-    ZeroMemory(&hdrFont, sizeof(hdrFont));
-    hdrFont.lfHeight = 100;
-    hdrFont.lfWeight = FW_BOLD;
-    hdrFont.lfCharSet = ANSI_CHARSET;
-    hdrFont.lfOutPrecision = OUT_DEFAULT_PRECIS;
-    hdrFont.lfClipPrecision = CLIP_DEFAULT_PRECIS;
-    hdrFont.lfQuality = PROOF_QUALITY;
-    hdrFont.lfPitchAndFamily = VARIABLE_PITCH | FF_ROMAN;
-    _tcscpy(hdrFont.lfFaceName, times_new_roman);
-
-    font = CreateFontIndirect(&hdrFont);
+    TCHAR szText[256], szField[128];
+    const TCHAR *pchFormat;
+    UINT uAlign = DT_CENTER, uFlags = DT_SINGLELINE | DT_VCENTER | DT_NOPREFIX;
+    HGDIOBJ hOldPen, hOldBrush;
 
-    /* Get Current Settings */
-    ZeroMemory(&printer, sizeof(printer));
-    printer.lStructSize = sizeof(printer);
-    printer.hwndOwner = Globals.hMainWnd;
-    printer.hInstance = Globals.hInstance;
+    /* Draw a rectangle */
+    hOldPen = SelectObject(hDC, GetStockObject(BLACK_PEN));
+    hOldBrush = SelectObject(hDC, GetStockObject(NULL_BRUSH));
+    Rectangle(hDC, pRect->left, pRect->top, pRect->right, pRect->bottom);
+    SelectObject(hDC, hOldBrush);
+    SelectObject(hDC, hOldPen);
 
-    /* Set some default flags */
-    printer.Flags = PD_RETURNDC | PD_SELECTION;
+    InflateRect(pRect, -X_POINTS_TO_PIXELS(hDC, 3), 0); /* Shrink 3pt */
 
-    /* Disable the selection radio button if there is no text selected */
-    if (!GetSelectionTextLength(Globals.hEdit))
+    szText[0] = 0;
+
+    for (pchFormat = pszFormat; *pchFormat; ++pchFormat)
     {
-        printer.Flags = printer.Flags | PD_NOSELECTION;
-    }
+        if (*pchFormat != _T('&'))
+        {
+            StringCchCatN(szText, ARRAY_SIZE(szText), pchFormat, 1);
+            continue;
+        }
 
-    printer.nFromPage = 0;
-    printer.nMinPage = 1;
-    /* we really need to calculate number of pages to set nMaxPage and nToPage 
*/
-    printer.nToPage = (WORD)-1;
-    printer.nMaxPage = (WORD)-1;
+        ++pchFormat;
+        if (*pchFormat == 0)
+            break;
 
-    /* Let commdlg manage copy settings */
-    printer.nCopies = (WORD)PD_USEDEVMODECOPIES;
+        switch (_totupper(*pchFormat)) /* Make it uppercase */
+        {
+            case _T('&'): /* Found double ampersand */
+                StringCchCat(szText, ARRAY_SIZE(szText), TEXT("&"));
+                break;
 
-    printer.hDevMode = Globals.hDevMode;
-    printer.hDevNames = Globals.hDevNames;
+            case _T('L'): /* Left */
+                DrawText(hDC, szText, -1, pRect, uAlign | uFlags);
+                szText[0] = 0;
+                uAlign = DT_LEFT;
+                break;
 
-    if (!PrintDlg(&printer))
-    {
-        DeleteObject(font);
-        return;
-    }
+            case _T('C'): /* Center */
+                DrawText(hDC, szText, -1, pRect, uAlign | uFlags);
+                szText[0] = 0;
+                uAlign = DT_CENTER;
+                break;
 
-    Globals.hDevMode = printer.hDevMode;
-    Globals.hDevNames = printer.hDevNames;
+            case _T('R'): /* Right */
+                DrawText(hDC, szText, -1, pRect, uAlign | uFlags);
+                szText[0] = 0;
+                uAlign = DT_RIGHT;
+                break;
+
+            case _T('D'): /* Date */
+                GetDateFormat(LOCALE_USER_DEFAULT, 0, pstNow, NULL,
+                              szField, (INT)ARRAY_SIZE(szField));
+                StringCchCat(szText, ARRAY_SIZE(szText), szField);
+                break;
+
+            case _T('T'): /* Time */
+                GetTimeFormat(LOCALE_USER_DEFAULT, 0, pstNow, NULL,
+                              szField, (INT)ARRAY_SIZE(szField));
+                StringCchCat(szText, ARRAY_SIZE(szText), szField);
+                break;
 
-    assert(printer.hDC != 0);
+            case _T('F'): /* Filename */
+                StringCchCat(szText, ARRAY_SIZE(szText), Globals.szFileTitle);
+                break;
 
-    /* initialize DOCINFO */
-    di.cbSize = sizeof(DOCINFO);
-    di.lpszDocName = Globals.szFileTitle;
-    di.lpszOutput = NULL;
-    di.lpszDatatype = NULL;
-    di.fwType = 0;
+            case _T('P'): /* Page number */
+                StringCchPrintf(szField, ARRAY_SIZE(szField), TEXT("%u"), 
nPageNo);
+                StringCchCat(szText, ARRAY_SIZE(szText), szField);
+                break;
 
-    if (StartDoc(printer.hDC, &di) <= 0)
+            default: /* Otherwise */
+                szField[0] = _T('&');
+                szField[1] = *pchFormat;
+                szField[2] = 0;
+                StringCchCat(szText, ARRAY_SIZE(szText), szField);
+                break;
+        }
+    }
+
+    DrawText(hDC, szText, -1, pRect, uAlign | uFlags);
+}
+
+typedef struct
+{
+    LPPRINTDLG pPrinter;
+    RECT printRect;
+    SYSTEMTIME stNow;
+    HFONT hHeaderFont;
+    HFONT hBodyFont;
+    LPTSTR pszText;
+    DWORD ich;
+    DWORD cchText;
+    INT cyHeader;
+    INT cySpacing;
+    INT cyFooter;
+} PRINT_DATA, *PPRINT_DATA;
+
+static BOOL DoPrintBody(PPRINT_DATA pData, DWORD PageCount, BOOL bSkipPage)
+{
+    LPPRINTDLG pPrinter = pData->pPrinter;
+    RECT printRect = pData->printRect;
+    INT xLeft = printRect.left, yTop = printRect.top + pData->cyHeader + 
pData->cySpacing;
+    INT xStart, tabWidth;
+    DWORD ichStart;
+    SIZE charMetrics;
+    TEXTMETRIC tmText;
+
+    /* Calculate a tab width */
+#define TAB_STOP 8
+    GetTextMetrics(pPrinter->hDC, &tmText);
+    tabWidth = TAB_STOP * tmText.tmAveCharWidth;
+
+#define DO_FLUSH() do { \
+    if (ichStart < pData->ich && !bSkipPage) { \
+        TextOut(pPrinter->hDC, xStart, yTop, &pData->pszText[ichStart], 
pData->ich - ichStart); \
+    } \
+    ichStart = pData->ich; \
+    xStart = xLeft; \
+} while (0)
+
+    /* The drawing-body loop */
+    for (ichStart = pData->ich, xStart = xLeft; pData->ich < pData->cchText; )
     {
-        DeleteObject(font);
-        return;
+        TCHAR ch = pData->pszText[pData->ich];
+
+        if (ch == _T('\r'))
+        {
+            DO_FLUSH();
+
+            pData->ich++; /* Next char */
+            ichStart = pData->ich;
+            continue;
+        }
+
+        if (ch == _T('\n'))
+        {
+            DO_FLUSH();
+
+            /* Next line */
+            yTop += tmText.tmHeight;
+            xLeft = xStart = printRect.left;
+        }
+        else
+        {
+            if (ch == _T('\t'))
+            {
+                INT nStepWidth = tabWidth - ((xLeft - printRect.left) % 
tabWidth);
+
+                DO_FLUSH();
+
+                /* Go to the next tab stop */
+                xLeft += nStepWidth;
+                xStart = xLeft;
+            }
+            else /* Normal char */
+            {
+                GetTextExtentPoint32(pPrinter->hDC, &ch, 1, &charMetrics);
+                xLeft += charMetrics.cx;
+            }
+
+            /* Insert a line break if the next position reached the right edge 
*/
+            if (xLeft + charMetrics.cx >= printRect.right)
+            {
+                if (ch != _T('\t'))
+                    DO_FLUSH();
+
+                /* Next line */
+                yTop += tmText.tmHeight;
+                xLeft = xStart = printRect.left;
+            }
+        }
+
+        pData->ich++; /* Next char */
+        if (ch == _T('\t') || ch == _T('\n'))
+            ichStart = pData->ich;
+
+        if (yTop + tmText.tmHeight >= printRect.bottom - pData->cyFooter)
+            break; /* The next line reached the body bottom */
     }
 
+    DO_FLUSH();
+    return TRUE;
+}
+
+static BOOL DoPrintPage(PPRINT_DATA pData, DWORD PageCount)
+{
+    LPPRINTDLG pPrinter = pData->pPrinter;
+    BOOL bSkipPage;
+    HFONT hOldFont;
+
+    /* Should we skip this page? */
+    bSkipPage = !(pPrinter->Flags & PD_SELECTION) &&
+                (pPrinter->Flags & PD_PAGENUMS) &&
+                !(pPrinter->nFromPage <= PageCount && PageCount <= 
pPrinter->nToPage);
 
-    /* Get the file text */
-    if (printer.Flags & PD_SELECTION)
+    /* The prologue of a page */
+    if (!bSkipPage)
     {
-        size = GetSelectionTextLength(Globals.hEdit) + 1;
+        if (StartPage(pPrinter->hDC) <= 0)
+        {
+            AlertPrintError();
+            return FALSE;
+        }
+
+        if (pData->cyHeader > 0)
+        {
+            /* Draw the page header */
+            RECT rc = pData->printRect;
+            rc.bottom = rc.top + pData->cyHeader;
+
+            hOldFont = SelectObject(pPrinter->hDC, pData->hHeaderFont);
+            DrawHeaderOrFooter(pPrinter->hDC, &rc, Globals.szHeader, 
PageCount, &pData->stNow);
+            SelectObject(pPrinter->hDC, hOldFont); /* De-select the font */
+        }
     }
-    else
+
+    hOldFont = SelectObject(pPrinter->hDC, pData->hBodyFont);
+    DoPrintBody(pData, PageCount, bSkipPage);
+    SelectObject(pPrinter->hDC, hOldFont);
+
+    /* The epilogue of a page */
+    if (!bSkipPage)
     {
-        size = GetWindowTextLength(Globals.hEdit) + 1;
+        if (pData->cyFooter > 0)
+        {
+            /* Draw the page footer */
+            RECT rc = pData->printRect;
+            rc.top = rc.bottom - pData->cyFooter;
+
+            hOldFont = SelectObject(pPrinter->hDC, pData->hHeaderFont);
+            DrawHeaderOrFooter(pPrinter->hDC, &rc, Globals.szFooter, 
PageCount, &pData->stNow);
+            SelectObject(pPrinter->hDC, hOldFont);
+        }
+
+        if (EndPage(pPrinter->hDC) <= 0)
+        {
+            AlertPrintError();
+            return FALSE;
+        }
     }
 
-    pTemp = HeapAlloc(GetProcessHeap(), 0, size * sizeof(TCHAR));
-    if (!pTemp)
+    return TRUE;
+}
+
+#define HEADER_FONT_SIZE    11 /* 11pt */
+#define BODY_FONT_SIZE      9  /* 9pt */
+#define SPACING_HEIGHT      4  /* 4pt */
+
+static BOOL DoCreatePrintFonts(LPPRINTDLG pPrinter, PPRINT_DATA pPrintData)
+{
+    LOGFONT lfBody, lfHeader;
+
+    /* Create the main text font for printing */
+    lfBody = Globals.lfFont;
+    lfBody.lfHeight = -Y_POINTS_TO_PIXELS(pPrinter->hDC, HEADER_FONT_SIZE);
+    pPrintData->hBodyFont = CreateFontIndirect(&lfBody);
+    if (pPrintData->hBodyFont == NULL)
+        return FALSE;
+
+    /* Create the header/footer font */
+    ZeroMemory(&lfHeader, sizeof(lfHeader));
+    lfHeader.lfHeight = -Y_POINTS_TO_PIXELS(pPrinter->hDC, BODY_FONT_SIZE);
+    lfHeader.lfWeight = FW_BOLD;
+    lfHeader.lfCharSet = DEFAULT_CHARSET;
+    StringCchCopy(lfHeader.lfFaceName, ARRAY_SIZE(lfHeader.lfFaceName), 
lfBody.lfFaceName);
+    pPrintData->hHeaderFont = CreateFontIndirect(&lfHeader);
+    if (pPrintData->hHeaderFont == NULL)
+        return FALSE;
+
+    return TRUE;
+}
+
+static BOOL DoPrintDocument(LPPRINTDLG pPrinter)
+{
+    DOCINFO docInfo;
+    PRINT_DATA printData = { pPrinter };
+    DWORD CopyCount, PageCount;
+    TEXTMETRIC tmHeader;
+    BOOL ret = FALSE;
+    HFONT hOldFont;
+
+    GetLocalTime(&printData.stNow);
+
+    printData.printRect = GetPrintingRect(pPrinter->hDC, &Globals.lMargins);
+
+    if (!DoCreatePrintFonts(pPrinter, &printData))
     {
-        EndDoc(printer.hDC);
-        DeleteObject(font);
         ShowLastError();
-        return;
+        goto Quit;
     }
 
-    if (printer.Flags & PD_SELECTION)
+    if (pPrinter->Flags & PD_SELECTION)
+        printData.cchText = GetSelectionTextLength(Globals.hEdit);
+    else
+        printData.cchText = GetWindowTextLength(Globals.hEdit);
+
+    /* Allocate a buffer for the text */
+    printData.pszText = HeapAlloc(GetProcessHeap(), 0, (printData.cchText + 1) 
* sizeof(TCHAR));
+    if (!printData.pszText)
     {
-        size = GetSelectionText(Globals.hEdit, pTemp, size);
+        ShowLastError();
+        goto Quit;
     }
+
+    if (pPrinter->Flags & PD_SELECTION)
+        GetSelectionText(Globals.hEdit, printData.pszText, printData.cchText + 
1);
     else
+        GetWindowText(Globals.hEdit, printData.pszText, printData.cchText + 1);
+
+    /* Start a document */
+    ZeroMemory(&docInfo, sizeof(docInfo));
+    docInfo.cbSize = sizeof(DOCINFO);
+    docInfo.lpszDocName = Globals.szFileTitle;
+    if (StartDoc(pPrinter->hDC, &docInfo) <= 0)
     {
-        size = GetWindowText(Globals.hEdit, pTemp, size);
+        AlertPrintError();
+        goto Quit;
     }
 
-    /* Get the current printing area */
-    rcPrintRect = GetPrintingRect(printer.hDC, Globals.lMargins);
-
-    /* Ensure that each logical unit maps to one pixel */
-    SetMapMode(printer.hDC, MM_TEXT);
+    /* Calculate the header and footer heights */
+    hOldFont = SelectObject(pPrinter->hDC, printData.hHeaderFont);
+    GetTextMetrics(pPrinter->hDC, &tmHeader);
+    printData.cyHeader = printData.cyFooter = 2 * tmHeader.tmHeight;
+    printData.cySpacing = Y_POINTS_TO_PIXELS(pPrinter->hDC, SPACING_HEIGHT);
+    SelectObject(pPrinter->hDC, hOldFont); /* De-select the font */
+    if (!Globals.szHeader[0])
+        printData.cyHeader = printData.cySpacing = 0;
+    if (!Globals.szFooter[0])
+        printData.cyFooter = 0;
+
+    /* The printing-copies loop */
+    for (CopyCount = 1; CopyCount <= pPrinter->nCopies; ++CopyCount)
+    {
+        /* The printing-pages loop */
+        for (PageCount = 1, printData.ich = 0; printData.ich < 
printData.cchText; ++PageCount)
+        {
+            if (!DoPrintPage(&printData, PageCount))
+            {
+                AbortDoc(pPrinter->hDC); /* Cancel printing */
+                goto Quit;
+            }
+        }
+    }
 
-    /* Needed to get the correct height of a text line */
-    GetTextMetrics(printer.hDC, &tm);
+    if (EndDoc(pPrinter->hDC) <= 0)
+        AlertPrintError();
+    else
+        ret = TRUE;
+
+Quit: /* Clean up */
+    DeleteObject(printData.hHeaderFont);
+    DeleteObject(printData.hBodyFont);
+    if (printData.pszText)
+        HeapFree(GetProcessHeap(), 0, printData.pszText);
+    return ret;
+}
 
-    border = 15;
-    for (copycount=1; copycount <= printer.nCopies; copycount++) {
-        i = 0;
-        pagecount = 1;
-        do {
-            /* Don't start a page if none of the conditions below are true */
-            dopage = 0;
+VOID DIALOG_FilePrint(VOID)
+{
+    PRINTDLG printer;
 
-            /* The user wants to print the current selection */
-            if (printer.Flags & PD_SELECTION)
-            {
-                dopage = 1;
-            }
+    /* Get Current Settings */
+    ZeroMemory(&printer, sizeof(printer));
+    printer.lStructSize = sizeof(printer);
+    printer.hwndOwner = Globals.hMainWnd;
+    printer.hInstance = Globals.hInstance;
 
-            /* The user wants to print the entire document */
-            if (!(printer.Flags & PD_PAGENUMS) && !(printer.Flags & 
PD_SELECTION))
-            {
-                dopage = 1;
-            }
+    /* Set some default flags */
+    printer.Flags = PD_RETURNDC | PD_SELECTION;
 
-            /* The user wants to print a specified range of pages */
-            if ((pagecount >= printer.nFromPage && pagecount <= 
printer.nToPage))
-            {
-                dopage = 1;
-            }
+    /* Disable the selection radio button if there is no text selected */
+    if (!GetSelectionTextLength(Globals.hEdit))
+        printer.Flags |= PD_NOSELECTION;
 
-            old_font = SelectObject(printer.hDC, font);
-
-            if (dopage) {
-                if (StartPage(printer.hDC) <= 0) {
-                    SelectObject(printer.hDC, old_font);
-                    EndDoc(printer.hDC);
-                    DeleteDC(printer.hDC);
-                    HeapFree(GetProcessHeap(), 0, pTemp);
-                    DeleteObject(font);
-                    AlertPrintError();
-                    return;
-                }
+    printer.nFromPage = 1;
+    printer.nToPage = MAXWORD;
+    printer.nMinPage = 1;
+    printer.nMaxPage = MAXWORD;
 
-                SetViewportOrgEx(printer.hDC, rcPrintRect.left, 
rcPrintRect.top, NULL);
-
-                /* Write a rectangle and header at the top of each page */
-                Rectangle(printer.hDC, border, border, rcPrintRect.right - 
border, border + tm.tmHeight * 2);
-                /* I don't know what's up with this TextOut command. This 
comes out
-                kind of mangled.
-                */
-                TextOut(printer.hDC,
-                        border * 2,
-                        border + tm.tmHeight / 2,
-                        Globals.szFileTitle,
-                        lstrlen(Globals.szFileTitle));
-            }
+    printer.hDevMode = Globals.hDevMode;
+    printer.hDevNames = Globals.hDevNames;
 
-            /* The starting point for the main text */
-            xLeft = 0;
-            yTop = border + tm.tmHeight * 4;
+    if (!PrintDlg(&printer))
+        return; /* The user canceled printing */
 
-            SelectObject(printer.hDC, old_font);
+    assert(printer.hDC != NULL);
+    Globals.hDevMode = printer.hDevMode;
+    Globals.hDevNames = printer.hDevNames;
 
-            /* Since outputting strings is giving me problems, output the main
-             * text one character at a time. */
-            do {
-                if (pTemp[i] == '\n') {
-                    xLeft = 0;
-                    yTop += tm.tmHeight;
-                }
-                else if (pTemp[i] != '\r') {
-                    if (dopage)
-                        TextOut(printer.hDC, xLeft, yTop, &pTemp[i], 1);
-
-                    /* We need to get the width for each individual char, 
since a proportional font may be used */
-                    GetTextExtentPoint32(printer.hDC, &pTemp[i], 1, &szMetric);
-                    xLeft += szMetric.cx;
-
-                    /* Insert a line break if the current line does not fit 
into the printing area */
-                    if (xLeft > rcPrintRect.right)
-                    {
-                        xLeft = 0;
-                        yTop = yTop + tm.tmHeight;
-                    }
-                }
-            } while (i++ < size && yTop < rcPrintRect.bottom);
+    /* Ensure that each logical unit maps to one pixel */
+    SetMapMode(printer.hDC, MM_TEXT);
 
-            if (dopage)
-                EndPage(printer.hDC);
-            pagecount++;
-        } while (i < size);
-    }
+    DoPrintDocument(&printer);
 
-    if (old_font != 0)
-        SelectObject(printer.hDC, old_font);
-    EndDoc(printer.hDC);
     DeleteDC(printer.hDC);
-    HeapFree(GetProcessHeap(), 0, pTemp);
-    DeleteObject(font);
 }
 
 VOID DIALOG_FileExit(VOID)
diff --git a/base/applications/notepad/lang/bg-BG.rc 
b/base/applications/notepad/lang/bg-BG.rc
index 6f638b9ead2..ffc30a206db 100644
--- a/base/applications/notepad/lang/bg-BG.rc
+++ b/base/applications/notepad/lang/bg-BG.rc
@@ -132,12 +132,8 @@ END
 
 STRINGTABLE
 BEGIN
-    STRING_PAGESETUP_HEADERVALUE "&n" /* FIXME */
-    STRING_PAGESETUP_FOOTERVALUE "Страница &s" /* FIXME */
-    STRING_PAGESETUP_LEFTVALUE "20 мм" /* FIXME */
-    STRING_PAGESETUP_RIGHTVALUE "20 мм" /* FIXME */
-    STRING_PAGESETUP_TOPVALUE "25 мм" /* FIXME */
-    STRING_PAGESETUP_BOTTOMVALUE "25 мм" /* FIXME */
+    STRING_PAGESETUP_HEADERVALUE "&f"
+    STRING_PAGESETUP_FOOTERVALUE "Страница &p"
     STRING_NOTEPAD "Бележник"
     STRING_ERROR "ГРЕШКА"
     STRING_WARNING "ПРЕДУПРЕЖДЕНИЕ"
diff --git a/base/applications/notepad/lang/cs-CZ.rc 
b/base/applications/notepad/lang/cs-CZ.rc
index 6b3a41a8673..71c65359bdb 100644
--- a/base/applications/notepad/lang/cs-CZ.rc
+++ b/base/applications/notepad/lang/cs-CZ.rc
@@ -132,12 +132,8 @@ END
 
 STRINGTABLE
 BEGIN
-    STRING_PAGESETUP_HEADERVALUE "&n" /* FIXME */
-    STRING_PAGESETUP_FOOTERVALUE "Strana &s" /* FIXME */
-    STRING_PAGESETUP_LEFTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_RIGHTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_TOPVALUE "25 mm" /* FIXME */
-    STRING_PAGESETUP_BOTTOMVALUE "25 mm" /* FIXME */
+    STRING_PAGESETUP_HEADERVALUE "&f"
+    STRING_PAGESETUP_FOOTERVALUE "Strana &p"
     STRING_NOTEPAD "Notepad"
     STRING_ERROR "CHYBA"
     STRING_WARNING "VAROVÁNÍ"
diff --git a/base/applications/notepad/lang/da-DK.rc 
b/base/applications/notepad/lang/da-DK.rc
index 50e250611cf..e44e6089e75 100644
--- a/base/applications/notepad/lang/da-DK.rc
+++ b/base/applications/notepad/lang/da-DK.rc
@@ -132,12 +132,8 @@ END
 
 STRINGTABLE
 BEGIN
-    STRING_PAGESETUP_HEADERVALUE "&n" /* FIXME */
-    STRING_PAGESETUP_FOOTERVALUE "Side &s"
-    STRING_PAGESETUP_LEFTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_RIGHTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_TOPVALUE "25 mm" /* FIXME */
-    STRING_PAGESETUP_BOTTOMVALUE "25 mm" /* FIXME */
+    STRING_PAGESETUP_HEADERVALUE "&f"
+    STRING_PAGESETUP_FOOTERVALUE "Side &p"
     STRING_NOTEPAD "Notesblok"
     STRING_ERROR "Fejl"
     STRING_WARNING "Advarsel"
diff --git a/base/applications/notepad/lang/de-DE.rc 
b/base/applications/notepad/lang/de-DE.rc
index 367c4bf1c29..86219a879f4 100644
--- a/base/applications/notepad/lang/de-DE.rc
+++ b/base/applications/notepad/lang/de-DE.rc
@@ -132,12 +132,8 @@ END
 
 STRINGTABLE
 BEGIN
-    STRING_PAGESETUP_HEADERVALUE "&n" /* FIXME */
-    STRING_PAGESETUP_FOOTERVALUE "Seite &s" /* FIXME */
-    STRING_PAGESETUP_LEFTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_RIGHTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_TOPVALUE "25 mm" /* FIXME */
-    STRING_PAGESETUP_BOTTOMVALUE "25 mm" /* FIXME */
+    STRING_PAGESETUP_HEADERVALUE "&f"
+    STRING_PAGESETUP_FOOTERVALUE "Seite &p"
     STRING_NOTEPAD "Editor"
     STRING_ERROR "Fehler"
     STRING_WARNING "Achtung"
diff --git a/base/applications/notepad/lang/el-GR.rc 
b/base/applications/notepad/lang/el-GR.rc
index 5aab21d86ea..3cef55cd8db 100644
--- a/base/applications/notepad/lang/el-GR.rc
+++ b/base/applications/notepad/lang/el-GR.rc
@@ -132,12 +132,8 @@ END
 
 STRINGTABLE
 BEGIN
-    STRING_PAGESETUP_HEADERVALUE "&n" /* FIXME */
-    STRING_PAGESETUP_FOOTERVALUE "Σελίδα &s" /* FIXME */
-    STRING_PAGESETUP_LEFTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_RIGHTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_TOPVALUE "25 mm" /* FIXME */
-    STRING_PAGESETUP_BOTTOMVALUE "25 mm" /* FIXME */
+    STRING_PAGESETUP_HEADERVALUE "&f"
+    STRING_PAGESETUP_FOOTERVALUE "Σελίδα &p"
     STRING_NOTEPAD "Notepad"
     STRING_ERROR "ERROR"
     STRING_WARNING "WARNING"
diff --git a/base/applications/notepad/lang/en-US.rc 
b/base/applications/notepad/lang/en-US.rc
index 50f5578e83d..1aaf9c43a33 100644
--- a/base/applications/notepad/lang/en-US.rc
+++ b/base/applications/notepad/lang/en-US.rc
@@ -132,12 +132,8 @@ END
 
 STRINGTABLE
 BEGIN
-    STRING_PAGESETUP_HEADERVALUE "&n" /* FIXME */
-    STRING_PAGESETUP_FOOTERVALUE "Page &s" /* FIXME */
-    STRING_PAGESETUP_LEFTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_RIGHTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_TOPVALUE "25 mm" /* FIXME */
-    STRING_PAGESETUP_BOTTOMVALUE "25 mm" /* FIXME */
+    STRING_PAGESETUP_HEADERVALUE "&f"
+    STRING_PAGESETUP_FOOTERVALUE "Page &p"
     STRING_NOTEPAD "Notepad"
     STRING_ERROR "ERROR"
     STRING_WARNING "WARNING"
diff --git a/base/applications/notepad/lang/es-ES.rc 
b/base/applications/notepad/lang/es-ES.rc
index 5e84bf21445..46abc699626 100644
--- a/base/applications/notepad/lang/es-ES.rc
+++ b/base/applications/notepad/lang/es-ES.rc
@@ -134,12 +134,8 @@ END
 
 STRINGTABLE
 BEGIN
-    STRING_PAGESETUP_HEADERVALUE "&n" /* FIXME */
-    STRING_PAGESETUP_FOOTERVALUE "Página &s" /* FIXME */
-    STRING_PAGESETUP_LEFTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_RIGHTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_TOPVALUE "25 mm" /* FIXME */
-    STRING_PAGESETUP_BOTTOMVALUE "25 mm" /* FIXME */
+    STRING_PAGESETUP_HEADERVALUE "&f"
+    STRING_PAGESETUP_FOOTERVALUE "Página &p"
     STRING_NOTEPAD "Bloc de notas"
     STRING_ERROR "ERROR"
     STRING_WARNING "ADVERTENCIA"
diff --git a/base/applications/notepad/lang/et-EE.rc 
b/base/applications/notepad/lang/et-EE.rc
index a0bcf0bf1c6..55583c79f11 100644
--- a/base/applications/notepad/lang/et-EE.rc
+++ b/base/applications/notepad/lang/et-EE.rc
@@ -140,12 +140,8 @@ END
 
 STRINGTABLE
 BEGIN
-    STRING_PAGESETUP_HEADERVALUE "&n" /* FIXME */
-    STRING_PAGESETUP_FOOTERVALUE "Lk &s" /* FIXME */
-    STRING_PAGESETUP_LEFTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_RIGHTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_TOPVALUE "25 mm" /* FIXME */
-    STRING_PAGESETUP_BOTTOMVALUE "25 mm" /* FIXME */
+    STRING_PAGESETUP_HEADERVALUE "&f"
+    STRING_PAGESETUP_FOOTERVALUE "Lk &p"
     STRING_NOTEPAD "Notepad"
     STRING_ERROR "TÕRGE"
     STRING_WARNING "HOIATUS"
diff --git a/base/applications/notepad/lang/eu-ES.rc 
b/base/applications/notepad/lang/eu-ES.rc
index 7378bd87a34..074f3e280a0 100644
--- a/base/applications/notepad/lang/eu-ES.rc
+++ b/base/applications/notepad/lang/eu-ES.rc
@@ -132,12 +132,8 @@ END
 
 STRINGTABLE
 BEGIN
-    STRING_PAGESETUP_HEADERVALUE "&n" /* FIXME */
-    STRING_PAGESETUP_FOOTERVALUE "Orriak" /* FIXME */
-    STRING_PAGESETUP_LEFTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_RIGHTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_TOPVALUE "25 mm" /* FIXME */
-    STRING_PAGESETUP_BOTTOMVALUE "25 mm" /* FIXME */
+    STRING_PAGESETUP_HEADERVALUE "&f"
+    STRING_PAGESETUP_FOOTERVALUE "Orriak &p"
     STRING_NOTEPAD "Ohar-bloka"
     STRING_ERROR "ERROREA"
     STRING_WARNING "OHARRA"
diff --git a/base/applications/notepad/lang/fi-FI.rc 
b/base/applications/notepad/lang/fi-FI.rc
index af260b19698..112b1a909aa 100644
--- a/base/applications/notepad/lang/fi-FI.rc
+++ b/base/applications/notepad/lang/fi-FI.rc
@@ -132,12 +132,8 @@ END
 
 STRINGTABLE
 BEGIN
-    STRING_PAGESETUP_HEADERVALUE "&n" /* FIXME */
-    STRING_PAGESETUP_FOOTERVALUE "Sivu &s" /* FIXME */
-    STRING_PAGESETUP_LEFTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_RIGHTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_TOPVALUE "25 mm" /* FIXME */
-    STRING_PAGESETUP_BOTTOMVALUE "25 mm" /* FIXME */
+    STRING_PAGESETUP_HEADERVALUE "&f"
+    STRING_PAGESETUP_FOOTERVALUE "Sivu &p"
     STRING_NOTEPAD "Notepad"
     STRING_ERROR "VIRHE"
     STRING_WARNING "VAROITUS"
diff --git a/base/applications/notepad/lang/fr-FR.rc 
b/base/applications/notepad/lang/fr-FR.rc
index dc4f17032bb..407deb3feab 100644
--- a/base/applications/notepad/lang/fr-FR.rc
+++ b/base/applications/notepad/lang/fr-FR.rc
@@ -132,12 +132,8 @@ END
 
 STRINGTABLE
 BEGIN
-    STRING_PAGESETUP_HEADERVALUE "&n" /* FIXME */
-    STRING_PAGESETUP_FOOTERVALUE "Page &s" /* FIXME */
-    STRING_PAGESETUP_LEFTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_RIGHTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_TOPVALUE "25 mm" /* FIXME */
-    STRING_PAGESETUP_BOTTOMVALUE "25 mm" /* FIXME */
+    STRING_PAGESETUP_HEADERVALUE "&f"
+    STRING_PAGESETUP_FOOTERVALUE "Page &p"
     STRING_NOTEPAD "Bloc-notes"
     STRING_ERROR "ERREUR"
     STRING_WARNING "ATTENTION"
diff --git a/base/applications/notepad/lang/he-IL.rc 
b/base/applications/notepad/lang/he-IL.rc
index c611b674a89..0ccac31217c 100644
--- a/base/applications/notepad/lang/he-IL.rc
+++ b/base/applications/notepad/lang/he-IL.rc
@@ -135,12 +135,8 @@ END
 
 STRINGTABLE
 BEGIN
-    STRING_PAGESETUP_HEADERVALUE "&n" /* FIXME */
-    STRING_PAGESETUP_FOOTERVALUE "עמוד &s" /* FIXME */
-    STRING_PAGESETUP_LEFTVALUE "20 מ""מ" /* FIXME */
-    STRING_PAGESETUP_RIGHTVALUE "20 מ""מ" /* FIXME */
-    STRING_PAGESETUP_TOPVALUE "25 מ""מ" /* FIXME */
-    STRING_PAGESETUP_BOTTOMVALUE "25 מ""מ" /* FIXME */
+    STRING_PAGESETUP_HEADERVALUE "&f"
+    STRING_PAGESETUP_FOOTERVALUE "עמוד &p"
     STRING_NOTEPAD "פנקס רשימות"
     STRING_ERROR "שגיאה"
     STRING_WARNING "אזהרה"
diff --git a/base/applications/notepad/lang/hi-IN.rc 
b/base/applications/notepad/lang/hi-IN.rc
index 67d9c87684d..f66e29898fd 100644
--- a/base/applications/notepad/lang/hi-IN.rc
+++ b/base/applications/notepad/lang/hi-IN.rc
@@ -139,12 +139,8 @@ END
 
 STRINGTABLE
 BEGIN
-    STRING_PAGESETUP_HEADERVALUE "&n" /* FIXME */
-    STRING_PAGESETUP_FOOTERVALUE "Page &s" /* FIXME */
-    STRING_PAGESETUP_LEFTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_RIGHTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_TOPVALUE "25 mm" /* FIXME */
-    STRING_PAGESETUP_BOTTOMVALUE "25 mm" /* FIXME */
+    STRING_PAGESETUP_HEADERVALUE "&f"
+    STRING_PAGESETUP_FOOTERVALUE "Page &p"
     STRING_NOTEPAD "नोटपैड"
     STRING_ERROR "त्रुटि"
     STRING_WARNING "वॉर्निंग"
diff --git a/base/applications/notepad/lang/hr-HR.rc 
b/base/applications/notepad/lang/hr-HR.rc
index 6e201827d4d..8d69778a17d 100644
--- a/base/applications/notepad/lang/hr-HR.rc
+++ b/base/applications/notepad/lang/hr-HR.rc
@@ -139,12 +139,8 @@ END
 
 STRINGTABLE
 BEGIN
-    STRING_PAGESETUP_HEADERVALUE "&n" /* FIXME */
-    STRING_PAGESETUP_FOOTERVALUE "Stranica &s" /* FIXME */
-    STRING_PAGESETUP_LEFTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_RIGHTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_TOPVALUE "25 mm" /* FIXME */
-    STRING_PAGESETUP_BOTTOMVALUE "25 mm" /* FIXME */
+    STRING_PAGESETUP_HEADERVALUE "&f"
+    STRING_PAGESETUP_FOOTERVALUE "Stranica &p"
     STRING_NOTEPAD "Blok za pisanje"
     STRING_ERROR "Greška"
     STRING_WARNING "Upozorenje"
diff --git a/base/applications/notepad/lang/hu-HU.rc 
b/base/applications/notepad/lang/hu-HU.rc
index 6ee0bdaee9a..4fb13be84ee 100644
--- a/base/applications/notepad/lang/hu-HU.rc
+++ b/base/applications/notepad/lang/hu-HU.rc
@@ -132,12 +132,8 @@ END
 
 STRINGTABLE
 BEGIN
-    STRING_PAGESETUP_HEADERVALUE "&n" /* FIXME */
-    STRING_PAGESETUP_FOOTERVALUE "Oldalszám: &s." /* FIXME */
-    STRING_PAGESETUP_LEFTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_RIGHTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_TOPVALUE "25 mm" /* FIXME */
-    STRING_PAGESETUP_BOTTOMVALUE "25 mm" /* FIXME */
+    STRING_PAGESETUP_HEADERVALUE "&f"
+    STRING_PAGESETUP_FOOTERVALUE "Oldalszám: &p."
     STRING_NOTEPAD "Jegyzettömb"
     STRING_ERROR "HIBA"
     STRING_WARNING "FIGYELMEZTETÉS"
diff --git a/base/applications/notepad/lang/hy-AM.rc 
b/base/applications/notepad/lang/hy-AM.rc
index 66574a6c560..b570d30e510 100644
--- a/base/applications/notepad/lang/hy-AM.rc
+++ b/base/applications/notepad/lang/hy-AM.rc
@@ -132,12 +132,8 @@ END
 
 STRINGTABLE
 BEGIN
-    STRING_PAGESETUP_HEADERVALUE "&n" /* FIXME */
-    STRING_PAGESETUP_FOOTERVALUE "Էջ &s" /* FIXME */
-    STRING_PAGESETUP_LEFTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_RIGHTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_TOPVALUE "25 mm" /* FIXME */
-    STRING_PAGESETUP_BOTTOMVALUE "25 mm" /* FIXME */
+    STRING_PAGESETUP_HEADERVALUE "&f"
+    STRING_PAGESETUP_FOOTERVALUE "Էջ &p"
     STRING_NOTEPAD "Բլոկնոտ"
     STRING_ERROR "ՍԽԱԼ"
     STRING_WARNING "ՈԻՇԱԴՐՈՒԹՅՈՒՆ"
diff --git a/base/applications/notepad/lang/id-ID.rc 
b/base/applications/notepad/lang/id-ID.rc
index 3c00fb80c68..1bf3230f469 100644
--- a/base/applications/notepad/lang/id-ID.rc
+++ b/base/applications/notepad/lang/id-ID.rc
@@ -132,12 +132,8 @@ END
 
 STRINGTABLE
 BEGIN
-    STRING_PAGESETUP_HEADERVALUE "&n" /* FIXME */
-    STRING_PAGESETUP_FOOTERVALUE "Halaman &s" /* FIXME */
-    STRING_PAGESETUP_LEFTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_RIGHTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_TOPVALUE "25 mm" /* FIXME */
-    STRING_PAGESETUP_BOTTOMVALUE "25 mm" /* FIXME */
+    STRING_PAGESETUP_HEADERVALUE "&f"
+    STRING_PAGESETUP_FOOTERVALUE "Halaman &p"
     STRING_NOTEPAD "Notepad"
     STRING_ERROR "Kesalahan"
     STRING_WARNING "Peringatan"
diff --git a/base/applications/notepad/lang/it-IT.rc 
b/base/applications/notepad/lang/it-IT.rc
index 1c5c0766b95..4cba0c5eb0a 100644
--- a/base/applications/notepad/lang/it-IT.rc
+++ b/base/applications/notepad/lang/it-IT.rc
@@ -132,12 +132,8 @@ END
 
 STRINGTABLE
 BEGIN
-    STRING_PAGESETUP_HEADERVALUE "&n" /* FIXME */
-    STRING_PAGESETUP_FOOTERVALUE "Pagina &s" /* FIXME */
-    STRING_PAGESETUP_LEFTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_RIGHTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_TOPVALUE "25 mm" /* FIXME */
-    STRING_PAGESETUP_BOTTOMVALUE "25 mm" /* FIXME */
+    STRING_PAGESETUP_HEADERVALUE "&f"
+    STRING_PAGESETUP_FOOTERVALUE "Pagina &p"
     STRING_NOTEPAD "Blocco note"
     STRING_ERROR "ERRORE"
     STRING_WARNING "ATTENZIONE"
diff --git a/base/applications/notepad/lang/ja-JP.rc 
b/base/applications/notepad/lang/ja-JP.rc
index cb5f34450aa..bc50047fac0 100644
--- a/base/applications/notepad/lang/ja-JP.rc
+++ b/base/applications/notepad/lang/ja-JP.rc
@@ -132,12 +132,8 @@ END
 
 STRINGTABLE
 BEGIN
-    STRING_PAGESETUP_HEADERVALUE "&n" /* FIXME */
-    STRING_PAGESETUP_FOOTERVALUE "&s ページ" /* FIXME */
-    STRING_PAGESETUP_LEFTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_RIGHTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_TOPVALUE "25 mm" /* FIXME */
-    STRING_PAGESETUP_BOTTOMVALUE "25 mm" /* FIXME */
+    STRING_PAGESETUP_HEADERVALUE "&f"
+    STRING_PAGESETUP_FOOTERVALUE "ページ &p"
     STRING_NOTEPAD "メモ帳"
     STRING_ERROR "エラー"
     STRING_WARNING "警告"
diff --git a/base/applications/notepad/lang/lt-LT.rc 
b/base/applications/notepad/lang/lt-LT.rc
index f3f30f389c3..1cd4f99306c 100644
--- a/base/applications/notepad/lang/lt-LT.rc
+++ b/base/applications/notepad/lang/lt-LT.rc
@@ -132,12 +132,8 @@ END
 
 STRINGTABLE
 BEGIN
-    STRING_PAGESETUP_HEADERVALUE "&n" /* FIXME */
-    STRING_PAGESETUP_FOOTERVALUE "Puslapis &s" /* FIXME */
-    STRING_PAGESETUP_LEFTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_RIGHTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_TOPVALUE "25 mm" /* FIXME */
-    STRING_PAGESETUP_BOTTOMVALUE "25 mm" /* FIXME */
+    STRING_PAGESETUP_HEADERVALUE "&f"
+    STRING_PAGESETUP_FOOTERVALUE "Puslapis &p"
     STRING_NOTEPAD "Notepad"
     STRING_ERROR "KLAIDA"
     STRING_WARNING "ĮSPĖJIMAS"
diff --git a/base/applications/notepad/lang/ms-MY.rc 
b/base/applications/notepad/lang/ms-MY.rc
index c218b23f6ca..2c08f7fc548 100644
--- a/base/applications/notepad/lang/ms-MY.rc
+++ b/base/applications/notepad/lang/ms-MY.rc
@@ -134,12 +134,8 @@ END
 
 STRINGTABLE
 BEGIN
-    STRING_PAGESETUP_HEADERVALUE "&n" /* FIXME */
-    STRING_PAGESETUP_FOOTERVALUE "Page &s" /* FIXME */
-    STRING_PAGESETUP_LEFTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_RIGHTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_TOPVALUE "25 mm" /* FIXME */
-    STRING_PAGESETUP_BOTTOMVALUE "25 mm" /* FIXME */
+    STRING_PAGESETUP_HEADERVALUE "&f"
+    STRING_PAGESETUP_FOOTERVALUE "Page &p"
     STRING_NOTEPAD "Notepad"
     STRING_ERROR "RALAT"
     STRING_WARNING "AMARAN"
diff --git a/base/applications/notepad/lang/nl-NL.rc 
b/base/applications/notepad/lang/nl-NL.rc
index a5767cb7e0d..dce7657c783 100644
--- a/base/applications/notepad/lang/nl-NL.rc
+++ b/base/applications/notepad/lang/nl-NL.rc
@@ -132,12 +132,8 @@ END
 
 STRINGTABLE
 BEGIN
-    STRING_PAGESETUP_HEADERVALUE "&n" /* FIXME */
-    STRING_PAGESETUP_FOOTERVALUE "Pagina &s" /* FIXME */
-    STRING_PAGESETUP_LEFTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_RIGHTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_TOPVALUE "25 mm" /* FIXME */
-    STRING_PAGESETUP_BOTTOMVALUE "25 mm" /* FIXME */
+    STRING_PAGESETUP_HEADERVALUE "&f"
+    STRING_PAGESETUP_FOOTERVALUE "Pagina &p"
     STRING_NOTEPAD "Kladblok"
     STRING_ERROR "FOUT"
     STRING_WARNING "WAARSCHUWING"
diff --git a/base/applications/notepad/lang/no-NO.rc 
b/base/applications/notepad/lang/no-NO.rc
index 1612b9913c0..4cb8c26aed4 100644
--- a/base/applications/notepad/lang/no-NO.rc
+++ b/base/applications/notepad/lang/no-NO.rc
@@ -132,12 +132,8 @@ END
 
 STRINGTABLE
 BEGIN
-    STRING_PAGESETUP_HEADERVALUE "&n" /* FIXME */
-    STRING_PAGESETUP_FOOTERVALUE "Side &r" /* FIXME */
-    STRING_PAGESETUP_LEFTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_RIGHTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_TOPVALUE "25 mm" /* FIXME */
-    STRING_PAGESETUP_BOTTOMVALUE "25 mm" /* FIXME */
+    STRING_PAGESETUP_HEADERVALUE "&f"
+    STRING_PAGESETUP_FOOTERVALUE "Side &p"
     STRING_NOTEPAD "Notisblokk"
     STRING_ERROR "FEIL"
     STRING_WARNING "ADVARSEL"
diff --git a/base/applications/notepad/lang/pl-PL.rc 
b/base/applications/notepad/lang/pl-PL.rc
index fb9af935eb7..ba60d5ec329 100644
--- a/base/applications/notepad/lang/pl-PL.rc
+++ b/base/applications/notepad/lang/pl-PL.rc
@@ -132,12 +132,8 @@ END
 
 STRINGTABLE
 BEGIN
-    STRING_PAGESETUP_HEADERVALUE "&n" /* FIXME */
-    STRING_PAGESETUP_FOOTERVALUE "Strona &s" /* FIXME */
-    STRING_PAGESETUP_LEFTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_RIGHTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_TOPVALUE "25 mm" /* FIXME */
-    STRING_PAGESETUP_BOTTOMVALUE "25 mm" /* FIXME */
+    STRING_PAGESETUP_HEADERVALUE "&f"
+    STRING_PAGESETUP_FOOTERVALUE "Strona &p"
     STRING_NOTEPAD "Notatnik"
     STRING_ERROR "Błąd"
     STRING_WARNING "OSTRZEŻENIE"
diff --git a/base/applications/notepad/lang/pt-BR.rc 
b/base/applications/notepad/lang/pt-BR.rc
index ffc6ef44cce..912a37a4f68 100644
--- a/base/applications/notepad/lang/pt-BR.rc
+++ b/base/applications/notepad/lang/pt-BR.rc
@@ -132,12 +132,8 @@ END
 
 STRINGTABLE
 BEGIN
-    STRING_PAGESETUP_HEADERVALUE "&n" /* FIXME */
-    STRING_PAGESETUP_FOOTERVALUE "Página &s" /* FIXME */
-    STRING_PAGESETUP_LEFTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_RIGHTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_TOPVALUE "25 mm" /* FIXME */
-    STRING_PAGESETUP_BOTTOMVALUE "25 mm" /* FIXME */
+    STRING_PAGESETUP_HEADERVALUE "&f"
+    STRING_PAGESETUP_FOOTERVALUE "Página &p"
     STRING_NOTEPAD "Notepad"
     STRING_ERROR "ERRO"
     STRING_WARNING "AVISO"
diff --git a/base/applications/notepad/lang/pt-PT.rc 
b/base/applications/notepad/lang/pt-PT.rc
index d9a5b8576e0..3b5e2de940b 100644
--- a/base/applications/notepad/lang/pt-PT.rc
+++ b/base/applications/notepad/lang/pt-PT.rc
@@ -132,12 +132,8 @@ END
 
 STRINGTABLE
 BEGIN
-    STRING_PAGESETUP_HEADERVALUE "&n" /* FIXME */
-    STRING_PAGESETUP_FOOTERVALUE "Página &s" /* FIXME */
-    STRING_PAGESETUP_LEFTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_RIGHTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_TOPVALUE "25 mm" /* FIXME */
-    STRING_PAGESETUP_BOTTOMVALUE "25 mm" /* FIXME */
+    STRING_PAGESETUP_HEADERVALUE "&f"
+    STRING_PAGESETUP_FOOTERVALUE "Página &p"
     STRING_NOTEPAD "Notepad"
     STRING_ERROR "ERRO"
     STRING_WARNING "AVISO"
diff --git a/base/applications/notepad/lang/ro-RO.rc 
b/base/applications/notepad/lang/ro-RO.rc
index cd10206770f..d1354a2db43 100644
--- a/base/applications/notepad/lang/ro-RO.rc
+++ b/base/applications/notepad/lang/ro-RO.rc
@@ -137,12 +137,8 @@ END
 
 STRINGTABLE
 BEGIN
-    STRING_PAGESETUP_HEADERVALUE "&n" /* FIXME */
-    STRING_PAGESETUP_FOOTERVALUE "Pagină &s" /* FIXME */
-    STRING_PAGESETUP_LEFTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_RIGHTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_TOPVALUE "25 mm" /* FIXME */
-    STRING_PAGESETUP_BOTTOMVALUE "25 mm" /* FIXME */
+    STRING_PAGESETUP_HEADERVALUE "&f"
+    STRING_PAGESETUP_FOOTERVALUE "Pagină &p"
     STRING_NOTEPAD "Carnețel"
     STRING_ERROR "EROARE"
     STRING_WARNING "ATENțIONARE"
diff --git a/base/applications/notepad/lang/ru-RU.rc 
b/base/applications/notepad/lang/ru-RU.rc
index 1d27885d2f4..71b0c70e06a 100644
--- a/base/applications/notepad/lang/ru-RU.rc
+++ b/base/applications/notepad/lang/ru-RU.rc
@@ -132,12 +132,8 @@ END
 
 STRINGTABLE
 BEGIN
-    STRING_PAGESETUP_HEADERVALUE "&n" /* FIXME */
-    STRING_PAGESETUP_FOOTERVALUE "Страница &s" /* FIXME */
-    STRING_PAGESETUP_LEFTVALUE "20 мм" /* FIXME */
-    STRING_PAGESETUP_RIGHTVALUE "20 мм" /* FIXME */
-    STRING_PAGESETUP_TOPVALUE "25 мм" /* FIXME */
-    STRING_PAGESETUP_BOTTOMVALUE "25 мм" /* FIXME */
+    STRING_PAGESETUP_HEADERVALUE "&f"
+    STRING_PAGESETUP_FOOTERVALUE "Страница &p"
     STRING_NOTEPAD "Блокнот"
     STRING_ERROR "ОШИБКА"
     STRING_WARNING "ВНИМАНИЕ"
diff --git a/base/applications/notepad/lang/sk-SK.rc 
b/base/applications/notepad/lang/sk-SK.rc
index a27501ed73f..87334cd527a 100644
--- a/base/applications/notepad/lang/sk-SK.rc
+++ b/base/applications/notepad/lang/sk-SK.rc
@@ -140,12 +140,8 @@ END
 
 STRINGTABLE
 BEGIN
-    STRING_PAGESETUP_HEADERVALUE "&n" /* FIXME */
-    STRING_PAGESETUP_FOOTERVALUE "Strana &s" /* FIXME */
-    STRING_PAGESETUP_LEFTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_RIGHTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_TOPVALUE "25 mm" /* FIXME */
-    STRING_PAGESETUP_BOTTOMVALUE "25 mm" /* FIXME */
+    STRING_PAGESETUP_HEADERVALUE "&f"
+    STRING_PAGESETUP_FOOTERVALUE "Strana &p"
     STRING_NOTEPAD "Poznámkový blok"
     STRING_ERROR "CHYBA"
     STRING_WARNING "UPOZORNENIE"
diff --git a/base/applications/notepad/lang/sl-SI.rc 
b/base/applications/notepad/lang/sl-SI.rc
index 6a87df05d1c..55af9a7dd65 100644
--- a/base/applications/notepad/lang/sl-SI.rc
+++ b/base/applications/notepad/lang/sl-SI.rc
@@ -132,12 +132,8 @@ END
 
 STRINGTABLE
 BEGIN
-    STRING_PAGESETUP_HEADERVALUE "&n" /* FIXME */
-    STRING_PAGESETUP_FOOTERVALUE "Stran &s" /* FIXME */
-    STRING_PAGESETUP_LEFTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_RIGHTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_TOPVALUE "25 mm" /* FIXME */
-    STRING_PAGESETUP_BOTTOMVALUE "25 mm" /* FIXME */
+    STRING_PAGESETUP_HEADERVALUE "&f"
+    STRING_PAGESETUP_FOOTERVALUE "Stran &p"
     STRING_NOTEPAD "Beležnica"
     STRING_ERROR "NAPAKA"
     STRING_WARNING "OPOZORILO"
diff --git a/base/applications/notepad/lang/sq-AL.rc 
b/base/applications/notepad/lang/sq-AL.rc
index adc546e0411..cdf0a08b135 100644
--- a/base/applications/notepad/lang/sq-AL.rc
+++ b/base/applications/notepad/lang/sq-AL.rc
@@ -136,12 +136,8 @@ END
 
 STRINGTABLE
 BEGIN
-    STRING_PAGESETUP_HEADERVALUE "&n" /* FIXME */
-    STRING_PAGESETUP_FOOTERVALUE "Faqe &s" /* FIXME */
-    STRING_PAGESETUP_LEFTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_RIGHTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_TOPVALUE "25 mm" /* FIXME */
-    STRING_PAGESETUP_BOTTOMVALUE "25 mm" /* FIXME */
+    STRING_PAGESETUP_HEADERVALUE "&f"
+    STRING_PAGESETUP_FOOTERVALUE "Faqe &p"
     STRING_NOTEPAD "Notepad"
     STRING_ERROR "ERROR"
     STRING_WARNING "KUJDES"
diff --git a/base/applications/notepad/lang/sv-SE.rc 
b/base/applications/notepad/lang/sv-SE.rc
index 55c6ff59785..a256eff432b 100644
--- a/base/applications/notepad/lang/sv-SE.rc
+++ b/base/applications/notepad/lang/sv-SE.rc
@@ -132,12 +132,8 @@ END
 
 STRINGTABLE
 BEGIN
-    STRING_PAGESETUP_HEADERVALUE "&n"
-    STRING_PAGESETUP_FOOTERVALUE "Sida &s"
-    STRING_PAGESETUP_LEFTVALUE "20 mm"
-    STRING_PAGESETUP_RIGHTVALUE "20 mm"
-    STRING_PAGESETUP_TOPVALUE "25 mm"
-    STRING_PAGESETUP_BOTTOMVALUE "25 mm"
+    STRING_PAGESETUP_HEADERVALUE "&f"
+    STRING_PAGESETUP_FOOTERVALUE "Sida &p"
     STRING_NOTEPAD "Anteckningar"
     STRING_ERROR "FEL"
     STRING_WARNING "VARNING"
diff --git a/base/applications/notepad/lang/th-TH.rc 
b/base/applications/notepad/lang/th-TH.rc
index aacedd7305b..471d0d73a8f 100644
--- a/base/applications/notepad/lang/th-TH.rc
+++ b/base/applications/notepad/lang/th-TH.rc
@@ -132,12 +132,8 @@ END
 
 STRINGTABLE
 BEGIN
-    STRING_PAGESETUP_HEADERVALUE "&n" /* FIXME */
-    STRING_PAGESETUP_FOOTERVALUE "หน้า &s" /* FIXME */
-    STRING_PAGESETUP_LEFTVALUE "20 มม." /* FIXME */
-    STRING_PAGESETUP_RIGHTVALUE "20 มม." /* FIXME */
-    STRING_PAGESETUP_TOPVALUE "25 มม." /* FIXME */
-    STRING_PAGESETUP_BOTTOMVALUE "25 มม." /* FIXME */
+    STRING_PAGESETUP_HEADERVALUE "&f"
+    STRING_PAGESETUP_FOOTERVALUE "หน้า &p"
     STRING_NOTEPAD "Notepad"
     STRING_ERROR "ความปิด"
     STRING_WARNING "คําตือน"
diff --git a/base/applications/notepad/lang/tr-TR.rc 
b/base/applications/notepad/lang/tr-TR.rc
index 0401ea4a169..26a7ef1f87e 100644
--- a/base/applications/notepad/lang/tr-TR.rc
+++ b/base/applications/notepad/lang/tr-TR.rc
@@ -135,12 +135,8 @@ END
 
 STRINGTABLE
 BEGIN
-    STRING_PAGESETUP_HEADERVALUE "&n" /* FIXME */
-    STRING_PAGESETUP_FOOTERVALUE "Sayfa &s"   /* FIXME */
-    STRING_PAGESETUP_LEFTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_RIGHTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_TOPVALUE "25 mm" /* FIXME */
-    STRING_PAGESETUP_BOTTOMVALUE "25 mm" /* FIXME */
+    STRING_PAGESETUP_HEADERVALUE "&f"
+    STRING_PAGESETUP_FOOTERVALUE "Sayfa &p"
     STRING_NOTEPAD "Not Defteri"
     STRING_ERROR "HATA"
     STRING_WARNING "UYARI"
diff --git a/base/applications/notepad/lang/uk-UA.rc 
b/base/applications/notepad/lang/uk-UA.rc
index a64d6e92276..23f6b27ba74 100644
--- a/base/applications/notepad/lang/uk-UA.rc
+++ b/base/applications/notepad/lang/uk-UA.rc
@@ -132,12 +132,8 @@ END
 
 STRINGTABLE
 BEGIN
-    STRING_PAGESETUP_HEADERVALUE "&n" /* FIXME */
-    STRING_PAGESETUP_FOOTERVALUE "Сторінка &s" /* FIXME */
-    STRING_PAGESETUP_LEFTVALUE "20 мм" /* FIXME */
-    STRING_PAGESETUP_RIGHTVALUE "20 мм" /* FIXME */
-    STRING_PAGESETUP_TOPVALUE "25 мм" /* FIXME */
-    STRING_PAGESETUP_BOTTOMVALUE "25 мм" /* FIXME */
+    STRING_PAGESETUP_HEADERVALUE "&f"
+    STRING_PAGESETUP_FOOTERVALUE "Сторінка &p"
     STRING_NOTEPAD "Блокнот"
     STRING_ERROR "ПОМИЛКА"
     STRING_WARNING "УВАГА"
diff --git a/base/applications/notepad/lang/uz-UZ.rc 
b/base/applications/notepad/lang/uz-UZ.rc
index 3eaea09f591..586905aeeab 100644
--- a/base/applications/notepad/lang/uz-UZ.rc
+++ b/base/applications/notepad/lang/uz-UZ.rc
@@ -132,12 +132,8 @@ END
 
 STRINGTABLE
 BEGIN
-    STRING_PAGESETUP_HEADERVALUE "&n" /* FIXME */
-    STRING_PAGESETUP_FOOTERVALUE "Sahifa &s" /* FIXME */
-    STRING_PAGESETUP_LEFTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_RIGHTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_TOPVALUE "25 mm" /* FIXME */
-    STRING_PAGESETUP_BOTTOMVALUE "25 mm" /* FIXME */
+    STRING_PAGESETUP_HEADERVALUE "&f"
+    STRING_PAGESETUP_FOOTERVALUE "Sahifa &p"
     STRING_NOTEPAD "Bloknot"
     STRING_ERROR "XATO"
     STRING_WARNING "DIQQAT"
diff --git a/base/applications/notepad/lang/zh-CN.rc 
b/base/applications/notepad/lang/zh-CN.rc
index 28fad41e6e6..bacc7722019 100644
--- a/base/applications/notepad/lang/zh-CN.rc
+++ b/base/applications/notepad/lang/zh-CN.rc
@@ -140,12 +140,8 @@ END
 
 STRINGTABLE
 BEGIN
-    STRING_PAGESETUP_HEADERVALUE "&n" /* FIXME */
-    STRING_PAGESETUP_FOOTERVALUE "页面 &s" /* FIXME */
-    STRING_PAGESETUP_LEFTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_RIGHTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_TOPVALUE "25 mm" /* FIXME */
-    STRING_PAGESETUP_BOTTOMVALUE "25 mm" /* FIXME */
+    STRING_PAGESETUP_HEADERVALUE "&f"
+    STRING_PAGESETUP_FOOTERVALUE "页面 &p"
     STRING_NOTEPAD "记事本"
     STRING_ERROR "错误"
     STRING_WARNING "警告"
diff --git a/base/applications/notepad/lang/zh-HK.rc 
b/base/applications/notepad/lang/zh-HK.rc
index 2ed9942d2b5..24fa27a6e36 100644
--- a/base/applications/notepad/lang/zh-HK.rc
+++ b/base/applications/notepad/lang/zh-HK.rc
@@ -140,12 +140,8 @@ END
 
 STRINGTABLE
 BEGIN
-    STRING_PAGESETUP_HEADERVALUE "&n" /* FIXME */
-    STRING_PAGESETUP_FOOTERVALUE "第 &s 頁" /* FIXME */
-    STRING_PAGESETUP_LEFTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_RIGHTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_TOPVALUE "25 mm" /* FIXME */
-    STRING_PAGESETUP_BOTTOMVALUE "25 mm" /* FIXME */
+    STRING_PAGESETUP_HEADERVALUE "&f"
+    STRING_PAGESETUP_FOOTERVALUE "第 &p 頁"
     STRING_NOTEPAD "記事本"
     STRING_ERROR "錯誤"
     STRING_WARNING "警告"
diff --git a/base/applications/notepad/lang/zh-TW.rc 
b/base/applications/notepad/lang/zh-TW.rc
index b4974b34d83..871a000a7bc 100644
--- a/base/applications/notepad/lang/zh-TW.rc
+++ b/base/applications/notepad/lang/zh-TW.rc
@@ -140,12 +140,8 @@ END
 
 STRINGTABLE
 BEGIN
-    STRING_PAGESETUP_HEADERVALUE "&n" /* FIXME */
-    STRING_PAGESETUP_FOOTERVALUE "第 &s 頁" /* FIXME */
-    STRING_PAGESETUP_LEFTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_RIGHTVALUE "20 mm" /* FIXME */
-    STRING_PAGESETUP_TOPVALUE "25 mm" /* FIXME */
-    STRING_PAGESETUP_BOTTOMVALUE "25 mm" /* FIXME */
+    STRING_PAGESETUP_HEADERVALUE "&f"
+    STRING_PAGESETUP_FOOTERVALUE "第 &p 頁"
     STRING_NOTEPAD "記事本"
     STRING_ERROR "錯誤"
     STRING_WARNING "警告"
diff --git a/base/applications/notepad/notepad_res.h 
b/base/applications/notepad/notepad_res.h
index 179a1c73573..870db3f7687 100644
--- a/base/applications/notepad/notepad_res.h
+++ b/base/applications/notepad/notepad_res.h
@@ -68,10 +68,6 @@
 /* Strings */
 #define STRING_PAGESETUP_HEADERVALUE 0x160
 #define STRING_PAGESETUP_FOOTERVALUE 0x161
-#define STRING_PAGESETUP_LEFTVALUE   0x162
-#define STRING_PAGESETUP_RIGHTVALUE  0x163
-#define STRING_PAGESETUP_TOPVALUE    0x164
-#define STRING_PAGESETUP_BOTTOMVALUE 0x165
 
 #define STRING_NOTEPAD        0x170
 #define STRING_ERROR          0x171

Reply via email to