[CHARMAP]
authorTimo Kreuzer <timo.kreuzer@reactos.org>
Sun, 20 Feb 2011 10:55:48 +0000 (10:55 +0000)
committerTimo Kreuzer <timo.kreuzer@reactos.org>
Sun, 20 Feb 2011 10:55:48 +0000 (10:55 +0000)
Patch by Carlo Bramini (carlo bramix at libero dot it)
- Make the text copy field a richedit control.
- Use WM_CHAR to copy the characters
- Fix definition of MSFTEDIT_CLASS for the resource compiler

See issue #5275 for more details.

svn path=/trunk/; revision=50830

27 files changed:
reactos/base/applications/charmap/charmap.c
reactos/base/applications/charmap/charmap.rc
reactos/base/applications/charmap/lang/bg-BG.rc
reactos/base/applications/charmap/lang/ca-ES.rc
reactos/base/applications/charmap/lang/cs-CZ.rc
reactos/base/applications/charmap/lang/de-DE.rc
reactos/base/applications/charmap/lang/el-GR.rc
reactos/base/applications/charmap/lang/en-US.rc
reactos/base/applications/charmap/lang/es-ES.rc
reactos/base/applications/charmap/lang/fr-FR.rc
reactos/base/applications/charmap/lang/id-ID.rc
reactos/base/applications/charmap/lang/it-IT.rc
reactos/base/applications/charmap/lang/ja-JP.rc
reactos/base/applications/charmap/lang/ko-KR.rc
reactos/base/applications/charmap/lang/lt-LT.rc
reactos/base/applications/charmap/lang/nl-NL.rc
reactos/base/applications/charmap/lang/no-NO.rc
reactos/base/applications/charmap/lang/pl-PL.rc
reactos/base/applications/charmap/lang/pt-BR.rc
reactos/base/applications/charmap/lang/ru-RU.rc
reactos/base/applications/charmap/lang/sk-SK.rc
reactos/base/applications/charmap/lang/uk-UA.rc
reactos/base/applications/charmap/lang/zh-CN.rc
reactos/base/applications/charmap/lang/zh-TW.rc
reactos/base/applications/charmap/map.c
reactos/base/applications/charmap/precomp.h
reactos/include/psdk/richedit.h

index 4614bf9..6f91d5b 100644 (file)
@@ -133,57 +133,96 @@ ChangeMapFont(HWND hDlg)
     }
 }
 
-
+// Copy collected characters into the clipboard
 static
