wordpad: Prompt for format when selecting new file.
diff --git a/programs/wordpad/De.rc b/programs/wordpad/De.rc
index 095beff..8eb6181 100644
--- a/programs/wordpad/De.rc
+++ b/programs/wordpad/De.rc
@@ -93,6 +93,17 @@
     PUSHBUTTON   "&Cancel",IDCANCEL,87,26,40,12
 END
 
+IDD_NEWFILE DIALOG DISCARDABLE 30, 20, 140, 80
+STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
+CAPTION "New"
+FONT 10, "MS Sans Serif"
+BEGIN
+    LTEXT        "New document type",0,3,2,100,15
+    LISTBOX      IDC_NEWFILE,3,12,90,65,LBS_NOINTEGRALHEIGHT
+    PUSHBUTTON   "&OK",IDOK,97,12,40,12
+    PUSHBUTTON   "&Cancel",IDCANCEL,97,26,40,12
+END
+
 STRINGTABLE DISCARDABLE
 BEGIN
     STRING_RICHTEXT_FILES_RTF,     "Rich-Text-Format (*.rtf)"
@@ -103,6 +114,13 @@
 
 STRINGTABLE DISCARDABLE
 BEGIN
+    STRING_NEWFILE_RICHTEXT,     "Rich text document"
+    STRING_NEWFILE_TXT,          "Text document"
+    STRING_NEWFILE_TXT_UNICODE,  "Unicode text document"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
     STRING_DEFAULT_FILENAME,     "Document"
     STRING_PROMPT_SAVE_CHANGES,  "Save changes to '%s'?"
     STRING_SEARCH_FINISHED,      "Finished searching the document."
diff --git a/programs/wordpad/En.rc b/programs/wordpad/En.rc
index 11e186d..fa258d0 100644
--- a/programs/wordpad/En.rc
+++ b/programs/wordpad/En.rc
@@ -93,6 +93,17 @@
     PUSHBUTTON   "&Cancel",IDCANCEL,87,26,40,12
 END
 
+IDD_NEWFILE DIALOG DISCARDABLE 30, 20, 140, 80
+STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
+CAPTION "New"
+FONT 10, "MS Sans Serif"
+BEGIN
+    LTEXT        "New document type",0,3,2,100,15
+    LISTBOX      IDC_NEWFILE,3,12,90,65,LBS_NOINTEGRALHEIGHT
+    PUSHBUTTON   "&OK",IDOK,97,12,40,12
+    PUSHBUTTON   "&Cancel",IDCANCEL,97,26,40,12
+END
+
 STRINGTABLE DISCARDABLE
 BEGIN
     STRING_RICHTEXT_FILES_RTF,     "Rich text format (*.rtf)"
@@ -103,6 +114,13 @@
 
 STRINGTABLE DISCARDABLE
 BEGIN
+    STRING_NEWFILE_RICHTEXT,     "Rich text document"
+    STRING_NEWFILE_TXT,          "Text document"
+    STRING_NEWFILE_TXT_UNICODE,  "Unicode text document"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
     STRING_DEFAULT_FILENAME,     "Document"
     STRING_PROMPT_SAVE_CHANGES,  "Save changes to '%s'?"
     STRING_SEARCH_FINISHED,      "Finished searching the document."
diff --git a/programs/wordpad/Fr.rc b/programs/wordpad/Fr.rc
index 2a30cd5..7113bcd 100644
--- a/programs/wordpad/Fr.rc
+++ b/programs/wordpad/Fr.rc
@@ -93,6 +93,17 @@
     PUSHBUTTON   "&Cancel",IDCANCEL,87,26,40,12
 END
 
+IDD_NEWFILE DIALOG DISCARDABLE 30, 20, 140, 80
+STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
+CAPTION "New"
+FONT 10, "MS Sans Serif"
+BEGIN
+    LTEXT        "New document type",0,3,2,100,15
+    LISTBOX      IDC_NEWFILE,3,12,90,65,LBS_NOINTEGRALHEIGHT
+    PUSHBUTTON   "&OK",IDOK,97,12,40,12
+    PUSHBUTTON   "&Cancel",IDCANCEL,97,26,40,12
+END
+
 STRINGTABLE DISCARDABLE
 BEGIN
     STRING_RICHTEXT_FILES_RTF,     "Rich text format (*.rtf)"
