Index: reactos/dll/cpl/console/console.h =================================================================== --- reactos/dll/cpl/console/console.h (revision 74385) +++ reactos/dll/cpl/console/console.h (working copy) @@ -1,6 +1,7 @@ #ifndef CONSOLE_H__ #define CONSOLE_H__ +#include #include #define WIN32_NO_STATUS @@ -36,5 +37,6 @@ BYTE CodePageToCharSet(UINT CodePage); VOID PaintConsole(LPDRAWITEMSTRUCT drawItem, PCONSOLE_STATE_INFO pConInfo); BOOL PaintText(LPDRAWITEMSTRUCT drawItem, PCONSOLE_STATE_INFO pConInfo, TEXT_TYPE TextMode); +HFONT CreateConsoleFont(HWND hwndDlg, PCONSOLE_STATE_INFO pConInfo); #endif /* CONSOLE_H__ */ Index: reactos/dll/cpl/console/font.c =================================================================== --- reactos/dll/cpl/console/font.c (revision 74385) +++ reactos/dll/cpl/console/font.c (working copy) @@ -309,6 +309,48 @@ PCONSOLE_STATE_INFO pConInfo); static VOID +SelectFontSize(HWND hwndDlg, PCONSOLE_STATE_INFO ConInfo) +{ + WCHAR Buffer[32]; + HFONT hFont; + HWND hListBox = GetDlgItem(hwndDlg, IDC_LBOX_FONTSIZE); + HDC hDC; + INT PointSize, Index, Count, Value; + LOGFONTW lf; + + hFont = CreateConsoleFont(hwndDlg, ConInfo); + GetObjectW(hFont, sizeof(lf), &lf); + DeleteObject(hFont); + + hDC = GetDC(hListBox); + PointSize = MulDiv(abs(lf.lfHeight), 72, GetDeviceCaps(hDC, LOGPIXELSY)); + ReleaseDC(hListBox, hDC); + DPRINT("PointSize: %d\n", PointSize); + + if (PointSize == 0) + PointSize = 12; + + swprintf(Buffer, L"%2d", PointSize); + Index = SendMessageW(hListBox, LB_FINDSTRINGEXACT, -1, (LPARAM)Buffer); + if (Index == LB_ERR) + { + Count = SendMessageW(hListBox, LB_GETCOUNT, 0, 0); + for (Index = 0; Index < Count; ++Index) + { + SendMessageW(hListBox, LB_GETTEXT, Index, (LPARAM)Buffer); + Value = _wtoi(Buffer); + if (PointSize <= Value) + break; + } + if (Index == Count) + --Index; + } + SendMessageW(hListBox, LB_SETCURSEL, Index, 0); + + FontSizeChange(hwndDlg, ConInfo); +} + +static VOID FontTypeChange(HWND hwndDlg, PCONSOLE_STATE_INFO pConInfo) { @@ -354,7 +396,6 @@ HeapFree(GetProcessHeap(), 0, FaceName); - // TODO: Select a default font size???? FontSizeChange(hwndDlg, pConInfo); // InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_FONT_WINDOW_PREVIEW), NULL, TRUE); @@ -368,6 +409,9 @@ INT nSel; ULONG FontSize; WCHAR FontSizeStr[20]; + LOGFONTW lf; + INT Width, Height; + HFONT hFont; nSel = (INT)SendDlgItemMessageW(hwndDlg, IDC_LBOX_FONTSIZE, LB_GETCURSEL, 0, 0); @@ -389,9 +433,19 @@ InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_FONT_WINDOW_PREVIEW), NULL, TRUE); InvalidateRect(GetDlgItem(hwndDlg, IDC_STATIC_SELECT_FONT_PREVIEW), NULL, TRUE); - swprintf(FontSizeStr, L"%2d", pConInfo->FontSize.X); + hFont = CreateConsoleFont(hwndDlg, pConInfo); + GetObjectW(hFont, sizeof(lf), &lf); + DeleteObject(hFont); + + /* pixels to points */ + Height = abs(lf.lfHeight); + Width = lf.lfWidth; + if (Width == 0) + Width = Height / 2; + + swprintf(FontSizeStr, L"%2d", Width); SetWindowText(GetDlgItem(hwndDlg, IDC_FONT_SIZE_X), FontSizeStr); - swprintf(FontSizeStr, L"%2d", pConInfo->FontSize.Y); + swprintf(FontSizeStr, L"%2d", Height); SetWindowText(GetDlgItem(hwndDlg, IDC_FONT_SIZE_Y), FontSizeStr); } @@ -457,8 +511,15 @@ LB_SETCURSEL, (WPARAM)idx, 0); } + if (ConInfo->FontWeight >= FW_BOLD) + CheckDlgButton(hwndDlg, IDC_CHECK_BOLD_FONTS, BST_CHECKED); + else + CheckDlgButton(hwndDlg, IDC_CHECK_BOLD_FONTS, BST_UNCHECKED); + FontTypeChange(hwndDlg, ConInfo); + SelectFontSize(hwndDlg, ConInfo); + return TRUE; } @@ -510,11 +571,23 @@ break; } } + break; + } + case BN_CLICKED: + { + if (LOWORD(wParam) == IDC_CHECK_BOLD_FONTS) + { + if (IsDlgButtonChecked(hwndDlg, IDC_CHECK_BOLD_FONTS) == BST_CHECKED) + ConInfo->FontWeight = FW_BOLD; + else + ConInfo->FontWeight = FW_NORMAL; + FontTypeChange(hwndDlg, ConInfo); + PropSheet_Changed(GetParent(hwndDlg), hwndDlg); + } break; } } - break; } Index: reactos/dll/cpl/console/lang/bg-BG.rc =================================================================== --- reactos/dll/cpl/console/lang/bg-BG.rc (revision 74385) +++ reactos/dll/cpl/console/lang/bg-BG.rc (working copy) @@ -37,7 +37,7 @@ CONTROL "", IDC_STATIC_FONT_WINDOW_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 10, 20, 163, 74 LISTBOX IDC_LBOX_FONTSIZE, 181, 20, 55, 80, LBS_SORT | LBS_HASSTRINGS | WS_VSCROLL LTEXT "&Шрифт:", -1, 10, 105, 33, 10 - CHECKBOX "&Получери шрифтове", IDC_CHECK_BOLD_FONTS, 38, 105, 85, 10 + AUTOCHECKBOX "&Получери шрифтове", IDC_CHECK_BOLD_FONTS, 38, 105, 85, 10 LISTBOX IDC_LBOX_FONTTYPE, 10, 120, 110, 40, LBS_SORT | LBS_HASSTRINGS | WS_VSCROLL GROUPBOX "", IDC_GROUPBOX_FONT_NAME, 6, 156, 241, 50 CONTROL "", IDC_STATIC_SELECT_FONT_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 16, 165, 95, 35 Index: reactos/dll/cpl/console/lang/cs-CZ.rc =================================================================== --- reactos/dll/cpl/console/lang/cs-CZ.rc (revision 74385) +++ reactos/dll/cpl/console/lang/cs-CZ.rc (working copy) @@ -43,7 +43,7 @@ CONTROL "", IDC_STATIC_FONT_WINDOW_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 10, 20, 163, 74 LISTBOX IDC_LBOX_FONTSIZE, 181, 20, 55, 80, LBS_SORT | LBS_HASSTRINGS | WS_VSCROLL LTEXT "&Písmo:", -1, 10, 105, 33, 10 - CHECKBOX "&Tučná písma", IDC_CHECK_BOLD_FONTS, 56, 105, 60, 10 + AUTOCHECKBOX "&Tučná písma", IDC_CHECK_BOLD_FONTS, 56, 105, 60, 10 LISTBOX IDC_LBOX_FONTTYPE, 10, 120, 110, 40, LBS_SORT | LBS_HASSTRINGS | WS_VSCROLL GROUPBOX "", IDC_GROUPBOX_FONT_NAME, 6, 156, 241, 50 CONTROL "", IDC_STATIC_SELECT_FONT_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 16, 165, 95, 35 Index: reactos/dll/cpl/console/lang/de-DE.rc =================================================================== --- reactos/dll/cpl/console/lang/de-DE.rc (revision 74385) +++ reactos/dll/cpl/console/lang/de-DE.rc (working copy) @@ -39,7 +39,7 @@ CONTROL "", IDC_STATIC_FONT_WINDOW_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 10, 20, 115, 70 LISTBOX IDC_LBOX_FONTSIZE, 130, 20, 55, 80, LBS_SORT | LBS_HASSTRINGS | WS_VSCROLL LTEXT "&Schrift", -1, 10, 105, 35, 10 - CHECKBOX "&Fette Schriften", IDC_CHECK_BOLD_FONTS, 45, 105, 60, 10 + AUTOCHECKBOX "&Fette Schriften", IDC_CHECK_BOLD_FONTS, 45, 105, 60, 10 LISTBOX IDC_LBOX_FONTTYPE, 10, 120, 110, 50, LBS_SORT | LBS_HASSTRINGS | WS_VSCROLL GROUPBOX "", IDC_GROUPBOX_FONT_NAME, 10, 155, 200, 50 CONTROL "", IDC_STATIC_SELECT_FONT_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 15, 165, 95, 35 Index: reactos/dll/cpl/console/lang/en-US.rc =================================================================== --- reactos/dll/cpl/console/lang/en-US.rc (revision 74385) +++ reactos/dll/cpl/console/lang/en-US.rc (working copy) @@ -37,7 +37,7 @@ CONTROL "", IDC_STATIC_FONT_WINDOW_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 10, 20, 163, 74 LISTBOX IDC_LBOX_FONTSIZE, 181, 20, 55, 80, LBS_SORT | LBS_HASSTRINGS | WS_VSCROLL LTEXT "&Font:", -1, 10, 105, 33, 10 - CHECKBOX "&Bold fonts", IDC_CHECK_BOLD_FONTS, 56, 105, 60, 10 + AUTOCHECKBOX "&Bold fonts", IDC_CHECK_BOLD_FONTS, 56, 105, 60, 10 LISTBOX IDC_LBOX_FONTTYPE, 10, 120, 110, 40, LBS_SORT | LBS_HASSTRINGS | WS_VSCROLL GROUPBOX "", IDC_GROUPBOX_FONT_NAME, 6, 156, 241, 50 CONTROL "", IDC_STATIC_SELECT_FONT_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 16, 165, 95, 35 Index: reactos/dll/cpl/console/lang/es-ES.rc =================================================================== --- reactos/dll/cpl/console/lang/es-ES.rc (revision 74385) +++ reactos/dll/cpl/console/lang/es-ES.rc (working copy) @@ -39,7 +39,7 @@ CONTROL "", IDC_STATIC_FONT_WINDOW_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 10, 20, 115, 70 LISTBOX IDC_LBOX_FONTSIZE, 130, 20, 55, 80, LBS_SORT | LBS_HASSTRINGS | WS_VSCROLL LTEXT "&Fuente", -1, 10, 105, 35, 10 - CHECKBOX "&Negrita", IDC_CHECK_BOLD_FONTS, 45, 105, 60, 10 + AUTOCHECKBOX "&Negrita", IDC_CHECK_BOLD_FONTS, 45, 105, 60, 10 LISTBOX IDC_LBOX_FONTTYPE, 10, 120, 110, 50, LBS_SORT | LBS_HASSTRINGS | WS_VSCROLL GROUPBOX "", IDC_GROUPBOX_FONT_NAME, 10, 155, 200, 50 CONTROL "", IDC_STATIC_SELECT_FONT_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 15, 165, 95, 35 Index: reactos/dll/cpl/console/lang/fr-FR.rc =================================================================== --- reactos/dll/cpl/console/lang/fr-FR.rc (revision 74385) +++ reactos/dll/cpl/console/lang/fr-FR.rc (working copy) @@ -39,7 +39,7 @@ CONTROL "", IDC_STATIC_FONT_WINDOW_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 10, 20, 163, 74 LISTBOX IDC_LBOX_FONTSIZE, 181, 20, 55, 80, LBS_SORT | LBS_HASSTRINGS | WS_VSCROLL LTEXT "&Police :", -1, 10, 105, 33, 10 - CHECKBOX "&Gras", IDC_CHECK_BOLD_FONTS, 56, 105, 60, 10 + AUTOCHECKBOX "&Gras", IDC_CHECK_BOLD_FONTS, 56, 105, 60, 10 LISTBOX IDC_LBOX_FONTTYPE, 10, 120, 110, 40, LBS_SORT | LBS_HASSTRINGS | WS_VSCROLL GROUPBOX "", IDC_GROUPBOX_FONT_NAME, 6, 156, 241, 50 CONTROL "", IDC_STATIC_SELECT_FONT_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 16, 165, 95, 35 Index: reactos/dll/cpl/console/lang/he-IL.rc =================================================================== --- reactos/dll/cpl/console/lang/he-IL.rc (revision 74385) +++ reactos/dll/cpl/console/lang/he-IL.rc (working copy) @@ -39,7 +39,7 @@ CONTROL "", IDC_STATIC_FONT_WINDOW_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 10, 20, 163, 74 LISTBOX IDC_LBOX_FONTSIZE, 181, 20, 55, 80, LBS_SORT | LBS_HASSTRINGS | WS_VSCROLL LTEXT "גופן:", -1, 10, 105, 33, 10 - CHECKBOX "גופנים מודגשים", IDC_CHECK_BOLD_FONTS, 41, 105, 33, 10 + AUTOCHECKBOX "גופנים מודגשים", IDC_CHECK_BOLD_FONTS, 41, 105, 33, 10 LISTBOX IDC_LBOX_FONTTYPE, 10, 120, 110, 40, LBS_SORT | LBS_HASSTRINGS | WS_VSCROLL GROUPBOX "", IDC_GROUPBOX_FONT_NAME, 6, 156, 241, 50 CONTROL "", IDC_STATIC_SELECT_FONT_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 16, 165, 95, 35 Index: reactos/dll/cpl/console/lang/id-ID.rc =================================================================== --- reactos/dll/cpl/console/lang/id-ID.rc (revision 74385) +++ reactos/dll/cpl/console/lang/id-ID.rc (working copy) @@ -39,7 +39,7 @@ CONTROL "", IDC_STATIC_FONT_WINDOW_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 10, 20, 115, 70 LISTBOX IDC_LBOX_FONTSIZE, 130, 20, 55, 80, LBS_SORT | LBS_HASSTRINGS | WS_VSCROLL LTEXT "&Font", -1, 10, 105, 35, 10 - CHECKBOX "Font &tebal", IDC_CHECK_BOLD_FONTS, 45, 105, 60, 10 + AUTOCHECKBOX "Font &tebal", IDC_CHECK_BOLD_FONTS, 45, 105, 60, 10 LISTBOX IDC_LBOX_FONTTYPE, 10, 120, 110, 50, LBS_SORT | LBS_HASSTRINGS | WS_VSCROLL GROUPBOX "", IDC_GROUPBOX_FONT_NAME, 10, 155, 200, 50 CONTROL "", IDC_STATIC_SELECT_FONT_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 15, 165, 95, 35 Index: reactos/dll/cpl/console/lang/it-IT.rc =================================================================== --- reactos/dll/cpl/console/lang/it-IT.rc (revision 74385) +++ reactos/dll/cpl/console/lang/it-IT.rc (working copy) @@ -39,7 +39,7 @@ CONTROL "", IDC_STATIC_FONT_WINDOW_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 10, 20, 115, 70 LISTBOX IDC_LBOX_FONTSIZE, 130, 20, 55, 80, LBS_SORT | LBS_HASSTRINGS | WS_VSCROLL LTEXT "&Font", -1, 10, 105, 35, 10 - CHECKBOX "&Grassetto fonts", IDC_CHECK_BOLD_FONTS, 45, 105, 60, 10 + AUTOCHECKBOX "&Grassetto fonts", IDC_CHECK_BOLD_FONTS, 45, 105, 60, 10 LISTBOX IDC_LBOX_FONTTYPE, 10, 120, 110, 50, LBS_SORT | LBS_HASSTRINGS | WS_VSCROLL GROUPBOX "", IDC_GROUPBOX_FONT_NAME, 10, 155, 200, 50 CONTROL "", IDC_STATIC_SELECT_FONT_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 15, 165, 95, 35 Index: reactos/dll/cpl/console/lang/ja-JP.rc =================================================================== --- reactos/dll/cpl/console/lang/ja-JP.rc (revision 74385) +++ reactos/dll/cpl/console/lang/ja-JP.rc (working copy) @@ -37,7 +37,7 @@ CONTROL "", IDC_STATIC_FONT_WINDOW_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 10, 20, 163, 74 LISTBOX IDC_LBOX_FONTSIZE, 181, 20, 55, 80, LBS_SORT | LBS_HASSTRINGS | WS_VSCROLL LTEXT "フォント(&F):", -1, 10, 105, 33, 10 - CHECKBOX "太字のフォント(&B)", IDC_CHECK_BOLD_FONTS, 56, 105, 60, 10 + AUTOCHECKBOX "太字のフォント(&B)", IDC_CHECK_BOLD_FONTS, 56, 105, 60, 10 LISTBOX IDC_LBOX_FONTTYPE, 10, 120, 110, 40, LBS_SORT | LBS_HASSTRINGS | WS_VSCROLL GROUPBOX "", IDC_GROUPBOX_FONT_NAME, 6, 156, 241, 50 CONTROL "", IDC_STATIC_SELECT_FONT_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 16, 165, 95, 35 Index: reactos/dll/cpl/console/lang/no-NO.rc =================================================================== --- reactos/dll/cpl/console/lang/no-NO.rc (revision 74385) +++ reactos/dll/cpl/console/lang/no-NO.rc (working copy) @@ -37,7 +37,7 @@ CONTROL "", IDC_STATIC_FONT_WINDOW_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 10, 20, 163, 74 LISTBOX IDC_LBOX_FONTSIZE, 181, 20, 55, 80, LBS_SORT | LBS_HASSTRINGS | WS_VSCROLL LTEXT "&Skrift:", -1, 10, 105, 33, 10 - CHECKBOX "&Fet skrift", IDC_CHECK_BOLD_FONTS, 56, 105, 60, 10 + AUTOCHECKBOX "&Fet skrift", IDC_CHECK_BOLD_FONTS, 56, 105, 60, 10 LISTBOX IDC_LBOX_FONTTYPE, 10, 120, 110, 40, LBS_SORT | LBS_HASSTRINGS | WS_VSCROLL GROUPBOX "", IDC_GROUPBOX_FONT_NAME, 6, 156, 241, 50 CONTROL "", IDC_STATIC_SELECT_FONT_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 16, 165, 95, 35 Index: reactos/dll/cpl/console/lang/pl-PL.rc =================================================================== --- reactos/dll/cpl/console/lang/pl-PL.rc (revision 74385) +++ reactos/dll/cpl/console/lang/pl-PL.rc (working copy) @@ -44,7 +44,7 @@ CONTROL "", IDC_STATIC_FONT_WINDOW_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 10, 20, 115, 70 LISTBOX IDC_LBOX_FONTSIZE, 130, 20, 55, 80, LBS_SORT | LBS_HASSTRINGS | WS_VSCROLL LTEXT "&Czcionka", -1, 10, 105, 35, 10 - CHECKBOX "&Pogrubiona czcionka", IDC_CHECK_BOLD_FONTS, 45, 105, 60, 10 + AUTOCHECKBOX "&Pogrubiona czcionka", IDC_CHECK_BOLD_FONTS, 45, 105, 60, 10 LISTBOX IDC_LBOX_FONTTYPE, 10, 120, 110, 50, LBS_SORT | LBS_HASSTRINGS | WS_VSCROLL GROUPBOX "", IDC_GROUPBOX_FONT_NAME, 10, 155, 200, 50 CONTROL "", IDC_STATIC_SELECT_FONT_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 15, 165, 95, 35 Index: reactos/dll/cpl/console/lang/pt-BR.rc =================================================================== --- reactos/dll/cpl/console/lang/pt-BR.rc (revision 74385) +++ reactos/dll/cpl/console/lang/pt-BR.rc (working copy) @@ -37,7 +37,7 @@ CONTROL "", IDC_STATIC_FONT_WINDOW_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 10, 20, 163, 74 LISTBOX IDC_LBOX_FONTSIZE, 181, 20, 55, 80, LBS_SORT | LBS_HASSTRINGS | WS_VSCROLL LTEXT "&Fonte", -1, 10, 105, 33, 10 - CHECKBOX "Fontes em &negrito", IDC_CHECK_BOLD_FONTS, 46, 105, 76, 10 + AUTOCHECKBOX "Fontes em &negrito", IDC_CHECK_BOLD_FONTS, 46, 105, 76, 10 LISTBOX IDC_LBOX_FONTTYPE, 10, 120, 110, 40, LBS_SORT | LBS_HASSTRINGS | WS_VSCROLL GROUPBOX "", IDC_GROUPBOX_FONT_NAME, 6, 156, 241, 50 CONTROL "", IDC_STATIC_SELECT_FONT_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 16, 165, 95, 35 Index: reactos/dll/cpl/console/lang/ro-RO.rc =================================================================== --- reactos/dll/cpl/console/lang/ro-RO.rc (revision 74385) +++ reactos/dll/cpl/console/lang/ro-RO.rc (working copy) @@ -46,7 +46,7 @@ CONTROL "", IDC_STATIC_FONT_WINDOW_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 10, 20, 163, 74 LISTBOX IDC_LBOX_FONTSIZE, 181, 20, 55, 80, LBS_SORT | LBS_HASSTRINGS | WS_VSCROLL LTEXT "F&ont:", -1, 10, 105, 33, 10 - CHECKBOX "&Aldin", IDC_CHECK_BOLD_FONTS, 56, 105, 60, 10 + AUTOCHECKBOX "&Aldin", IDC_CHECK_BOLD_FONTS, 56, 105, 60, 10 LISTBOX IDC_LBOX_FONTTYPE, 10, 120, 110, 40, LBS_SORT | LBS_HASSTRINGS | WS_VSCROLL GROUPBOX "", IDC_GROUPBOX_FONT_NAME, 6, 156, 241, 50 CONTROL "", IDC_STATIC_SELECT_FONT_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 16, 165, 95, 35 Index: reactos/dll/cpl/console/lang/ru-RU.rc =================================================================== --- reactos/dll/cpl/console/lang/ru-RU.rc (revision 74385) +++ reactos/dll/cpl/console/lang/ru-RU.rc (working copy) @@ -39,7 +39,7 @@ CONTROL "", IDC_STATIC_FONT_WINDOW_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 10, 20, 163, 74 LISTBOX IDC_LBOX_FONTSIZE, 181, 20, 55, 80, LBS_SORT | LBS_HASSTRINGS | WS_VSCROLL LTEXT "&Шрифт:", -1, 10, 105, 33, 10 - CHECKBOX "&Жирный", IDC_CHECK_BOLD_FONTS, 56, 105, 60, 10 + AUTOCHECKBOX "&Жирный", IDC_CHECK_BOLD_FONTS, 56, 105, 60, 10 LISTBOX IDC_LBOX_FONTTYPE, 10, 120, 110, 40, LBS_SORT | LBS_HASSTRINGS | WS_VSCROLL GROUPBOX "", IDC_GROUPBOX_FONT_NAME, 6, 156, 241, 50 CONTROL "", IDC_STATIC_SELECT_FONT_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 16, 165, 95, 35 Index: reactos/dll/cpl/console/lang/sk-SK.rc =================================================================== --- reactos/dll/cpl/console/lang/sk-SK.rc (revision 74385) +++ reactos/dll/cpl/console/lang/sk-SK.rc (working copy) @@ -41,7 +41,7 @@ CONTROL "", IDC_STATIC_FONT_WINDOW_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 10, 20, 163, 74 LISTBOX IDC_LBOX_FONTSIZE, 181, 20, 55, 80, LBS_SORT | LBS_HASSTRINGS | WS_VSCROLL LTEXT "&Písmo:", -1, 10, 105, 33, 10 - CHECKBOX "&Tučné písma", IDC_CHECK_BOLD_FONTS, 56, 105, 60, 10 + AUTOCHECKBOX "&Tučné písma", IDC_CHECK_BOLD_FONTS, 56, 105, 60, 10 LISTBOX IDC_LBOX_FONTTYPE, 10, 120, 110, 40, LBS_SORT | LBS_HASSTRINGS | WS_VSCROLL GROUPBOX "", IDC_GROUPBOX_FONT_NAME, 6, 156, 241, 50 CONTROL "", IDC_STATIC_SELECT_FONT_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 16, 165, 95, 35 Index: reactos/dll/cpl/console/lang/sq-AL.rc =================================================================== --- reactos/dll/cpl/console/lang/sq-AL.rc (revision 74385) +++ reactos/dll/cpl/console/lang/sq-AL.rc (working copy) @@ -41,7 +41,7 @@ CONTROL "", IDC_STATIC_FONT_WINDOW_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 10, 20, 163, 74 LISTBOX IDC_LBOX_FONTSIZE, 181, 20, 55, 80, LBS_SORT | LBS_HASSTRINGS | WS_VSCROLL LTEXT "&Font:", -1, 10, 105, 33, 10 - CHECKBOX "&Bold fonts", IDC_CHECK_BOLD_FONTS, 56, 105, 60, 10 + AUTOCHECKBOX "&Bold fonts", IDC_CHECK_BOLD_FONTS, 56, 105, 60, 10 LISTBOX IDC_LBOX_FONTTYPE, 10, 120, 110, 40, LBS_SORT | LBS_HASSTRINGS | WS_VSCROLL GROUPBOX "", IDC_GROUPBOX_FONT_NAME, 6, 156, 241, 50 CONTROL "", IDC_STATIC_SELECT_FONT_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 16, 165, 95, 35 Index: reactos/dll/cpl/console/lang/tr-TR.rc =================================================================== --- reactos/dll/cpl/console/lang/tr-TR.rc (revision 74385) +++ reactos/dll/cpl/console/lang/tr-TR.rc (working copy) @@ -39,7 +39,7 @@ CONTROL "", IDC_STATIC_FONT_WINDOW_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 10, 20, 163, 74 LISTBOX IDC_LBOX_FONTSIZE, 181, 20, 55, 80, LBS_SORT | LBS_HASSTRINGS | WS_VSCROLL LTEXT "&Yazı Tipi:", -1, 10, 105, 33, 10 - CHECKBOX "&Kalın Yazı Tipleri", IDC_CHECK_BOLD_FONTS, 56, 105, 60, 10 + AUTOCHECKBOX "&Kalın Yazı Tipleri", IDC_CHECK_BOLD_FONTS, 56, 105, 60, 10 LISTBOX IDC_LBOX_FONTTYPE, 10, 120, 110, 40, LBS_SORT | LBS_HASSTRINGS | WS_VSCROLL GROUPBOX "", IDC_GROUPBOX_FONT_NAME, 6, 156, 241, 50 CONTROL "", IDC_STATIC_SELECT_FONT_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 16, 165, 95, 35 Index: reactos/dll/cpl/console/lang/uk-UA.rc =================================================================== --- reactos/dll/cpl/console/lang/uk-UA.rc (revision 74385) +++ reactos/dll/cpl/console/lang/uk-UA.rc (working copy) @@ -39,7 +39,7 @@ CONTROL "", IDC_STATIC_FONT_WINDOW_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 10, 20, 163, 74 LISTBOX IDC_LBOX_FONTSIZE, 181, 20, 55, 80, LBS_SORT | LBS_HASSTRINGS | WS_VSCROLL LTEXT "&Шрифт:", -1, 10, 105, 33, 10 - CHECKBOX "&Жирні", IDC_CHECK_BOLD_FONTS, 56, 105, 60, 10 + AUTOCHECKBOX "&Жирні", IDC_CHECK_BOLD_FONTS, 56, 105, 60, 10 LISTBOX IDC_LBOX_FONTTYPE, 10, 120, 110, 40, LBS_SORT | LBS_HASSTRINGS | WS_VSCROLL GROUPBOX "", IDC_GROUPBOX_FONT_NAME, 6, 156, 241, 50 CONTROL "", IDC_STATIC_SELECT_FONT_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 16, 165, 95, 35 Index: reactos/dll/cpl/console/lang/zh-CN.rc =================================================================== --- reactos/dll/cpl/console/lang/zh-CN.rc (revision 74385) +++ reactos/dll/cpl/console/lang/zh-CN.rc (working copy) @@ -39,7 +39,7 @@ CONTROL "", IDC_STATIC_FONT_WINDOW_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 10, 20, 163, 74 LISTBOX IDC_LBOX_FONTSIZE, 181, 20, 55, 80, LBS_SORT | LBS_HASSTRINGS | WS_VSCROLL LTEXT "&字体(&F):", -1, 10, 105, 33, 10 - CHECKBOX "粗体(&B)", IDC_CHECK_BOLD_FONTS, 56, 105, 60, 10 + AUTOCHECKBOX "粗体(&B)", IDC_CHECK_BOLD_FONTS, 56, 105, 60, 10 LISTBOX IDC_LBOX_FONTTYPE, 10, 120, 110, 40, LBS_SORT | LBS_HASSTRINGS | WS_VSCROLL GROUPBOX "", IDC_GROUPBOX_FONT_NAME, 6, 156, 241, 50 CONTROL "", IDC_STATIC_SELECT_FONT_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 16, 165, 95, 35 Index: reactos/dll/cpl/console/lang/zh-TW.rc =================================================================== --- reactos/dll/cpl/console/lang/zh-TW.rc (revision 74385) +++ reactos/dll/cpl/console/lang/zh-TW.rc (working copy) @@ -39,7 +39,7 @@ CONTROL "", IDC_STATIC_FONT_WINDOW_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 10, 20, 163, 74 LISTBOX IDC_LBOX_FONTSIZE, 181, 20, 55, 80, LBS_SORT | LBS_HASSTRINGS | WS_VSCROLL LTEXT "&字型(&F):", -1, 10, 105, 33, 10 - CHECKBOX "粗體(&B)", IDC_CHECK_BOLD_FONTS, 56, 105, 60, 10 + AUTOCHECKBOX "粗體(&B)", IDC_CHECK_BOLD_FONTS, 56, 105, 60, 10 LISTBOX IDC_LBOX_FONTTYPE, 10, 120, 110, 40, LBS_SORT | LBS_HASSTRINGS | WS_VSCROLL GROUPBOX "", IDC_GROUPBOX_FONT_NAME, 6, 156, 241, 50 CONTROL "", IDC_STATIC_SELECT_FONT_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 16, 165, 95, 35 Index: reactos/dll/cpl/console/layout.c =================================================================== --- reactos/dll/cpl/console/layout.c (revision 74385) +++ reactos/dll/cpl/console/layout.c (working copy) @@ -94,6 +94,32 @@ DeleteObject((HGDIOBJ)hBrush); } +HFONT +CreateConsoleFont(HWND hwndDlg, PCONSOLE_STATE_INFO pConInfo) +{ + LOGFONTW lf; + COORD FontSize = pConInfo->FontSize; + HDC hDC = GetDC(hwndDlg); + + ZeroMemory(&lf, sizeof(lf)); + + if (FontSize.Y > 0) + lf.lfHeight = -MulDiv(FontSize.Y, GetDeviceCaps(hDC, LOGPIXELSY), 72); + else + lf.lfHeight = FontSize.Y; + + lf.lfWidth = MulDiv(FontSize.X, GetDeviceCaps(hDC, LOGPIXELSX), 72); + + lf.lfWeight = pConInfo->FontWeight; + lf.lfCharSet = CodePageToCharSet(pConInfo->CodePage); + lstrcpynW(lf.lfFaceName, pConInfo->FaceName, LF_FACESIZE); + lf.lfPitchAndFamily = FIXED_PITCH | pConInfo->FontFamily; + lf.lfWeight = pConInfo->FontWeight; + + ReleaseDC(hwndDlg, hDC); + return CreateFontIndirectW(&lf); +} + BOOL PaintText(LPDRAWITEMSTRUCT drawItem, PCONSOLE_STATE_INFO pConInfo, @@ -105,8 +131,6 @@ HBRUSH hBrush; HFONT Font, OldFont; - COORD FontSize = pConInfo->FontSize; - if (TextMode == Screen) CurrentAttrib = pConInfo->ScreenAttributes; else if (TextMode == Popup) @@ -120,23 +144,7 @@ hBrush = CreateSolidBrush(nbkColor); if (!hBrush) return FALSE; - FontSize.Y = FontSize.Y > 0 ? -MulDiv(FontSize.Y, GetDeviceCaps(drawItem->hDC, LOGPIXELSY), 72) - : FontSize.Y; - - Font = CreateFontW(FontSize.Y, - FontSize.X, - 0, - TA_BASELINE, - pConInfo->FontWeight, - FALSE, - FALSE, - FALSE, - CodePageToCharSet(pConInfo->CodePage), - OUT_DEFAULT_PRECIS, - CLIP_DEFAULT_PRECIS, - DEFAULT_QUALITY, - FIXED_PITCH | pConInfo->FontFamily, - pConInfo->FaceName); + Font = CreateConsoleFont(pConInfo->hWnd, pConInfo); if (Font == NULL) { DPRINT1("PaintText: CreateFont failed\n"); Index: reactos/win32ss/user/winsrv/consrv/frontends/gui/conwnd.c =================================================================== --- reactos/win32ss/user/winsrv/consrv/frontends/gui/conwnd.c (revision 74385) +++ reactos/win32ss/user/winsrv/consrv/frontends/gui/conwnd.c (working copy) @@ -7,6 +7,7 @@ * Johannes Anderwald * Jeffrey Morlan * Hermes Belusca-Maito (hermes.belusca@sfr.fr) + * Katayama Hirofumi MZ (katayama.hirofumi.mz@gmail.com) */ /* INCLUDES *******************************************************************/ @@ -147,7 +148,7 @@ WndClass.hIcon = ghDefaultIcon; WndClass.hIconSm = ghDefaultIconSm; WndClass.hCursor = ghDefaultCursor; - WndClass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH); // The color of a terminal when it is switched off. + WndClass.hbrBackground = (HBRUSH)GetStockObject(NULL_BRUSH); /* for speed */ WndClass.lpszMenuName = NULL; WndClass.cbClsExtra = 0; WndClass.cbWndExtra = GWLP_CONWND_ALLOC; @@ -535,6 +536,7 @@ HFONT OldFont, NewFont; TEXTMETRICW Metrics; SIZE CharSize; + LOGFONTW lf; hDC = GetDC(GuiData->hWindow); @@ -542,23 +544,23 @@ * Initialize a new NORMAL font and get its metrics. */ - FontSize.Y = FontSize.Y > 0 ? -MulDiv(FontSize.Y, GetDeviceCaps(hDC, LOGPIXELSY), 72) - : FontSize.Y; + ZeroMemory(&lf, sizeof(lf)); + if (FontSize.Y > 0) + lf.lfHeight = -MulDiv(FontSize.Y, GetDeviceCaps(hDC, LOGPIXELSY), 72); + else + lf.lfHeight = FontSize.Y; - NewFont = CreateFontW(FontSize.Y, - FontSize.X, - 0, - TA_BASELINE, - FontWeight, - FALSE, - FALSE, - FALSE, - OEM_CHARSET, - OUT_DEFAULT_PRECIS, - CLIP_DEFAULT_PRECIS, - DEFAULT_QUALITY, - FIXED_PITCH | FontFamily, - FaceName); + if (FontSize.X > 0) + lf.lfWeight = -MulDiv(FontSize.X, GetDeviceCaps(hDC, LOGPIXELSX), 72); + else + lf.lfWeight = FontSize.X; + + lf.lfWeight = FontWeight; + lf.lfCharSet = OEM_CHARSET; + lf.lfPitchAndFamily = FIXED_PITCH | FontFamily; + lstrcpynW(lf.lfFaceName, FaceName, LF_FACESIZE); + + NewFont = CreateFontIndirectW(&lf); if (NewFont == NULL) { DPRINT1("InitFonts: CreateFontW failed\n"); Index: reactos/win32ss/user/winsrv/consrv/frontends/gui/text.c =================================================================== --- reactos/win32ss/user/winsrv/consrv/frontends/gui/text.c (revision 74385) +++ reactos/win32ss/user/winsrv/consrv/frontends/gui/text.c (working copy) @@ -7,6 +7,7 @@ * Johannes Anderwald * Jeffrey Morlan * Hermes Belusca-Maito (hermes.belusca@sfr.fr) + * Katayama Hirofumi MZ (katayama.hirofumi.mz@gmail.com) */ /* INCLUDES *******************************************************************/ @@ -20,7 +21,7 @@ /* GLOBALS ********************************************************************/ -#define IS_WHITESPACE(c) ((c) == L'\0' || (c) == L' ' || (c) == L'\t') +#define IS_WHITESPACE(c) ((c) == L'\0' || (c) == L' ' || (c) == L'\t' || (c) == 0x3000) /* FUNCTIONS ******************************************************************/ @@ -346,128 +347,111 @@ PRECT rcFramebuffer) { PCONSRV_CONSOLE Console = Buffer->Header.Console; - // ASSERT(Console == GuiData->Console); + ULONG Line, Column, TopLine, BottomLine, LeftColumn, RightColumn; + BOOL IsUnderline; + PCHAR_INFO pCharInfo; + RECT Rect; + WORD Attribute; + DWORD LastAttribute; + WCHAR wch; + COLORREF TextColor, BackColor; + HFONT Font, OldFont = NULL; - ULONG TopLine, BottomLine, LeftChar, RightChar; - ULONG Line, Char, Start; - PCHAR_INFO From; - PWCHAR To; - WORD LastAttribute, Attribute; - ULONG CursorX, CursorY, CursorHeight; - HBRUSH CursorBrush, OldBrush; - HFONT OldFont, NewFont; - BOOLEAN IsUnderline; + if (Buffer->Buffer == NULL) + return; - if (Buffer->Buffer == NULL) return; + if (!ConDrvValidateConsoleUnsafe((PCONSOLE)Console, CONSOLE_RUNNING, TRUE)) + return; - if (!ConDrvValidateConsoleUnsafe((PCONSOLE)Console, CONSOLE_RUNNING, TRUE)) return; + SetRect(rcFramebuffer, + Buffer->ViewOrigin.X * GuiData->CharWidth + rcView->left, + Buffer->ViewOrigin.Y * GuiData->CharHeight + rcView->top, + Buffer->ViewOrigin.X * GuiData->CharWidth + rcView->right, + Buffer->ViewOrigin.Y * GuiData->CharHeight + rcView->bottom); - rcFramebuffer->left = Buffer->ViewOrigin.X * GuiData->CharWidth + rcView->left; - rcFramebuffer->top = Buffer->ViewOrigin.Y * GuiData->CharHeight + rcView->top; - rcFramebuffer->right = Buffer->ViewOrigin.X * GuiData->CharWidth + rcView->right; - rcFramebuffer->bottom = Buffer->ViewOrigin.Y * GuiData->CharHeight + rcView->bottom; + LeftColumn = rcFramebuffer->left / GuiData->CharWidth; + RightColumn = rcFramebuffer->right / GuiData->CharWidth; + if (RightColumn >= (ULONG)Buffer->ScreenBufferSize.X) + RightColumn = Buffer->ScreenBufferSize.X - 1; - LeftChar = rcFramebuffer->left / GuiData->CharWidth; - TopLine = rcFramebuffer->top / GuiData->CharHeight; - RightChar = rcFramebuffer->right / GuiData->CharWidth; - BottomLine = rcFramebuffer->bottom / GuiData->CharHeight; + TopLine = rcFramebuffer->top / GuiData->CharHeight; + BottomLine = rcFramebuffer->bottom / GuiData->CharHeight; + if (BottomLine >= (ULONG)Buffer->ScreenBufferSize.Y) + BottomLine = Buffer->ScreenBufferSize.Y - 1; - if (RightChar >= (ULONG)Buffer->ScreenBufferSize.X) RightChar = Buffer->ScreenBufferSize.X - 1; - if (BottomLine >= (ULONG)Buffer->ScreenBufferSize.Y) BottomLine = Buffer->ScreenBufferSize.Y - 1; + /* draw the colored text */ + LastAttribute = 0xFFFFFFFF; + SetBkMode(GuiData->hMemDC, OPAQUE); + for (Line = TopLine; Line <= BottomLine; Line++) + { + SetRect(&Rect, LeftColumn * GuiData->CharWidth, + Line * GuiData->CharHeight, + RightColumn * GuiData->CharWidth, + (Line + 1) * GuiData->CharHeight); + if (!RectVisible(GuiData->hMemDC, &Rect)) + continue; - LastAttribute = ConioCoordToPointer(Buffer, LeftChar, TopLine)->Attributes; + for (Column = LeftColumn; Column <= RightColumn; Column++) + { + SetRect(&Rect, Column * GuiData->CharWidth, + Line * GuiData->CharHeight, + (Column + 1) * GuiData->CharWidth, + (Line + 1) * GuiData->CharHeight); + if (!RectVisible(GuiData->hMemDC, &Rect)) + continue; - SetTextColor(GuiData->hMemDC, PaletteRGBFromAttrib(Console, TextAttribFromAttrib(LastAttribute))); - SetBkColor(GuiData->hMemDC, PaletteRGBFromAttrib(Console, BkgdAttribFromAttrib(LastAttribute))); + pCharInfo = ConioCoordToPointer(Buffer, Column, Line); - /* We use the underscore flag as a underline flag */ - IsUnderline = !!(LastAttribute & COMMON_LVB_UNDERSCORE); - /* Select the new font */ - NewFont = GuiData->Font[IsUnderline ? FONT_BOLD : FONT_NORMAL]; - OldFont = SelectObject(GuiData->hMemDC, NewFont); + Attribute = pCharInfo->Attributes; + if (Attribute == DEFAULT_SCREEN_ATTRIB) + Attribute = Buffer->ScreenDefaultAttrib; - for (Line = TopLine; Line <= BottomLine; Line++) - { - WCHAR LineBuffer[80]; // Buffer containing a part or all the line to be displayed - From = ConioCoordToPointer(Buffer, LeftChar, Line); // Get the first code of the line - Start = LeftChar; - To = LineBuffer; - - for (Char = LeftChar; Char <= RightChar; Char++) - { - /* - * We flush the buffer if the new attribute is different - * from the current one, or if the buffer is full. - */ - if (From->Attributes != LastAttribute || (Char - Start == sizeof(LineBuffer) / sizeof(WCHAR))) + if (Attribute != LastAttribute) { - TextOutW(GuiData->hMemDC, - Start * GuiData->CharWidth, - Line * GuiData->CharHeight, - LineBuffer, - Char - Start); - Start = Char; - To = LineBuffer; - Attribute = From->Attributes; - if (Attribute != LastAttribute) - { - LastAttribute = Attribute; - SetTextColor(GuiData->hMemDC, PaletteRGBFromAttrib(Console, TextAttribFromAttrib(LastAttribute))); - SetBkColor(GuiData->hMemDC, PaletteRGBFromAttrib(Console, BkgdAttribFromAttrib(LastAttribute))); + /* update attributes */ + LastAttribute = Attribute; - /* Change underline state if needed */ - if (!!(LastAttribute & COMMON_LVB_UNDERSCORE) != IsUnderline) - { - IsUnderline = !!(LastAttribute & COMMON_LVB_UNDERSCORE); - /* Select the new font */ - NewFont = GuiData->Font[IsUnderline ? FONT_BOLD : FONT_NORMAL]; - /* OldFont = */ SelectObject(GuiData->hMemDC, NewFont); - } - } + if (OldFont) + SelectObject(GuiData->hMemDC, OldFont); + + IsUnderline = !!(Attribute & COMMON_LVB_UNDERSCORE); + Font = GuiData->Font[IsUnderline ? FONT_BOLD : FONT_NORMAL]; + OldFont = SelectObject(GuiData->hMemDC, Font); + + TextColor = PaletteRGBFromAttrib(Console, TextAttribFromAttrib(Attribute)); + SetTextColor(GuiData->hMemDC, TextColor); + + BackColor = PaletteRGBFromAttrib(Console, BkgdAttribFromAttrib(Attribute)); + SetBkColor(GuiData->hMemDC, BackColor); } - *(To++) = (From++)->Char.UnicodeChar; + wch = pCharInfo->Char.UnicodeChar; + TextOutW(GuiData->hMemDC, Rect.left, Rect.top, &wch, 1); } + } - TextOutW(GuiData->hMemDC, - Start * GuiData->CharWidth, - Line * GuiData->CharHeight, - LineBuffer, - RightChar - Start + 1); + if (OldFont) + { + SelectObject(GuiData->hMemDC, OldFont); } - /* Restore the old font */ - SelectObject(GuiData->hMemDC, OldFont); - - /* - * Draw the caret - */ + /* draw the caret */ if (Buffer->CursorInfo.bVisible && - Buffer->CursorBlinkOn && - !Buffer->ForceCursorOff) + Buffer->CursorBlinkOn && !Buffer->ForceCursorOff) { - CursorX = Buffer->CursorPosition.X; - CursorY = Buffer->CursorPosition.Y; - if (LeftChar <= CursorX && CursorX <= RightChar && - TopLine <= CursorY && CursorY <= BottomLine) + Column = Buffer->CursorPosition.X; + Line = Buffer->CursorPosition.Y; + if (TopLine <= Line && Line <= BottomLine && + LeftColumn <= Column && Column <= RightColumn) { - CursorHeight = ConioEffectiveCursorSize(Console, GuiData->CharHeight); + ULONG CursorHeight = ConioEffectiveCursorSize(Console, GuiData->CharHeight); - Attribute = ConioCoordToPointer(Buffer, Buffer->CursorPosition.X, Buffer->CursorPosition.Y)->Attributes; - if (Attribute == DEFAULT_SCREEN_ATTRIB) Attribute = Buffer->ScreenDefaultAttrib; - - CursorBrush = CreateSolidBrush(PaletteRGBFromAttrib(Console, TextAttribFromAttrib(Attribute))); - OldBrush = SelectObject(GuiData->hMemDC, CursorBrush); - PatBlt(GuiData->hMemDC, - CursorX * GuiData->CharWidth, - CursorY * GuiData->CharHeight + (GuiData->CharHeight - CursorHeight), + Column * GuiData->CharWidth, + Line * GuiData->CharHeight + (GuiData->CharHeight - CursorHeight), GuiData->CharWidth, CursorHeight, - PATCOPY); - - SelectObject(GuiData->hMemDC, OldBrush); - DeleteObject(CursorBrush); + DSTINVERT); } }