-VOID
-AddCharToSelection(HWND hText,
-                   WCHAR ch)
+void
+CopyCharacters(HWND hDlg)
 {
-    LPWSTR lpText;
-    INT Len = GetWindowTextLength(hText);
+    HWND hText = GetDlgItem(hDlg, IDC_TEXTBOX);
+    DWORD dwStart, dwEnd;
 
-    if (Len != 0)
-    {
-        lpText = HeapAlloc(GetProcessHeap(),
-                           0,
-                           (Len + 2) * sizeof(WCHAR));
+    // Acquire selection limits
+    SendMessage(hText, EM_GETSEL, (WPARAM)&dwStart, (LPARAM)&dwEnd);
 
-        if (lpText)
-        {
-            LPWSTR lpStr = lpText;
+    // Test if the whose text is unselected
+    if(dwStart == dwEnd) {
+        
+        // Select the whole text
+        SendMessageW(hText, EM_SETSEL, 0, -1);
 
-            SendMessageW(hText,
-                         WM_GETTEXT,
-                         Len + 1,
-                         (LPARAM)lpStr);
+        // Copy text
+        SendMessageW(hText, WM_COPY, 0, 0);
 
-            lpStr += Len;
-            *lpStr = ch;
-            lpStr++;
-            *lpStr = L'\0';
+        // Restore previous values
+        SendMessageW(hText, EM_SETSEL, (WPARAM)dwStart, (LPARAM)dwEnd);
 
-            SendMessageW(hText,
-                         WM_SETTEXT,
-                         0,
-                         (LPARAM)lpText);
+    } else {
 
-            HeapFree(GetProcessHeap(),
-                     0,
-                     lpText);
-        }
+        // Copy text
+        SendMessageW(hText, WM_COPY, 0, 0);
     }
-    else
-    {
-        WCHAR szText[2];
+}
+
+// Recover charset for the given font
+static
+BYTE
+GetFontMetrics(HWND hWnd, HFONT hFont)
+{
+    TEXTMETRIC tmFont;
+    HGDIOBJ    hOldObj;
+    HDC        hDC;
+
+    hDC = GetDC(hWnd);
+    hOldObj = SelectObject(hDC, hFont);
+    GetTextMetrics(hDC, &tmFont);
+    SelectObject(hDC, hOldObj);
+    ReleaseDC(hWnd, hDC);
 
-        szText[0] = ch;
-        szText[1] = L'\0';
+    return tmFont.tmCharSet;
+}
 
-        SendMessageW(hText,
-                     WM_SETTEXT,
-                     0,
-                     (LPARAM)szText);
+// Select a new character
+static
+VOID
+AddCharToSelection(HWND hDlg, WCHAR ch)
+{
+    HWND    hMap = GetDlgItem(hDlg, IDC_FONTMAP);
+    HWND    hText = GetDlgItem(hDlg, IDC_TEXTBOX);
+    HFONT   hFont;
+    LOGFONT lFont;
+    CHARFORMAT cf;
+
+    // Retrieve current character selected
+    if (ch == 0)
+    {
+        ch = (WCHAR) SendMessageW(hMap, FM_GETCHAR, 0, 0);
+        if (!ch)
+            return;
     }
+
+    // Retrieve current selected font
+    hFont = (HFONT)SendMessage(hMap, FM_GETHFONT, 0, 0);
+
+    // Recover LOGFONT structure from hFont
+    if (!GetObject(hFont, sizeof(LOGFONT), &lFont))
+        return;
+
+    // Recover font properties of Richedit control
+    ZeroMemory(&cf, sizeof(cf));
+    cf.cbSize = sizeof(cf);
+    SendMessage(hText, EM_GETCHARFORMAT, SCF_SELECTION, (LPARAM)&cf);
+
+    // Apply properties of the new font
+    cf.bCharSet = GetFontMetrics(hText, hFont);
+
+    // Update font name
+    wcscpy(cf.szFaceName, lFont.lfFaceName);
+
+    // Update font properties
+    SendMessage(hText, EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM)&cf);
+
+    // Send selected character to Richedit
+    SendMessage(hText, WM_CHAR, (WPARAM)ch, 0);
 }
 
 
@@ -204,6 +243,7 @@ DlgProc(HWND hDlg,
         case WM_INITDIALOG:
         {
             HMENU hSysMenu;
+            DWORD evMask;
 
             hSmIcon = LoadImageW(hInstance,
                                  MAKEINTRESOURCEW(IDI_ICON),
@@ -256,6 +296,12 @@ DlgProc(HWND hDlg,
                                 lpAboutText);
                 }
             }
+
+            // Configure Richedi control for sending notification changes.
+            evMask = SendDlgItemMessage(hDlg, IDC_TEXTBOX, EM_GETEVENTMASK, 0, 0);
+            evMask |= ENM_CHANGE;
+            SendDlgItemMessage(hDlg, IDC_TEXTBOX, EM_SETEVENTMASK, 0, (LPARAM)evMask);
+
             return TRUE;
         }
 
@@ -264,41 +310,39 @@ DlgProc(HWND hDlg,
             switch(LOWORD(wParam))
             {
                 case IDC_FONTMAP:
-                {
                     switch (HIWORD(wParam))
                     {
                         case FM_SETCHAR:
-                            AddCharToSelection(GetDlgItem(hDlg, IDC_TEXTBOX),
-                                               LOWORD(lParam));
+                            AddCharToSelection(hDlg, LOWORD(lParam));
                             break;
                     }
-                }
-                break;
+                    break;
 
                 case IDC_FONTCOMBO:
-                {
                     if (HIWORD(wParam) == CBN_SELCHANGE)
                     {
                         ChangeMapFont(hDlg);
                     }
-                }
-                break;
+                    break;
 
                 case IDC_SELECT:
-                {
-                    WCHAR ch;
-                    HWND hMap = GetDlgItem(hDlg, IDC_FONTMAP);
-
-                    ch = (WCHAR) SendMessageW(hMap, FM_GETCHAR, 0, 0);
+                    AddCharToSelection(hDlg, 0);
+                    break;
 
-                    if (ch)
-                    {
-                        AddCharToSelection(GetDlgItem(hDlg, IDC_TEXTBOX),
-                                           ch);
+                case IDC_TEXTBOX:
+                    switch (HIWORD(wParam)) {
+                    case EN_CHANGE:
+                        if (GetWindowTextLength(GetDlgItem(hDlg, IDC_TEXTBOX)) == 0)
+                            EnableWindow(GetDlgItem(hDlg, IDC_COPY), FALSE);
+                        else
+                            EnableWindow(GetDlgItem(hDlg, IDC_COPY), TRUE);
+                        break;
                     }
+                    break;
 
+                case IDC_COPY:
+                    CopyCharacters(hDlg);
                     break;
-                }
 
                 case IDOK:
                     if (hSmIcon)
@@ -306,7 +350,7 @@ DlgProc(HWND hDlg,
                     if (hBgIcon)
                         DestroyIcon(hBgIcon);
                     EndDialog(hDlg, 0);
-                break;
+                    break;
             }
         }
         break;
@@ -347,6 +391,7 @@ wWinMain(HINSTANCE hInst,
 {
     INITCOMMONCONTROLSEX iccx;
     INT Ret = 1;
+    HMODULE hRichEd20;
 
     hInstance = hInst;
 
@@ -356,11 +401,17 @@ wWinMain(HINSTANCE hInst,
 
     if (RegisterMapClasses(hInstance))
     {
-        Ret = DialogBoxW(hInstance,
-                         MAKEINTRESOURCEW(IDD_CHARMAP),
-                         NULL,
-                         DlgProc) >= 0;
+        hRichEd20 = LoadLibraryW(L"RICHED20.DLL");
 
+        if (hRichEd20 != NULL)
+        {
+            Ret = DialogBoxW(hInstance,
+                             MAKEINTRESOURCEW(IDD_CHARMAP),
+                             NULL,
+                             DlgProc) >= 0;
+
+            FreeLibrary(hRichEd20);
+        }
         UnregisterMapClasses(hInstance);
     }
 
index 6c50cb6..ce6b398 100644 (file)
@@ -1,5 +1,6 @@
 #include <windows.h>
 #include <commctrl.h>
+#include <richedit.h>
 #include "resource.h"
 
 
index 243a34b..a4c203b 100644 (file)
@@ -10,7 +10,7 @@ BEGIN
   PUSHBUTTON    "Ïîìîù", IDC_CMHELP, 249, 5, 35, 13
   CONTROL       "", IDC_FONTMAP, "FontMapWnd", WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL, 20, 22, 266, 156
   LTEXT         "Çíàöè çà çàïîìíÿíå:", IDC_STATIC, 3, 188, 75, 9
-  EDITTEXT       IDC_TEXTBOX, 79, 186, 114, 13, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+  CONTROL       "",IDC_TEXTBOX,RICHEDIT_CLASS,ES_AUTOHSCROLL | WS_BORDER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 74, 186, 114, 13
   DEFPUSHBUTTON "Èçáîð", IDC_SELECT, 194, 186, 44, 13
   PUSHBUTTON    "Çàïîìíÿíå", IDC_COPY, 242, 186, 44, 13, WS_DISABLED
   //AUTOCHECKBOX  "Ðaçøèðåí èçãëåä", IDC_ADVVIEW, 10, 204, 64, 9, WS_CHILD | WS_VISIBLE | WS_TABSTOP
index 170cef5..102e1ce 100644 (file)
@@ -10,7 +10,7 @@ BEGIN
   PUSHBUTTON    "Ajuda", IDC_CMHELP, 249, 5, 35, 13
   CONTROL       "", IDC_FONTMAP, "FontMapWnd", WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL, 20, 22, 266, 156
   LTEXT         "Caràcters a copiar :", IDC_STATIC, 6, 188, 66, 9
-  EDITTEXT       IDC_TEXTBOX, 74, 186, 114, 13, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+  CONTROL       "",IDC_TEXTBOX,RICHEDIT_CLASS,ES_AUTOHSCROLL | WS_BORDER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 74, 186, 114, 13
   DEFPUSHBUTTON "Selecciona", IDC_SELECT, 194, 186, 44, 13
   PUSHBUTTON    "Copia", IDC_COPY, 242, 186, 44, 13, WS_DISABLED
   //AUTOCHECKBOX  "Vista avançada", IDC_ADVVIEW, 10, 204, 64, 9, WS_CHILD | WS_VISIBLE | WS_TABSTOP
index 2a917a2..a9d48a5 100644 (file)
@@ -15,7 +15,7 @@ BEGIN
   PUSHBUTTON    "Nápovìda", IDC_CMHELP, 249, 5, 35, 13
   CONTROL       "", IDC_FONTMAP, "FontMapWnd", WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL, 20, 22, 266, 156
   LTEXT         "Znaky ke zkopírování:", IDC_STATIC, 6, 188, 66, 9
-  EDITTEXT       IDC_TEXTBOX, 74, 186, 114, 13, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+  CONTROL       "",IDC_TEXTBOX,RICHEDIT_CLASS,ES_AUTOHSCROLL | WS_BORDER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 74, 186, 114, 13
   DEFPUSHBUTTON "Oznaèit", IDC_SELECT, 194, 186, 44, 13
   PUSHBUTTON    "Kopírovat", IDC_COPY, 242, 186, 44, 13, WS_DISABLED
   //AUTOCHECKBOX  "Pokroèilé zobrazení", IDC_ADVVIEW, 10, 204, 64, 9, WS_CHILD | WS_VISIBLE | WS_TABSTOP
index 9133cdb..cecf8fe 100644 (file)
@@ -10,7 +10,7 @@ BEGIN
   PUSHBUTTON    "Hilfe", IDC_CMHELP, 249, 5, 35, 13
   CONTROL       "", IDC_FONTMAP, "FontMapWnd", WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL, 20, 22, 266, 156
   LTEXT         "Zeichenauswahl:", IDC_STATIC, 6, 188, 66, 9
-  EDITTEXT       IDC_TEXTBOX, 74, 186, 114, 13, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+  CONTROL       "",IDC_TEXTBOX,RICHEDIT_CLASS,ES_AUTOHSCROLL | WS_BORDER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 74, 186, 114, 13
   DEFPUSHBUTTON "Auswählen", IDC_SELECT, 194, 186, 44, 13
   PUSHBUTTON    "Kopieren", IDC_COPY, 242, 186, 44, 13, WS_DISABLED
   //AUTOCHECKBOX  "Erweiterte Ansicht", IDC_ADVVIEW, 10, 204, 64, 9, WS_CHILD | WS_VISIBLE | WS_TABSTOP
index 5d1be14..4ad6c27 100644 (file)
@@ -12,7 +12,7 @@ BEGIN
     CONTROL         "",IDC_FONTMAP,"FontMapWnd",WS_VSCROLL | WS_TABSTOP,20,
                     22,266,156
     LTEXT           "×áñáêôÞñåò ðñïò áíôéãñáöÞ :",IDC_STATIC,6,184,66,17
-    EDITTEXT        IDC_TEXTBOX,74,186,114,13
+    CONTROL         "",IDC_TEXTBOX,RICHEDIT_CLASS,ES_AUTOHSCROLL | WS_BORDER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 74, 186, 114, 13
     DEFPUSHBUTTON   "ÅðéëïãÞ",IDC_SELECT,194,186,44,13
     PUSHBUTTON      "ÁíôéãñáöÞ",IDC_COPY,242,186,44,13,WS_DISABLED
 END
index a3390d7..9cf7dfc 100644 (file)
@@ -10,7 +10,7 @@ BEGIN
   PUSHBUTTON    "Help", IDC_CMHELP, 249, 5, 35, 13
   CONTROL       "", IDC_FONTMAP, "FontMapWnd", WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL, 20, 22, 266, 156
   LTEXT         "Characters to copy:", IDC_STATIC, 6, 188, 66, 9
-  EDITTEXT       IDC_TEXTBOX, 74, 186, 114, 13, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+  CONTROL       "",IDC_TEXTBOX,RICHEDIT_CLASS,ES_AUTOHSCROLL | WS_BORDER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 74, 186, 114, 13
   DEFPUSHBUTTON "Select", IDC_SELECT, 194, 186, 44, 13
   PUSHBUTTON    "Copy", IDC_COPY, 242, 186, 44, 13, WS_DISABLED
   //AUTOCHECKBOX  "Advanced view", IDC_ADVVIEW, 10, 204, 64, 9, WS_CHILD | WS_VISIBLE | WS_TABSTOP
index 1e0735b..ada78f8 100644 (file)
@@ -10,7 +10,7 @@ BEGIN
   PUSHBUTTON    "Ayuda", IDC_CMHELP, 249, 5, 35, 13
   CONTROL       "", IDC_FONTMAP, "FontMapWnd", WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL, 20, 22, 266, 156
   LTEXT         "Caracteres a copiar :", IDC_STATIC, 6, 188, 66, 9
-  EDITTEXT       IDC_TEXTBOX, 74, 186, 114, 13, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+  CONTROL       "",IDC_TEXTBOX,RICHEDIT_CLASS,ES_AUTOHSCROLL | WS_BORDER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 74, 186, 114, 13
   DEFPUSHBUTTON "Seleccionar", IDC_SELECT, 194, 186, 44, 13
   PUSHBUTTON    "Copiar", IDC_COPY, 242, 186, 44, 13, WS_DISABLED
   //AUTOCHECKBOX  "Vista Avanzada", IDC_ADVVIEW, 10, 204, 64, 9, WS_CHILD | WS_VISIBLE | WS_TABSTOP
index dc49060..9a2a206 100644 (file)
@@ -10,7 +10,7 @@ BEGIN
   PUSHBUTTON    "Aide", IDC_CMHELP, 249, 5, 35, 13
   CONTROL       "", IDC_FONTMAP, "FontMapWnd", WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL, 20, 22, 266, 156
   LTEXT         "Caractères à copier :", IDC_STATIC, 6, 188, 66, 9
-  EDITTEXT       IDC_TEXTBOX, 74, 186, 114, 13, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+  CONTROL       "",IDC_TEXTBOX,RICHEDIT_CLASS,ES_AUTOHSCROLL | WS_BORDER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 74, 186, 114, 13
   DEFPUSHBUTTON "Sélectionner", IDC_SELECT, 194, 186, 44, 13
   PUSHBUTTON    "Copier", IDC_COPY, 242, 186, 44, 13, WS_DISABLED
   //AUTOCHECKBOX  "Vue avancée", IDC_ADVVIEW, 10, 204, 64, 9, WS_CHILD | WS_VISIBLE | WS_TABSTOP
index e003f2c..790bf65 100644 (file)
@@ -10,7 +10,7 @@ BEGIN
   PUSHBUTTON    "Bantuan", IDC_CMHELP, 249, 5, 35, 13
   CONTROL       "", IDC_FONTMAP, "FontMapWnd", WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL, 20, 22, 266, 156
   LTEXT         "Karakter untuk di-copy :", IDC_STATIC, 6, 188, 66, 9
-  EDITTEXT       IDC_TEXTBOX, 74, 186, 114, 13, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+  CONTROL       "",IDC_TEXTBOX,RICHEDIT_CLASS,ES_AUTOHSCROLL | WS_BORDER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 74, 186, 114, 13
   DEFPUSHBUTTON "Pilih", IDC_SELECT, 194, 186, 44, 13
   PUSHBUTTON    "Copy", IDC_COPY, 242, 186, 44, 13, WS_DISABLED
   //AUTOCHECKBOX  "Advanced view", IDC_ADVVIEW, 10, 204, 64, 9, WS_CHILD | WS_VISIBLE | WS_TABSTOP
index 2ca73a7..f7f44bb 100644 (file)
@@ -10,7 +10,7 @@ BEGIN
   PUSHBUTTON    "Aiuto", IDC_CMHELP, 249, 5, 35, 13
   CONTROL       "", IDC_FONTMAP, "FontMapWnd", WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL, 20, 22, 266, 156
   LTEXT         "Caratteri da copiare :", IDC_STATIC, 6, 188, 66, 9
-  EDITTEXT       IDC_TEXTBOX, 74, 186, 114, 13, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+  CONTROL       "",IDC_TEXTBOX,RICHEDIT_CLASS,ES_AUTOHSCROLL | WS_BORDER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 74, 186, 114, 13
   DEFPUSHBUTTON "Selezionare", IDC_SELECT, 194, 186, 44, 13
   PUSHBUTTON    "Copiare", IDC_COPY, 242, 186, 44, 13, WS_DISABLED
   //AUTOCHECKBOX  "Visualizzazione avanzata", IDC_ADVVIEW, 10, 204, 64, 9, WS_CHILD | WS_VISIBLE | WS_TABSTOP
index 17c649a..e5e426d 100644 (file)
@@ -10,7 +10,7 @@ BEGIN
   PUSHBUTTON    "\83w\83\8b\83v", IDC_CMHELP, 249, 5, 35, 13
   CONTROL       "", IDC_FONTMAP, "FontMapWnd", WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL, 20, 22, 266, 156
   LTEXT         "\83R\83s\81[\82·\82é\95\8e\9a:", IDC_STATIC, 6, 188, 66, 9
-  EDITTEXT       IDC_TEXTBOX, 74, 186, 114, 13, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+  CONTROL       "",IDC_TEXTBOX,RICHEDIT_CLASS,ES_AUTOHSCROLL | WS_BORDER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 74, 186, 114, 13
   DEFPUSHBUTTON "\91I\91ð", IDC_SELECT, 194, 186, 44, 13
   PUSHBUTTON    "\83R\83s\81[", IDC_COPY, 242, 186, 44, 13, WS_DISABLED
   //AUTOCHECKBOX  "\8fÚ\8d×\95\\\8e¦", IDC_ADVVIEW, 10, 204, 64, 9, WS_CHILD | WS_VISIBLE | WS_TABSTOP
index 7dea599..b700764 100644 (file)
@@ -13,7 +13,7 @@ BEGIN
   PUSHBUTTON    "µµ¿ò¸»", IDC_CMHELP, 249, 5, 35, 13
   CONTROL       "", IDC_FONTMAP, "FontMapWnd", WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL, 20, 22, 266, 156
   LTEXT         "º¹»çÇÒ ¹®ÀÚ:", IDC_STATIC, 6, 188, 66, 9
-  EDITTEXT       IDC_TEXTBOX, 74, 186, 114, 13, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+  CONTROL       "",IDC_TEXTBOX,RICHEDIT_CLASS,ES_AUTOHSCROLL | WS_BORDER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 74, 186, 114, 13
   DEFPUSHBUTTON "¼±ÅÃ", IDC_SELECT, 194, 186, 44, 13
   PUSHBUTTON    "º¹»ç", IDC_COPY, 242, 186, 44, 13, WS_DISABLED
   //AUTOCHECKBOX  "È®Àå ¸ðµå", IDC_ADVVIEW, 10, 204, 64, 9, WS_CHILD | WS_VISIBLE | WS_TABSTOP
index 9101081..9fec374 100644 (file)
@@ -19,7 +19,7 @@ BEGIN
   PUSHBUTTON    "Pagalba", IDC_CMHELP, 249, 5, 35, 13
   CONTROL       "", IDC_FONTMAP, "FontMapWnd", WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL, 20, 22, 266, 156
   LTEXT         "Simboliai kopijavimui:", IDC_STATIC, 6, 188, 72, 9
-  EDITTEXT       IDC_TEXTBOX, 81, 186, 107, 13, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+  CONTROL       "",IDC_TEXTBOX,RICHEDIT_CLASS,ES_AUTOHSCROLL | WS_BORDER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 74, 186, 114, 13
   DEFPUSHBUTTON "Parinkti", IDC_SELECT, 194, 186, 44, 13
   PUSHBUTTON    "Kopijuoti", IDC_COPY, 242, 186, 44, 13, WS_DISABLED
   //AUTOCHECKBOX  "Advanced view", IDC_ADVVIEW, 10, 204, 64, 9, WS_CHILD | WS_VISIBLE | WS_TABSTOP
index a3a72ab..6389f34 100644 (file)
@@ -10,7 +10,7 @@ BEGIN
   PUSHBUTTON    "Help", IDC_CMHELP, 249, 5, 35, 13
   CONTROL       "", IDC_FONTMAP, "FontMapWnd", WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL, 20, 22, 266, 156
   LTEXT         "Te kopiëren tekens:", IDC_STATIC, 6, 188, 66, 9
-  EDITTEXT       IDC_TEXTBOX, 74, 186, 114, 13, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+  CONTROL       "",IDC_TEXTBOX,RICHEDIT_CLASS,ES_AUTOHSCROLL | WS_BORDER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 74, 186, 114, 13
   DEFPUSHBUTTON "Selecteren", IDC_SELECT, 194, 186, 44, 13
   PUSHBUTTON    "Kopiëren", IDC_COPY, 242, 186, 44, 13, WS_DISABLED
   //AUTOCHECKBOX  "Geavanceerde weergave", IDC_ADVVIEW, 10, 204, 64, 9, WS_CHILD | WS_VISIBLE | WS_TABSTOP
index a373057..8fd7c20 100644 (file)
@@ -10,7 +10,7 @@ BEGIN
   PUSHBUTTON    "Hjelp", IDC_CMHELP, 249, 5, 35, 13
   CONTROL       "", IDC_FONTMAP, "FontMapWnd", WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL, 20, 22, 266, 156
   LTEXT         "Kopier følgende tegn:", IDC_STATIC, 6, 188, 66, 9
-  EDITTEXT       IDC_TEXTBOX, 74, 186, 114, 13, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+  CONTROL       "",IDC_TEXTBOX,RICHEDIT_CLASS,ES_AUTOHSCROLL | WS_BORDER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 74, 186, 114, 13
   DEFPUSHBUTTON "Velg", IDC_SELECT, 194, 186, 44, 13
   PUSHBUTTON    "Kopier", IDC_COPY, 242, 186, 44, 13, WS_DISABLED
   //AUTOCHECKBOX  "Avansert visning", IDC_ADVVIEW, 10, 204, 64, 9, WS_CHILD | WS_VISIBLE | WS_TABSTOP
index 8b636ec..75dce3c 100644 (file)
@@ -16,7 +16,7 @@ BEGIN
   PUSHBUTTON    "Pomo&c", IDC_CMHELP, 249, 5, 35, 13
   CONTROL       "", IDC_FONTMAP, "FontMapWnd", WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL, 20, 22, 266, 156
   LTEXT         "&Znaki do skopiowania:", IDC_STATIC, 6, 188, 66, 9
-  EDITTEXT       IDC_TEXTBOX, 74, 186, 114, 13, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+  CONTROL       "",IDC_TEXTBOX,RICHEDIT_CLASS,ES_AUTOHSCROLL | WS_BORDER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 74, 186, 114, 13
   DEFPUSHBUTTON "Wy&bierz", IDC_SELECT, 194, 186, 44, 13
   PUSHBUTTON    "&Kopiuj", IDC_COPY, 242, 186, 44, 13, WS_DISABLED
   //AUTOCHECKBOX  "Widok z&aawansowany", IDC_ADVVIEW, 10, 204, 64, 9, WS_CHILD | WS_VISIBLE | WS_TABSTOP
index a9706ca..6a86e18 100644 (file)
@@ -10,7 +10,7 @@ BEGIN
   PUSHBUTTON    "Aj&uda", IDC_CMHELP, 249, 5, 35, 13
   CONTROL       "", IDC_FONTMAP, "FontMapWnd", WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL, 20, 22, 266, 156
   LTEXT         "Caracteres a serem copiados :", IDC_STATIC, 6, 183, 66, 17
-  EDITTEXT       IDC_TEXTBOX, 74, 186, 114, 13, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+  CONTROL       "",IDC_TEXTBOX,RICHEDIT_CLASS,ES_AUTOHSCROLL | WS_BORDER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 74, 186, 114, 13
   DEFPUSHBUTTON "Selecionar", IDC_SELECT, 194, 186, 46, 13
   PUSHBUTTON    "Copiar", IDC_COPY, 244, 186, 46, 13, WS_DISABLED
   //AUTOCHECKBOX  "Modo de exibição avançado", IDC_ADVVIEW, 10, 204, 64, 9, WS_CHILD | WS_VISIBLE | WS_TABSTOP
index 79941fe..1a6bc93 100644 (file)
@@ -12,7 +12,7 @@ BEGIN
   PUSHBUTTON    "Ñïðàâêà", IDC_CMHELP, 249, 5, 35, 13
   CONTROL       "", IDC_FONTMAP, "FontMapWnd", WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL, 20, 22, 266, 156
   LTEXT         "Êîïèðîâàòü ñèìâîë:", IDC_STATIC, 6, 188, 95, 9
-  EDITTEXT       IDC_TEXTBOX, 80, 186, 109, 13, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+  CONTROL       "",IDC_TEXTBOX,RICHEDIT_CLASS,ES_AUTOHSCROLL | WS_BORDER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 74, 186, 114, 13
   DEFPUSHBUTTON "Âûáðàòü", IDC_SELECT, 194, 186, 44, 13
   PUSHBUTTON    "Êîïèðîâàòü", IDC_COPY, 242, 186, 44, 13, WS_DISABLED
   //AUTOCHECKBOX  "Advanced view", IDC_ADVVIEW, 10, 204, 64, 9, WS_CHILD | WS_VISIBLE | WS_TABSTOP
index 628801f..7ab74b1 100644 (file)
@@ -19,7 +19,7 @@ BEGIN
   PUSHBUTTON    "&Pomocník", IDC_CMHELP, 249, 5, 35, 13
   CONTROL       "", IDC_FONTMAP, "FontMapWnd", WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL, 20, 22, 266, 156
   LTEXT         "Kopírova\9d &znaky:", IDC_STATIC, 6, 188, 66, 9
-  EDITTEXT       IDC_TEXTBOX, 74, 186, 114, 13, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+  CONTROL       "",IDC_TEXTBOX,RICHEDIT_CLASS,ES_AUTOHSCROLL | WS_BORDER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 74, 186, 114, 13
   DEFPUSHBUTTON "&Vybra\9d", IDC_SELECT, 194, 186, 44, 13
   PUSHBUTTON    "&Kopírova\9d", IDC_COPY, 242, 186, 44, 13, WS_DISABLED
   //AUTOCHECKBOX  "R&oz\9aírené zobrazenie", IDC_ADVVIEW, 10, 204, 75, 9, WS_CHILD | WS_VISIBLE | WS_TABSTOP
index 3c82d76..cabd820 100644 (file)
@@ -18,7 +18,7 @@ BEGIN
   PUSHBUTTON    "Äîâ³äêà", IDC_CMHELP, 249, 5, 35, 13
   CONTROL       "", IDC_FONTMAP, "FontMapWnd", WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL, 20, 22, 266, 156
   LTEXT         "Äëÿ êîï³þâàííÿ :", IDC_STATIC, 6, 188, 66, 9
-  EDITTEXT       IDC_TEXTBOX, 74, 186, 114, 13, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+  CONTROL       "",IDC_TEXTBOX,RICHEDIT_CLASS,ES_AUTOHSCROLL | WS_BORDER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 74, 186, 114, 13
   DEFPUSHBUTTON "Âèáðàòè", IDC_SELECT, 194, 186, 44, 13
   PUSHBUTTON    "Êîï³þâàòè", IDC_COPY, 242, 186, 44, 13, WS_DISABLED
   //AUTOCHECKBOX  "Ðîçøèðåíèé âèãëÿä", IDC_ADVVIEW, 10, 204, 64, 9, WS_CHILD | WS_VISIBLE | WS_TABSTOP
index 9b81872..7fdfffd 100644 (file)
@@ -12,7 +12,7 @@ BEGIN
   PUSHBUTTON    "˵Ã÷", IDC_CMHELP, 249, 5, 35, 13
   CONTROL       "", IDC_FONTMAP, "FontMapWnd", WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL, 20, 22, 266, 156
   LTEXT         "´ý¸´ÖƵÄ×Ö·û:", IDC_STATIC, 6, 188, 66, 9
-  EDITTEXT       IDC_TEXTBOX, 74, 186, 114, 13, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+  CONTROL       "",IDC_TEXTBOX,RICHEDIT_CLASS,ES_AUTOHSCROLL | WS_BORDER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 74, 186, 114, 13
   DEFPUSHBUTTON "Ñ¡Ôñ", IDC_SELECT, 194, 186, 44, 13
   PUSHBUTTON    "¸´ÖÆ", IDC_COPY, 242, 186, 44, 13, WS_DISABLED
   //AUTOCHECKBOX  "Advanced view", IDC_ADVVIEW, 10, 204, 64, 9, WS_CHILD | WS_VISIBLE | WS_TABSTOP
index 4cb9841..ba36b67 100644 (file)
@@ -12,7 +12,7 @@ BEGIN
   PUSHBUTTON    "»¡©ú", IDC_CMHELP, 249, 5, 35, 13
   CONTROL       "", IDC_FONTMAP, "FontMapWnd", WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL, 20, 22, 266, 156
   LTEXT         "«Ý½Æ»sªº¦r²Å¡G", IDC_STATIC, 6, 188, 66, 9
-  EDITTEXT       IDC_TEXTBOX, 74, 186, 114, 13, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+  CONTROL       "",IDC_TEXTBOX,RICHEDIT_CLASS,ES_AUTOHSCROLL | WS_BORDER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 74, 186, 114, 13
   DEFPUSHBUTTON "¿ï¾Ü", IDC_SELECT, 194, 186, 44, 13
   PUSHBUTTON    "½Æ»s", IDC_COPY, 242, 186, 44, 13, WS_DISABLED
   //AUTOCHECKBOX  "Advanced view", IDC_ADVVIEW, 10, 204, 64, 9, WS_CHILD | WS_VISIBLE | WS_TABSTOP
index b9e37cf..8cbda5a 100644 (file)
@@ -529,6 +529,9 @@ MapWndProc(HWND hwnd,
             return infoPtr->pActiveCell->ch;
         }
 
+        case FM_GETHFONT:
+            return (LRESULT)infoPtr->hFont;
+
         case WM_PAINT:
         {
             OnPaint(infoPtr,
index 4e0324c..597d9f2 100644 (file)
@@ -5,6 +5,7 @@
 #include <stdlib.h>
 #include <windows.h>
 #include <commctrl.h>
+#include <richedit.h>
 #include "resource.h"
 
 #define XCELLS 20
 #define XLARGE 45
 #define YLARGE 25
 
-#define FM_SETFONT (WM_USER + 1)
-#define FM_GETCHAR (WM_USER + 2)
-#define FM_SETCHAR (WM_USER + 3)
+#define FM_SETFONT  (WM_USER + 1)
+#define FM_GETCHAR  (WM_USER + 2)
+#define FM_SETCHAR  (WM_USER + 3)
+#define FM_GETHFONT (WM_USER + 4)
 
 extern HINSTANCE hInstance;
 
index 095cc8a..b0dcd04 100644 (file)
@@ -32,19 +32,20 @@ extern "C" {
 
 #define cchTextLimitDefault 0x7fff
 
-#if defined(__GNUC__)
-# define MSFTEDIT_CLASS (const WCHAR []){ 'R','i','c','h','E','d','i','t','5','0','W',0 }
-#elif defined(_MSC_VER)
+#if defined(_MSC_VER) || defined(RC_INVOKED)
 # define MSFTEDIT_CLASS L"RichEdit50W"
+#elif defined(__GNUC__)
+# define MSFTEDIT_CLASS (const WCHAR []){ 'R','i','c','h','E','d','i','t','5','0','W',0 }
 #else
 static const WCHAR MSFTEDIT_CLASS[] = { 'R','i','c','h','E','d','i','t','5','0','W',0 };
 #endif
 
 #define RICHEDIT_CLASS20A      "RichEdit20A"
-#if defined(__GNUC__)
+
+#if defined(_MSC_VER) || defined(RC_INVOKED)
+# define RICHEDIT_CLASS20W  L"RichEdit20W"
+#elif defined(__GNUC__)
 # define RICHEDIT_CLASS20W (const WCHAR []){ 'R','i','c','h','E','d','i','t','2','0','W',0 }
-#elif defined(_MSC_VER)
-# define RICHEDIT_CLASS20W      L"RichEdit20W"
 #else
 static const WCHAR RICHEDIT_CLASS20W[] = { 'R','i','c','h','E','d','i','t','2','0','W',0 };
 #endif