@@ -103,6 +114,13 @@
 
 STRINGTABLE DISCARDABLE
 BEGIN
+    STRING_NEWFILE_RICHTEXT,     "Rich text document"
+    STRING_NEWFILE_TXT,          "Text document"
+    STRING_NEWFILE_TXT_UNICODE,  "Unicode text document"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
     STRING_DEFAULT_FILENAME,     "Document"
     STRING_PROMPT_SAVE_CHANGES,  "Save changes to '%s'?"
     STRING_SEARCH_FINISHED,      "Finished searching the document."
diff --git a/programs/wordpad/Hu.rc b/programs/wordpad/Hu.rc
index 94089a8..d74fed0 100644
--- a/programs/wordpad/Hu.rc
+++ b/programs/wordpad/Hu.rc
@@ -93,6 +93,17 @@
     PUSHBUTTON   "&Cancel",IDCANCEL,87,26,40,12
 END
 
+IDD_NEWFILE DIALOG DISCARDABLE 30, 20, 140, 80
+STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
+CAPTION "New"
+FONT 10, "MS Sans Serif"
+BEGIN
+    LTEXT        "New document type",0,3,2,100,15
+    LISTBOX      IDC_NEWFILE,3,12,90,65,LBS_NOINTEGRALHEIGHT
+    PUSHBUTTON   "&OK",IDOK,97,12,40,12
+    PUSHBUTTON   "&Cancel",IDCANCEL,97,26,40,12
+END
+
 STRINGTABLE DISCARDABLE
 BEGIN
     STRING_RICHTEXT_FILES_RTF,     "Rich text format (*.rtf)"
@@ -103,6 +114,13 @@
 
 STRINGTABLE DISCARDABLE
 BEGIN
+    STRING_NEWFILE_RICHTEXT,     "Rich text document"
+    STRING_NEWFILE_TXT,          "Text document"
+    STRING_NEWFILE_TXT_UNICODE,  "Unicode text document"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
     STRING_DEFAULT_FILENAME,     "Document"
     STRING_PROMPT_SAVE_CHANGES,  "Save changes to '%s'?"
     STRING_SEARCH_FINISHED,      "Finished searching the document."
diff --git a/programs/wordpad/Ko.rc b/programs/wordpad/Ko.rc
index caafbcd..1868800 100644
--- a/programs/wordpad/Ko.rc
+++ b/programs/wordpad/Ko.rc
@@ -94,6 +94,17 @@
     PUSHBUTTON   "Ãë¼Ò(&C)",IDCANCEL,87,26,40,12
 END
 
+IDD_NEWFILE DIALOG DISCARDABLE 30, 20, 140, 80
+STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
+CAPTION "New"
+FONT 10, "MS Sans Serif"
+BEGIN
+    LTEXT        "New document type",0,3,2,100,15
+    LISTBOX      IDC_NEWFILE,3,12,90,65,LBS_NOINTEGRALHEIGHT
+    PUSHBUTTON   "&OK",IDOK,97,12,40,12
+    PUSHBUTTON   "&Cancel",IDCANCEL,97,26,40,12
+END
+
 STRINGTABLE DISCARDABLE
 BEGIN
     STRING_RICHTEXT_FILES_RTF,     "¸®Ä¡ ÅØ½ºÆ® ÆÄÀÏÇü½Ä (*.rtf)"
diff --git a/programs/wordpad/Nl.rc b/programs/wordpad/Nl.rc
index b185871..db0acbc 100644
--- a/programs/wordpad/Nl.rc
+++ b/programs/wordpad/Nl.rc
@@ -93,6 +93,17 @@
     PUSHBUTTON   "&Cancel",IDCANCEL,87,26,40,12
 END
 
+IDD_NEWFILE DIALOG DISCARDABLE 30, 20, 140, 80
+STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
+CAPTION "New"
+FONT 10, "MS Sans Serif"
+BEGIN
+    LTEXT        "New document type",0,3,2,100,15
+    LISTBOX      IDC_NEWFILE,3,12,90,65,LBS_NOINTEGRALHEIGHT
+    PUSHBUTTON   "&OK",IDOK,97,12,40,12
+    PUSHBUTTON   "&Cancel",IDCANCEL,97,26,40,12
+END
+
 STRINGTABLE DISCARDABLE
 BEGIN
     STRING_RICHTEXT_FILES_RTF,     "Rich text format (*.rtf)"
@@ -103,6 +114,13 @@
 
 STRINGTABLE DISCARDABLE
 BEGIN
+    STRING_NEWFILE_RICHTEXT,     "Rich text document"
+    STRING_NEWFILE_TXT,          "Text document"
+    STRING_NEWFILE_TXT_UNICODE,  "Unicode text document"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
     STRING_DEFAULT_FILENAME,     "Document"
     STRING_PROMPT_SAVE_CHANGES,  "Save changes to '%s'?"
     STRING_SEARCH_FINISHED,      "Finished searching the document."
diff --git a/programs/wordpad/No.rc b/programs/wordpad/No.rc
index 5d511b8..0d56826 100644
--- a/programs/wordpad/No.rc
+++ b/programs/wordpad/No.rc
@@ -93,6 +93,17 @@
     PUSHBUTTON   "&Avbryt",IDCANCEL,87,26,40,12
 END
 
+IDD_NEWFILE DIALOG DISCARDABLE 30, 20, 140, 80
+STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
+CAPTION "Ny"
+FONT 10, "MS Sans Serif"
+BEGIN
+    LTEXT        "Ny dokumenttype",0,3,2,100,15
+    LISTBOX      IDC_NEWFILE,3,12,90,65,LBS_NOINTEGRALHEIGHT
+    PUSHBUTTON   "&OK",IDOK,97,12,40,12
+    PUSHBUTTON   "&Avbryt",IDCANCEL,97,26,40,12
+END
+
 STRINGTABLE DISCARDABLE
 BEGIN
     STRING_RICHTEXT_FILES_RTF,     "Rikt tekstformat (*.rtf)"
@@ -103,6 +114,13 @@
 
 STRINGTABLE DISCARDABLE
 BEGIN
+    STRING_NEWFILE_RICHTEXT,     "Rikt tekstdokument"
+    STRING_NEWFILE_TXT,          "Tekstdokument"
+    STRING_NEWFILE_TXT_UNICODE,  "Tekstdokument (Unicode)"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
     STRING_DEFAULT_FILENAME,     "Dokument"
     STRING_PROMPT_SAVE_CHANGES,  "Lagre endringer i «%s»?"
     STRING_SEARCH_FINISHED,      "Ferdig med å søke i dokumentet."
diff --git a/programs/wordpad/Pl.rc b/programs/wordpad/Pl.rc
index 6d39639..f682483 100644
--- a/programs/wordpad/Pl.rc
+++ b/programs/wordpad/Pl.rc
@@ -94,6 +94,17 @@
     PUSHBUTTON   "&Cancel",IDCANCEL,87,26,40,12
 END
 
+IDD_NEWFILE DIALOG DISCARDABLE 30, 20, 140, 80
+STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
+CAPTION "New"
+FONT 10, "MS Sans Serif"
+BEGIN
+    LTEXT        "New document type",0,3,2,100,15
+    LISTBOX      IDC_NEWFILE,3,12,90,65,LBS_NOINTEGRALHEIGHT
+    PUSHBUTTON   "&OK",IDOK,97,12,40,12
+    PUSHBUTTON   "&Cancel",IDCANCEL,97,26,40,12
+END
+
 STRINGTABLE DISCARDABLE
 BEGIN
     STRING_RICHTEXT_FILES_RTF,     "Tekst sformatowany - RTF (*.rtf)"
@@ -104,6 +115,13 @@
 
 STRINGTABLE DISCARDABLE
 BEGIN
+    STRING_NEWFILE_RICHTEXT,     "Rich text document"
+    STRING_NEWFILE_TXT,          "Text document"
+    STRING_NEWFILE_TXT_UNICODE,  "Unicode text document"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
     STRING_DEFAULT_FILENAME,     "Document"
     STRING_PROMPT_SAVE_CHANGES,  "Save changes to '%s'?"
     STRING_SEARCH_FINISHED,      "Finished searching the document."
diff --git a/programs/wordpad/Ru.rc b/programs/wordpad/Ru.rc
index e4df0dd..ecca77a 100644
--- a/programs/wordpad/Ru.rc
+++ b/programs/wordpad/Ru.rc
@@ -91,6 +91,17 @@
     PUSHBUTTON   "&Cancel",IDCANCEL,87,26,40,12
 END
 
+IDD_NEWFILE DIALOG DISCARDABLE 30, 20, 140, 80
+STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
+CAPTION "New"
+FONT 10, "MS Sans Serif"
+BEGIN
+    LTEXT        "New document type",0,3,2,100,15
+    LISTBOX      IDC_NEWFILE,3,12,90,65,LBS_NOINTEGRALHEIGHT
+    PUSHBUTTON   "&OK",IDOK,97,12,40,12
+    PUSHBUTTON   "&Cancel",IDCANCEL,97,26,40,12
+END
+
 STRINGTABLE DISCARDABLE
 BEGIN
     STRING_RICHTEXT_FILES_RTF,     "Rich text format (*.rtf)"
@@ -101,6 +112,13 @@
 
 STRINGTABLE DISCARDABLE
 BEGIN
+    STRING_NEWFILE_RICHTEXT,     "Rich text document"
+    STRING_NEWFILE_TXT,          "Text document"
+    STRING_NEWFILE_TXT_UNICODE,  "Unicode text document"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
     STRING_DEFAULT_FILENAME,     "Document"
     STRING_PROMPT_SAVE_CHANGES,  "Save changes to '%s'?"
     STRING_SEARCH_FINISHED,      "Finished searching the document."
diff --git a/programs/wordpad/Tr.rc b/programs/wordpad/Tr.rc
index f292a6d..5407165 100644
--- a/programs/wordpad/Tr.rc
+++ b/programs/wordpad/Tr.rc
@@ -95,6 +95,17 @@
     PUSHBUTTON   "&Cancel",IDCANCEL,87,26,40,12
 END
 
+IDD_NEWFILE DIALOG DISCARDABLE 30, 20, 140, 80
+STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
+CAPTION "New"
+FONT 10, "MS Sans Serif"
+BEGIN
+    LTEXT        "New document type",0,3,2,100,15
+    LISTBOX      IDC_NEWFILE,3,12,90,65,LBS_NOINTEGRALHEIGHT
+    PUSHBUTTON   "&OK",IDOK,97,12,40,12
+    PUSHBUTTON   "&Cancel",IDCANCEL,97,26,40,12
+END
+
 STRINGTABLE DISCARDABLE
 BEGIN
     STRING_RICHTEXT_FILES_RTF,     "Rich text format (*.rtf)"
@@ -105,6 +116,13 @@
 
 STRINGTABLE DISCARDABLE
 BEGIN
+    STRING_NEWFILE_RICHTEXT,     "Rich text document"
+    STRING_NEWFILE_TXT,          "Text document"
+    STRING_NEWFILE_TXT_UNICODE,  "Unicode text document"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
     STRING_DEFAULT_FILENAME,     "Document"
     STRING_PROMPT_SAVE_CHANGES,  "Save changes to '%s'?"
     STRING_SEARCH_FINISHED,      "Finished searching the document."
diff --git a/programs/wordpad/resource.h b/programs/wordpad/resource.h
index 1956d47..ce2c153 100644
--- a/programs/wordpad/resource.h
+++ b/programs/wordpad/resource.h
@@ -71,6 +71,8 @@
 #define FILELIST_ENTRIES 4
 #define FILELIST_ENTRY_LENGTH 33
 
+#define ID_NEWFILE_ABORT 100
+
 #define ID_DATETIME 1600
 
 #define IDC_STATUSBAR 2000
@@ -80,8 +82,10 @@
 #define IDC_REBAR 2004
 #define IDC_COMBO 2005
 #define IDC_DATETIME 2006
+#define IDC_NEWFILE 2007
 
 #define IDD_DATETIME 2100
+#define IDD_NEWFILE 2101
 
 #define IDB_TOOLBAR 100
 #define IDB_FORMATBAR 101
@@ -93,6 +97,10 @@
 #define STRING_TEXT_FILES_UNICODE_TXT 1402
 #define STRING_RICHTEXT_FILES_RTF 1403
 
+#define STRING_NEWFILE_RICHTEXT 1404
+#define STRING_NEWFILE_TXT 1405
+#define STRING_NEWFILE_TXT_UNICODE 1406
+
 #define STRING_DEFAULT_FILENAME 1700
 #define STRING_PROMPT_SAVE_CHANGES 1701
 #define STRING_SEARCH_FINISHED 1702
diff --git a/programs/wordpad/wordpad.c b/programs/wordpad/wordpad.c
index 90daef2..2b8c594 100644
--- a/programs/wordpad/wordpad.c
+++ b/programs/wordpad/wordpad.c
@@ -429,6 +429,16 @@
     registry_read_filelist(hMainWnd);
 }
 
+static void clear_formatting(void)
+{
+    PARAFORMAT2 pf;
+
+    pf.cbSize = sizeof(pf);
+    pf.dwMask = PFM_ALIGNMENT;
+    pf.wAlignment = PFA_LEFT;
+    SendMessageW(hEditorWnd, EM_SETPARAFORMAT, 0, (LPARAM)&pf);
+}
+
 static int fileformat_number(WPARAM format)
 {
     int number = 0;
@@ -928,6 +938,49 @@
     return FALSE;
 }
 
+BOOL CALLBACK newfile_proc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
+{
+    switch(message)
+    {
+        case WM_INITDIALOG:
+            {
+                HINSTANCE hInstance = (HINSTANCE)GetWindowLongPtr(hMainWnd, GWLP_HINSTANCE);
+                WCHAR buffer[MAX_STRING_LEN];
+                HWND hListWnd = GetDlgItem(hWnd, IDC_NEWFILE);
+
+                LoadStringW(hInstance, STRING_NEWFILE_RICHTEXT, (LPWSTR)buffer, MAX_STRING_LEN);
+                SendMessageW(hListWnd, LB_ADDSTRING, 0, (LPARAM)&buffer);
+                LoadStringW(hInstance, STRING_NEWFILE_TXT, (LPWSTR)buffer, MAX_STRING_LEN);
+                SendMessageW(hListWnd, LB_ADDSTRING, 0, (LPARAM)&buffer);
+                LoadStringW(hInstance, STRING_NEWFILE_TXT_UNICODE, (LPWSTR)buffer, MAX_STRING_LEN);
+                SendMessageW(hListWnd, LB_ADDSTRING, 0, (LPARAM)&buffer);
+
+                SendMessageW(hListWnd, LB_SETSEL, TRUE, 0);
+            }
+            break;
+
+        case WM_COMMAND:
+            switch(LOWORD(wParam))
+            {
+                case IDOK:
+                    {
+                        LRESULT index;
+                        HWND hListWnd = GetDlgItem(hWnd, IDC_NEWFILE);
+                        index = SendMessageW(hListWnd, LB_GETCURSEL, 0, 0);
+
+                        if(index != LB_ERR)
+                            EndDialog(hWnd, MAKELONG(fileformat_flags(index),0));
+                    }
+                    return TRUE;
+
+                case IDCANCEL:
+                    EndDialog(hWnd, MAKELONG(ID_NEWFILE_ABORT,0));
+                    return TRUE;
+            }
+    }
+    return FALSE;
+}
+
 static LRESULT OnCreate( HWND hWnd, WPARAM wParam, LPARAM lParam)
 {
     HWND hToolBarWnd, hFormatBarWnd,  hReBarWnd;
@@ -1137,13 +1190,30 @@
         break;
 
     case ID_FILE_NEW:
-        if(prompt_save_changes())
         {
-            set_caption(NULL);
-            wszFileName[0] = '\0';
-            SetWindowTextW(hwndEditor, wszFileName);
-            SendMessageW(hEditorWnd, EM_SETMODIFY, FALSE, 0);
-            fileFormat = SF_RTF;
+            HINSTANCE hInstance = (HINSTANCE)GetWindowLongPtr(hWnd, GWLP_HINSTANCE);
+            int ret = DialogBox(hInstance, MAKEINTRESOURCE(IDD_NEWFILE), hWnd,
+                                (DLGPROC)newfile_proc);
+
+            if(ret != ID_NEWFILE_ABORT)
+            {
+                if(prompt_save_changes())
+                {
+                    SETTEXTEX st;
+
+                    set_caption(NULL);
+                    wszFileName[0] = '\0';
+
+                    st.flags = ST_DEFAULT;
+                    st.codepage = 1200;
+                    SendMessageW(hEditorWnd, EM_SETTEXTEX, (WPARAM)&st, 0);
+
+                    clear_formatting();
+
+                    SendMessageW(hEditorWnd, EM_SETMODIFY, FALSE, 0);
+                    set_fileformat(ret);
+                }
+            }
         }
         break;