https://git.reactos.org/?p=reactos.git;a=commitdiff;h=361a2ce4f70379a512e237...
commit 361a2ce4f70379a512e237cd37c6e66c077140a9 Author: Katayama Hirofumi MZ katayama.hirofumi.mz@gmail.com AuthorDate: Wed Jan 5 16:26:05 2022 +0900 Commit: GitHub noreply@github.com CommitDate: Wed Jan 5 16:26:05 2022 +0900
[MSPAINT] Implement the text tool (#4237)
- Add CFontsDialog and IDD_FONTS. - Rewrite CTextEditWindow. - Implement TOOL_TEXT tool. - Add the font-related settings. CORE-17949 --- base/applications/mspaint/dialogs.cpp | 330 +++++++++++++++ base/applications/mspaint/dialogs.h | 34 ++ base/applications/mspaint/drawing.cpp | 48 ++- base/applications/mspaint/globalvar.h | 5 +- base/applications/mspaint/icons/fontstoolbar.bmp | Bin 0 -> 3126 bytes base/applications/mspaint/imgarea.cpp | 35 +- base/applications/mspaint/imgarea.h | 4 + base/applications/mspaint/lang/bg-BG.rc | 17 + base/applications/mspaint/lang/cs-CZ.rc | 17 + base/applications/mspaint/lang/de-DE.rc | 17 + base/applications/mspaint/lang/en-GB.rc | 17 + base/applications/mspaint/lang/en-US.rc | 17 + base/applications/mspaint/lang/es-ES.rc | 17 + base/applications/mspaint/lang/et-EE.rc | 17 + base/applications/mspaint/lang/eu-ES.rc | 17 + base/applications/mspaint/lang/fr-FR.rc | 17 + base/applications/mspaint/lang/he-IL.rc | 17 + base/applications/mspaint/lang/hu-HU.rc | 17 + base/applications/mspaint/lang/id-ID.rc | 17 + base/applications/mspaint/lang/it-IT.rc | 17 + base/applications/mspaint/lang/ja-JP.rc | 17 + base/applications/mspaint/lang/nl-NL.rc | 17 + base/applications/mspaint/lang/no-NO.rc | 17 + base/applications/mspaint/lang/pl-PL.rc | 17 + base/applications/mspaint/lang/pt-BR.rc | 17 + base/applications/mspaint/lang/pt-PT.rc | 17 + base/applications/mspaint/lang/ro-RO.rc | 17 + base/applications/mspaint/lang/ru-RU.rc | 17 + base/applications/mspaint/lang/sk-SK.rc | 17 + base/applications/mspaint/lang/sq-AL.rc | 17 + base/applications/mspaint/lang/sv-SE.rc | 17 + base/applications/mspaint/lang/tr-TR.rc | 17 + base/applications/mspaint/lang/uk-UA.rc | 17 + base/applications/mspaint/lang/vi-VN.rc | 17 + base/applications/mspaint/lang/zh-CN.rc | 17 + base/applications/mspaint/lang/zh-HK.rc | 17 + base/applications/mspaint/lang/zh-TW.rc | 17 + base/applications/mspaint/main.cpp | 14 +- base/applications/mspaint/mouse.cpp | 81 +++- base/applications/mspaint/palettemodel.cpp | 2 + base/applications/mspaint/precomp.h | 1 + base/applications/mspaint/registry.cpp | 74 +++- base/applications/mspaint/registry.h | 10 + base/applications/mspaint/resource.h | 16 + base/applications/mspaint/rsrc.rc | 1 + base/applications/mspaint/selectionmodel.cpp | 5 + base/applications/mspaint/selectionmodel.h | 1 + base/applications/mspaint/textedit.cpp | 498 +++++++++++++++++++++-- base/applications/mspaint/textedit.h | 63 ++- base/applications/mspaint/toolsmodel.cpp | 17 + base/applications/mspaint/toolsmodel.h | 8 +- base/applications/mspaint/winproc.cpp | 24 +- 52 files changed, 1684 insertions(+), 97 deletions(-)
diff --git a/base/applications/mspaint/dialogs.cpp b/base/applications/mspaint/dialogs.cpp index 09a3e5cebfb..a21fb45db69 100644 --- a/base/applications/mspaint/dialogs.cpp +++ b/base/applications/mspaint/dialogs.cpp @@ -19,6 +19,7 @@ CMirrorRotateDialog mirrorRotateDialog; CAttributesDialog attributesDialog; CStretchSkewDialog stretchSkewDialog; +CFontsDialog fontsDialog;
/* FUNCTIONS ********************************************************/
@@ -258,3 +259,332 @@ LRESULT CStretchSkewDialog::OnCancel(WORD wNotifyCode, WORD wID, HWND hWndCtl, B EndDialog(0); return 0; } + +static INT CALLBACK +EnumFontFamProc(ENUMLOGFONT *lpelf, NEWTEXTMETRIC *lpntm, INT FontType, LPARAM lParam) +{ + CSimpleArray<CString>& arrFontNames = *reinterpret_cast<CSimpleArray<CString>*>(lParam); + LPTSTR name = lpelf->elfLogFont.lfFaceName; + if (name[0] == TEXT('@')) // Vertical fonts + return TRUE; + + for (INT i = 0; i < arrFontNames.GetSize(); ++i) + { + if (arrFontNames[i] == name) // Already exists + return TRUE; + } + + arrFontNames.Add(name); + return TRUE; +} + +// TODO: AutoComplete font names +// TODO: Vertical text +CFontsDialog::CFontsDialog() +{ +} + +void CFontsDialog::InitFontNames() +{ + // List the fonts + CSimpleArray<CString> arrFontNames; + HDC hDC = CreateCompatibleDC(NULL); + if (hDC) + { + EnumFontFamilies(hDC, NULL, (FONTENUMPROC)EnumFontFamProc, + reinterpret_cast<LPARAM>(&arrFontNames)); + DeleteDC(hDC); + } + + // Actually add them to the combobox + HWND hwndNames = GetDlgItem(IDD_FONTSNAMES); + SendMessage(hwndNames, CB_RESETCONTENT, 0, 0); + for (INT i = 0; i < arrFontNames.GetSize(); ++i) + { + ComboBox_AddString(hwndNames, arrFontNames[i]); + } + + ::SetWindowText(hwndNames, registrySettings.strFontName); +} + +void CFontsDialog::InitFontSizes() +{ + static const INT s_sizes[] = + { + 8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 26, 28, 36, 48, 72 + }; + + HWND hwndSizes = GetDlgItem(IDD_FONTSSIZES); + ComboBox_ResetContent(hwndSizes); + + TCHAR szText[16]; + for (UINT i = 0; i < _countof(s_sizes); ++i) + { + wsprintf(szText, TEXT("%d"), s_sizes[i]); + INT iItem = ComboBox_AddString(hwndSizes, szText); + if (s_sizes[i] == (INT)registrySettings.PointSize) + ComboBox_SetCurSel(hwndSizes, iItem); + } + + if (ComboBox_GetCurSel(hwndSizes) == CB_ERR) + { + wsprintf(szText, TEXT("%d"), (INT)registrySettings.PointSize); + ::SetWindowText(hwndSizes, szText); + } +} + +void CFontsDialog::InitToolbar() +{ + HWND hwndToolbar = GetDlgItem(IDD_FONTSTOOLBAR); + SendMessage(hwndToolbar, TB_BUTTONSTRUCTSIZE, sizeof(TBBUTTON), 0); + SendMessage(hwndToolbar, TB_SETBITMAPSIZE, 0, MAKELPARAM(16, 16)); + SendMessage(hwndToolbar, TB_SETBUTTONWIDTH, 0, MAKELPARAM(20, 20)); + + TBADDBITMAP AddBitmap; + AddBitmap.hInst = hProgInstance; + AddBitmap.nID = IDB_FONTSTOOLBAR; + SendMessage(hwndToolbar, TB_ADDBITMAP, 4, (LPARAM)&AddBitmap); + + HIMAGELIST himl = ImageList_LoadImage(hProgInstance, MAKEINTRESOURCE(IDB_FONTSTOOLBAR), + 16, 8, RGB(255, 0, 255), IMAGE_BITMAP, + LR_CREATEDIBSECTION); + SendMessage(hwndToolbar, TB_SETIMAGELIST, 0, (LPARAM)himl); + + TBBUTTON buttons[] = + { + { 0, IDM_BOLD, TBSTATE_ENABLED, TBSTYLE_CHECK }, + { 1, IDM_ITALIC, TBSTATE_ENABLED, TBSTYLE_CHECK }, + { 2, IDM_UNDERLINE, TBSTATE_ENABLED, TBSTYLE_CHECK }, + { 3, IDM_VERTICAL, 0, TBSTYLE_CHECK }, // TODO: + }; + SendMessage(hwndToolbar, TB_ADDBUTTONS, _countof(buttons), (LPARAM)&buttons); + + SendMessage(hwndToolbar, TB_CHECKBUTTON, IDM_BOLD, registrySettings.Bold); + SendMessage(hwndToolbar, TB_CHECKBUTTON, IDM_ITALIC, registrySettings.Italic); + SendMessage(hwndToolbar, TB_CHECKBUTTON, IDM_UNDERLINE, registrySettings.Underline); +} + +LRESULT CFontsDialog::OnInitDialog(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) +{ + // TODO: Tooltips + InitFontNames(); + InitFontSizes(); + InitToolbar(); + + if (registrySettings.FontsPositionX != 0 || registrySettings.FontsPositionY != 0) + { + SetWindowPos(NULL, + registrySettings.FontsPositionX, registrySettings.FontsPositionY, + 0, 0, + SWP_NOSIZE | SWP_NOACTIVATE | SWP_NOZORDER); + SendMessage(DM_REPOSITION, 0, 0); + } + + if (!registrySettings.ShowTextTool) + ShowWindow(SW_HIDE); + + return TRUE; +} + +LRESULT CFontsDialog::OnClose(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) +{ + ShowWindow(SW_HIDE); // Just hide. Recycle for optimization + return 0; +} + +void CFontsDialog::OnFontName(UINT codeNotify) +{ + HWND hwndNames = GetDlgItem(IDD_FONTSNAMES); + INT iItem = CB_ERR; + UINT cch; + TCHAR szText[LF_FACESIZE]; + + switch (codeNotify) + { + case CBN_SELCHANGE: + iItem = ComboBox_GetCurSel(hwndNames); + cch = ComboBox_GetLBTextLen(hwndNames, iItem); + if (iItem != CB_ERR && 0 < cch && cch < _countof(szText)) + { + ComboBox_GetLBText(hwndNames, iItem, szText); + } + break; + + case CBN_EDITCHANGE: + GetDlgItemText(IDD_FONTSNAMES, szText, _countof(szText)); + iItem = ComboBox_FindStringExact(hwndNames, -1, szText); + break; + } + + if (iItem != CB_ERR && registrySettings.strFontName.CompareNoCase(szText) != 0) + { + registrySettings.strFontName = szText; + toolsModel.NotifyToolChanged(); + } +} + +void CFontsDialog::OnFontSize(UINT codeNotify) +{ + HWND hwndSizes = GetDlgItem(IDD_FONTSSIZES); + WCHAR szText[8]; + INT iItem, PointSize = 0; + UINT cch; + + switch (codeNotify) + { + case CBN_SELCHANGE: + iItem = ComboBox_GetCurSel(hwndSizes); + cch = ComboBox_GetLBTextLen(hwndSizes, iItem); + if (iItem != CB_ERR && 0 < cch && cch < _countof(szText)) + { + ComboBox_GetLBText(hwndSizes, iItem, szText); + PointSize = _ttoi(szText); + } + break; + + case CBN_EDITCHANGE: + ::GetWindowText(hwndSizes, szText, _countof(szText)); + PointSize = _ttoi(szText); + break; + } + + if (PointSize > 0) + { + registrySettings.PointSize = PointSize; + toolsModel.NotifyToolChanged(); + } +} + +LRESULT CFontsDialog::OnCommand(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) +{ + UINT id = LOWORD(wParam); + UINT codeNotify = HIWORD(wParam); + HWND hwndToolbar = GetDlgItem(IDD_FONTSTOOLBAR); + BOOL bChecked = ::SendMessage(hwndToolbar, TB_ISBUTTONCHECKED, id, 0); + + switch (id) + { + case IDCANCEL: + ShowWindow(SW_HIDE); + registrySettings.ShowTextTool = FALSE; + break; + + case IDD_FONTSNAMES: + OnFontName(codeNotify); + break; + + case IDD_FONTSSIZES: + OnFontSize(codeNotify); + break; + + case IDM_BOLD: + registrySettings.Bold = bChecked; + toolsModel.NotifyToolChanged(); + break; + + case IDM_ITALIC: + registrySettings.Italic = bChecked; + toolsModel.NotifyToolChanged(); + break; + + case IDM_UNDERLINE: + registrySettings.Underline = bChecked; + toolsModel.NotifyToolChanged(); + break; + + case IDM_VERTICAL: + // TODO: + break; + } + return 0; +} + +LRESULT CFontsDialog::OnNotify(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) +{ + NMHDR *pnmhdr = reinterpret_cast<NMHDR *>(lParam); + if (pnmhdr->code == TTN_NEEDTEXT) + { + LPTOOLTIPTEXT pToolTip = reinterpret_cast<LPTOOLTIPTEXT>(lParam); + pToolTip->hinst = hProgInstance; + switch (pnmhdr->idFrom) + { + case IDM_BOLD: pToolTip->lpszText = MAKEINTRESOURCE(IDS_BOLD); break; + case IDM_ITALIC: pToolTip->lpszText = MAKEINTRESOURCE(IDS_ITALIC); break; + case IDM_UNDERLINE: pToolTip->lpszText = MAKEINTRESOURCE(IDS_UNDERLINE); break; + case IDM_VERTICAL: pToolTip->lpszText = MAKEINTRESOURCE(IDS_VERTICAL); break; + + default: + break; + } + } + return 0; +} + +LRESULT CFontsDialog::OnMove(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) +{ + RECT rc; + GetWindowRect(&rc); + registrySettings.FontsPositionX = rc.left; + registrySettings.FontsPositionY = rc.top; + return 0; +} + +LRESULT CFontsDialog::OnToolsModelToolChanged(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) +{ + if (wParam != TOOL_TEXT) + ShowWindow(SW_HIDE); + + return 0; +} + +LRESULT CFontsDialog::OnMeasureItem(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) +{ + if (wParam == IDD_FONTSNAMES) + { + LPMEASUREITEMSTRUCT pMeasureItem = reinterpret_cast<LPMEASUREITEMSTRUCT>(lParam); + RECT rc; + ::GetClientRect(GetDlgItem(IDD_FONTSNAMES), &rc); + pMeasureItem->itemWidth = rc.right - rc.left; + pMeasureItem->itemHeight = GetSystemMetrics(SM_CYVSCROLL); + return TRUE; + } + return 0; +} + +LRESULT CFontsDialog::OnDrawItem(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) +{ + // TODO: Owner-draw the font types + if (wParam == IDD_FONTSNAMES) + { + LPDRAWITEMSTRUCT pDrawItem = reinterpret_cast<LPDRAWITEMSTRUCT>(lParam); + if (pDrawItem->itemID == (UINT)-1) + return TRUE; + + SetBkMode(pDrawItem->hDC, TRANSPARENT); + + HWND hwndItem = pDrawItem->hwndItem; + RECT rcItem = pDrawItem->rcItem; + if (pDrawItem->itemState & ODS_SELECTED) + { + FillRect(pDrawItem->hDC, &rcItem, GetSysColorBrush(COLOR_HIGHLIGHT)); + SetTextColor(pDrawItem->hDC, GetSysColor(COLOR_HIGHLIGHTTEXT)); + } + else + { + FillRect(pDrawItem->hDC, &rcItem, GetSysColorBrush(COLOR_WINDOW)); + SetTextColor(pDrawItem->hDC, GetSysColor(COLOR_WINDOWTEXT)); + } + + TCHAR szText[LF_FACESIZE]; + szText[0] = 0; + ComboBox_GetLBText(hwndItem, pDrawItem->itemID, szText); + rcItem.left += 24; + DrawText(pDrawItem->hDC, szText, -1, &rcItem, DT_LEFT | DT_VCENTER | DT_SINGLELINE); + + if (pDrawItem->itemState & ODS_FOCUS) + ::DrawFocusRect(pDrawItem->hDC, &pDrawItem->rcItem); + + return TRUE; + } + return 0; +} diff --git a/base/applications/mspaint/dialogs.h b/base/applications/mspaint/dialogs.h index 8d7aefe444d..0df4f48e409 100644 --- a/base/applications/mspaint/dialogs.h +++ b/base/applications/mspaint/dialogs.h @@ -86,3 +86,37 @@ public: POINT percentage; POINT angle; }; + +class CFontsDialog : public CDialogImpl<CFontsDialog> +{ +public: + enum { IDD = IDD_FONTS }; + + CFontsDialog(); + void InitFontNames(); + void InitFontSizes(); + void InitToolbar(); + + BEGIN_MSG_MAP(CFontsDialog) + MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog) + MESSAGE_HANDLER(WM_CLOSE, OnClose) + MESSAGE_HANDLER(WM_COMMAND, OnCommand) + MESSAGE_HANDLER(WM_MOVE, OnMove) + MESSAGE_HANDLER(WM_NOTIFY, OnNotify) + MESSAGE_HANDLER(WM_TOOLSMODELTOOLCHANGED, OnToolsModelToolChanged) + MESSAGE_HANDLER(WM_MEASUREITEM, OnMeasureItem) + MESSAGE_HANDLER(WM_DRAWITEM, OnDrawItem) + END_MSG_MAP() + +protected: + LRESULT OnInitDialog(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); + LRESULT OnClose(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); + LRESULT OnCommand(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); + LRESULT OnMove(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); + LRESULT OnNotify(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); + LRESULT OnToolsModelToolChanged(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); + LRESULT OnMeasureItem(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); + LRESULT OnDrawItem(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); + void OnFontSize(UINT codeNotify); + void OnFontName(UINT codeNotify); +}; diff --git a/base/applications/mspaint/drawing.cpp b/base/applications/mspaint/drawing.cpp index e118184aecb..d7453ff198a 100644 --- a/base/applications/mspaint/drawing.cpp +++ b/base/applications/mspaint/drawing.cpp @@ -229,7 +229,7 @@ RectSel(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2) { HBRUSH oldBrush; LOGBRUSH logbrush; - HPEN oldPen = (HPEN) SelectObject(hdc, CreatePen(PS_DOT, 1, 0x00000000)); + HPEN oldPen = (HPEN) SelectObject(hdc, CreatePen(PS_DOT, 1, GetSysColor(COLOR_HIGHLIGHT))); UINT oldRop = GetROP2(hdc);
SetROP2(hdc, R2_NOTXORPEN); @@ -276,20 +276,34 @@ SelectionFrame(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, DWORD system_selecti void Text(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF fg, COLORREF bg, LPCTSTR lpchText, HFONT font, LONG style) { - HFONT oldFont; - RECT rect = {x1, y1, x2, y2}; - COLORREF oldColor; - COLORREF oldBkColor; - int oldBkMode; - oldFont = (HFONT) SelectObject(hdc, font); - oldColor = SetTextColor(hdc, fg); - oldBkColor = SetBkColor(hdc, bg); - oldBkMode = SetBkMode(hdc, TRANSPARENT); - if (style == 0) - Rect(hdc, x1, y1, x2, y2, bg, bg, 1, 2); - DrawText(hdc, lpchText, -1, &rect, DT_EDITCONTROL); - SelectObject(hdc, oldFont); - SetTextColor(hdc, oldColor); - SetBkColor(hdc, oldBkColor); - SetBkMode(hdc, oldBkMode); + INT iSaveDC = SaveDC(hdc); // We will modify the clipping region. Save now. + + RECT rc; + SetRect(&rc, x1, y1, x2, y2); + + if (style == 0) // Transparent + { + SetBkMode(hdc, TRANSPARENT); + GetBkColor(hdc); + } + else // Opaque + { + SetBkMode(hdc, OPAQUE); + SetBkColor(hdc, bg); + + HBRUSH hbr = CreateSolidBrush(bg); + FillRect(hdc, &rc, hbr); // Fill the background + DeleteObject(hbr); + } + + IntersectClipRect(hdc, rc.left, rc.top, rc.right, rc.bottom); + + HGDIOBJ hFontOld = SelectObject(hdc, font); + SetTextColor(hdc, fg); + const UINT uFormat = DT_LEFT | DT_TOP | DT_EDITCONTROL | DT_NOPREFIX | DT_NOCLIP | + DT_EXPANDTABS | DT_WORDBREAK; + DrawText(hdc, lpchText, -1, &rc, uFormat); + SelectObject(hdc, hFontOld); + + RestoreDC(hdc, iSaveDC); // Restore } diff --git a/base/applications/mspaint/globalvar.h b/base/applications/mspaint/globalvar.h index a639f620be1..071baecb4dc 100644 --- a/base/applications/mspaint/globalvar.h +++ b/base/applications/mspaint/globalvar.h @@ -99,10 +99,9 @@ extern CTextEditWindow textEditWindow; class CMirrorRotateDialog; class CAttributesDialog; class CStretchSkewDialog; +class CFontsDialog;
extern CMirrorRotateDialog mirrorRotateDialog; extern CAttributesDialog attributesDialog; extern CStretchSkewDialog stretchSkewDialog; - -/* VARIABLES declared in mouse.cpp **********************************/ - +extern CFontsDialog fontsDialog; diff --git a/base/applications/mspaint/icons/fontstoolbar.bmp b/base/applications/mspaint/icons/fontstoolbar.bmp new file mode 100644 index 00000000000..340a1896c77 Binary files /dev/null and b/base/applications/mspaint/icons/fontstoolbar.bmp differ diff --git a/base/applications/mspaint/imgarea.cpp b/base/applications/mspaint/imgarea.cpp index 69a6de62984..6c117591dc6 100644 --- a/base/applications/mspaint/imgarea.cpp +++ b/base/applications/mspaint/imgarea.cpp @@ -12,8 +12,6 @@
#include "precomp.h"
-#include "dialogs.h" - /* FUNCTIONS ********************************************************/
void @@ -102,10 +100,28 @@ LRESULT CImgAreaWindow::OnSize(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bH return 0; }
+LRESULT CImgAreaWindow::OnEraseBkGnd(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) +{ + HDC hdc = (HDC)wParam; + + if (toolsModel.GetActiveTool() == TOOL_TEXT && !toolsModel.IsBackgroundTransparent() && + textEditWindow.IsWindowVisible()) + { + // Do clipping + HWND hChild = textEditWindow; + RECT rcChild; + ::GetWindowRect(hChild, &rcChild); + ::MapWindowPoints(NULL, m_hWnd, (LPPOINT)&rcChild, 2); + ExcludeClipRect(hdc, rcChild.left, rcChild.top, rcChild.right, rcChild.bottom); + } + + return DefWindowProc(nMsg, wParam, lParam); +} + LRESULT CImgAreaWindow::OnPaint(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { - DefWindowProc(WM_PAINT, wParam, lParam); - HDC hdc = GetDC(); + PAINTSTRUCT ps; + HDC hdc = BeginPaint(&ps); int imgXRes = imageModel.GetWidth(); int imgYRes = imageModel.GetHeight(); StretchBlt(hdc, 0, 0, Zoomed(imgXRes), Zoomed(imgYRes), imageModel.GetDC(), 0, 0, imgXRes, @@ -126,9 +142,11 @@ LRESULT CImgAreaWindow::OnPaint(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& b } DeleteObject(SelectObject(hdc, oldPen)); } - ReleaseDC(hdc); + EndPaint(&ps); selectionWindow.Invalidate(FALSE); miniature.Invalidate(FALSE); + if (textEditWindow.IsWindowVisible()) + textEditWindow.Invalidate(FALSE); return 0; }
@@ -382,3 +400,10 @@ LRESULT CImgAreaWindow::OnMouseWheel(UINT nMsg, WPARAM wParam, LPARAM lParam, BO { return ::SendMessage(GetParent(), nMsg, wParam, lParam); } + +LRESULT CImgAreaWindow::OnCtlColorEdit(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) +{ + HDC hdc = (HDC)wParam; + SetBkMode(hdc, TRANSPARENT); + return (LRESULT)GetStockObject(NULL_BRUSH); +} diff --git a/base/applications/mspaint/imgarea.h b/base/applications/mspaint/imgarea.h index 4c1a41ec27c..a898f1e893b 100644 --- a/base/applications/mspaint/imgarea.h +++ b/base/applications/mspaint/imgarea.h @@ -21,6 +21,7 @@ public:
BEGIN_MSG_MAP(CImgAreaWindow) MESSAGE_HANDLER(WM_SIZE, OnSize) + MESSAGE_HANDLER(WM_ERASEBKGND, OnEraseBkGnd) MESSAGE_HANDLER(WM_PAINT, OnPaint) MESSAGE_HANDLER(WM_SETCURSOR, OnSetCursor) MESSAGE_HANDLER(WM_LBUTTONDOWN, OnLButtonDown) @@ -36,12 +37,14 @@ public: MESSAGE_HANDLER(WM_IMAGEMODELIMAGECHANGED, OnImageModelImageChanged) MESSAGE_HANDLER(WM_CAPTURECHANGED, OnCaptureChanged) MESSAGE_HANDLER(WM_KEYDOWN, OnKeyDown) + MESSAGE_HANDLER(WM_CTLCOLOREDIT, OnCtlColorEdit) END_MSG_MAP()
BOOL drawing;
private: LRESULT OnSize(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); + LRESULT OnEraseBkGnd(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); LRESULT OnPaint(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); LRESULT OnSetCursor(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); LRESULT OnLButtonDown(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); @@ -57,6 +60,7 @@ private: LRESULT OnImageModelImageChanged(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); LRESULT OnCaptureChanged(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); LRESULT OnKeyDown(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); + LRESULT OnCtlColorEdit(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
void drawZoomFrame(int mouseX, int mouseY); void cancelDrawing(); diff --git a/base/applications/mspaint/lang/bg-BG.rc b/base/applications/mspaint/lang/bg-BG.rc index 92c323ac436..c33087fcd48 100644 --- a/base/applications/mspaint/lang/bg-BG.rc +++ b/base/applications/mspaint/lang/bg-BG.rc @@ -8,6 +8,8 @@
LANGUAGE LANG_BULGARIAN, SUBLANG_DEFAULT
+//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-bg-BG.bmp" + ID_MENU MENU BEGIN POPUP "&Файл" @@ -191,6 +193,17 @@ BEGIN PUSHBUTTON "Отказ", IDCANCEL, 170, 24, 48, 14 END
+IDD_FONTS DIALOG 0, 0, 225, 25 +CAPTION "Fonts" +STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION +EXSTYLE WS_EX_TOOLWINDOW +FONT 8, "MS Shell Dlg" +BEGIN + COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP + CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS | CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20 +END + STRINGTABLE BEGIN IDS_PROGRAMNAME "Рисуване" @@ -225,4 +238,8 @@ BEGIN IDS_ANGLE "The angle must be between -89 and 89." IDS_LOADERRORTEXT "The file %s could not be loaded." IDS_ENLARGEPROMPTTEXT "The image in the clipboard is larger than the bitmap.\nWould you like the bitmap enlarged?" + IDS_BOLD "Bold" + IDS_ITALIC "Italic" + IDS_UNDERLINE "Underline" + IDS_VERTICAL "Vertical" END diff --git a/base/applications/mspaint/lang/cs-CZ.rc b/base/applications/mspaint/lang/cs-CZ.rc index edec2e6e387..7de50c92181 100644 --- a/base/applications/mspaint/lang/cs-CZ.rc +++ b/base/applications/mspaint/lang/cs-CZ.rc @@ -8,6 +8,8 @@
LANGUAGE LANG_CZECH, SUBLANG_DEFAULT
+//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-cs-CZ.bmp" + ID_MENU MENU BEGIN POPUP "&Soubor" @@ -191,6 +193,17 @@ BEGIN PUSHBUTTON "Storno", IDCANCEL, 170, 24, 48, 14 END
+IDD_FONTS DIALOG 0, 0, 225, 25 +CAPTION "Fonts" +STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION +EXSTYLE WS_EX_TOOLWINDOW +FONT 8, "MS Shell Dlg" +BEGIN + COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP + CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS | CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20 +END + STRINGTABLE BEGIN IDS_PROGRAMNAME "Malování" @@ -225,4 +238,8 @@ BEGIN IDS_ANGLE "Úhel musí být -89 a 89." IDS_LOADERRORTEXT "Soubor %s nemohl být načten." IDS_ENLARGEPROMPTTEXT "Obrázek ve schránce je větší než bitmapa.\nChcete bitmapu zvětšit?" + IDS_BOLD "Bold" + IDS_ITALIC "Italic" + IDS_UNDERLINE "Underline" + IDS_VERTICAL "Vertical" END diff --git a/base/applications/mspaint/lang/de-DE.rc b/base/applications/mspaint/lang/de-DE.rc index e04703b521f..04af89c3585 100644 --- a/base/applications/mspaint/lang/de-DE.rc +++ b/base/applications/mspaint/lang/de-DE.rc @@ -8,6 +8,8 @@
LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL
+//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-de-DE.bmp" + ID_MENU MENU BEGIN POPUP "&Datei" @@ -191,6 +193,17 @@ BEGIN PUSHBUTTON "Abbrechen", IDCANCEL, 170, 24, 48, 14 END
+IDD_FONTS DIALOG 0, 0, 225, 25 +CAPTION "Fonts" +STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION +EXSTYLE WS_EX_TOOLWINDOW +FONT 8, "MS Shell Dlg" +BEGIN + COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP + CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS | CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20 +END + STRINGTABLE BEGIN IDS_PROGRAMNAME "Paint" @@ -225,4 +238,8 @@ BEGIN IDS_ANGLE "Der Winkel muss zwischen -89 und 89 liegen." IDS_LOADERRORTEXT "Die Datei %s konnte nicht geladen werden." IDS_ENLARGEPROMPTTEXT "Das Bild in der Zwischenablage ist größer als die Bitmap.\nSoll die Bitmap vergrößert werden?" + IDS_BOLD "Bold" + IDS_ITALIC "Italic" + IDS_UNDERLINE "Underline" + IDS_VERTICAL "Vertical" END diff --git a/base/applications/mspaint/lang/en-GB.rc b/base/applications/mspaint/lang/en-GB.rc index dfd26d3fa3e..c350c34e23c 100644 --- a/base/applications/mspaint/lang/en-GB.rc +++ b/base/applications/mspaint/lang/en-GB.rc @@ -8,6 +8,8 @@
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_UK
+//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-en-GB.bmp" + ID_MENU MENU BEGIN POPUP "&File" @@ -191,6 +193,17 @@ BEGIN PUSHBUTTON "Cancel", IDCANCEL, 170, 24, 48, 14 END
+IDD_FONTS DIALOG 0, 0, 225, 25 +CAPTION "Fonts" +STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION +EXSTYLE WS_EX_TOOLWINDOW +FONT 8, "MS Shell Dlg" +BEGIN + COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP + CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS | CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20 +END + STRINGTABLE BEGIN IDS_PROGRAMNAME "Paint" @@ -225,4 +238,8 @@ BEGIN IDS_ANGLE "The angle must be between -89 and 89." IDS_LOADERRORTEXT "The file %s could not be loaded." IDS_ENLARGEPROMPTTEXT "The image in the clipboard is larger than the bitmap.\nWould you like the bitmap enlarged?" + IDS_BOLD "Bold" + IDS_ITALIC "Italic" + IDS_UNDERLINE "Underline" + IDS_VERTICAL "Vertical" END diff --git a/base/applications/mspaint/lang/en-US.rc b/base/applications/mspaint/lang/en-US.rc index 28e99c10520..afe602a2ac6 100644 --- a/base/applications/mspaint/lang/en-US.rc +++ b/base/applications/mspaint/lang/en-US.rc @@ -8,6 +8,8 @@
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar.bmp" + ID_MENU MENU BEGIN POPUP "&File" @@ -191,6 +193,17 @@ BEGIN PUSHBUTTON "Cancel", IDCANCEL, 170, 24, 48, 14 END
+IDD_FONTS DIALOG 0, 0, 225, 25 +CAPTION "Fonts" +STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION +EXSTYLE WS_EX_TOOLWINDOW +FONT 8, "MS Shell Dlg" +BEGIN + COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP + CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS | CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20 +END + STRINGTABLE BEGIN IDS_PROGRAMNAME "Paint" @@ -225,4 +238,8 @@ BEGIN IDS_ANGLE "The angle must be between -89 and 89." IDS_LOADERRORTEXT "The file %s could not be loaded." IDS_ENLARGEPROMPTTEXT "The image in the clipboard is larger than the bitmap.\nWould you like the bitmap enlarged?" + IDS_BOLD "Bold" + IDS_ITALIC "Italic" + IDS_UNDERLINE "Underline" + IDS_VERTICAL "Vertical" END diff --git a/base/applications/mspaint/lang/es-ES.rc b/base/applications/mspaint/lang/es-ES.rc index 1c625d8720e..106e0b616df 100644 --- a/base/applications/mspaint/lang/es-ES.rc +++ b/base/applications/mspaint/lang/es-ES.rc @@ -10,6 +10,8 @@
LANGUAGE LANG_SPANISH, SUBLANG_NEUTRAL
+//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-es-ES.bmp" + ID_MENU MENU BEGIN POPUP "&Archivo" @@ -193,6 +195,17 @@ BEGIN PUSHBUTTON "Cancelar", IDCANCEL, 170, 24, 48, 14 END
+IDD_FONTS DIALOG 0, 0, 225, 25 +CAPTION "Tipografías" +STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION +EXSTYLE WS_EX_TOOLWINDOW +FONT 8, "MS Shell Dlg" +BEGIN + COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP + CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS | CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20 +END + STRINGTABLE BEGIN IDS_PROGRAMNAME "Paint" @@ -227,4 +240,8 @@ BEGIN IDS_ANGLE "El ángulo debe de estar entre -89 y 89." IDS_LOADERRORTEXT "No se pudo cargar el archivo %s." IDS_ENLARGEPROMPTTEXT "La imagen en el Portapapeles es más grande que el lienzo.\n¿Quieres adaptar las dimensiones del lienzo a su nuevo tamaño?" + IDS_BOLD "Negrita" + IDS_ITALIC "Cursiva" + IDS_UNDERLINE "Subrayado" + IDS_VERTICAL "Vertical" END diff --git a/base/applications/mspaint/lang/et-EE.rc b/base/applications/mspaint/lang/et-EE.rc index 8c9a13f8a99..2268fc9edc6 100644 --- a/base/applications/mspaint/lang/et-EE.rc +++ b/base/applications/mspaint/lang/et-EE.rc @@ -8,6 +8,8 @@
LANGUAGE LANG_ESTONIAN, SUBLANG_DEFAULT
+//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-et-EE.bmp" + ID_MENU MENU BEGIN POPUP "&Fail" @@ -191,6 +193,17 @@ BEGIN PUSHBUTTON "Tühista", IDCANCEL, 170, 24, 48, 14 END
+IDD_FONTS DIALOG 0, 0, 225, 25 +CAPTION "Fonts" +STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION +EXSTYLE WS_EX_TOOLWINDOW +FONT 8, "MS Shell Dlg" +BEGIN + COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP + CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS | CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20 +END + STRINGTABLE BEGIN IDS_PROGRAMNAME "Paint" @@ -225,4 +238,8 @@ BEGIN IDS_ANGLE "Nurk peab -89 ja 89 vahemikus olema." IDS_LOADERRORTEXT "Faili %s ei suudetud laadida." IDS_ENLARGEPROMPTTEXT "Pilt lõikelaual on suurem kui digitaalkujutis.\nKas soovid digitaalkujutist suurendada?" + IDS_BOLD "Bold" + IDS_ITALIC "Italic" + IDS_UNDERLINE "Underline" + IDS_VERTICAL "Vertical" END diff --git a/base/applications/mspaint/lang/eu-ES.rc b/base/applications/mspaint/lang/eu-ES.rc index 1229441af00..aeaabe181f4 100644 --- a/base/applications/mspaint/lang/eu-ES.rc +++ b/base/applications/mspaint/lang/eu-ES.rc @@ -1,5 +1,7 @@ LANGUAGE LANG_BASQUE, SUBLANG_DEFAULT
+//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-eu-ES.bmp" + ID_MENU MENU BEGIN POPUP "&Fitxategia" @@ -183,6 +185,17 @@ BEGIN PUSHBUTTON "Utzi", IDCANCEL, 170, 24, 48, 14 END
+IDD_FONTS DIALOG 0, 0, 225, 25 +CAPTION "Fonts" +STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION +EXSTYLE WS_EX_TOOLWINDOW +FONT 8, "MS Shell Dlg" +BEGIN + COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP + CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS | CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20 +END + STRINGTABLE BEGIN IDS_PROGRAMNAME "Paint" @@ -217,4 +230,8 @@ BEGIN IDS_ANGLE "Angelu -89 eta 89 tartean izan behar da." IDS_LOADERRORTEXT "%s artxiboaren karga ez ahal da." IDS_ENLARGEPROMPTTEXT "Klipboard dagoen argazkia bitmap-a baino handiagoa da.\nNahi duzu bitmap-a luzatu?" + IDS_BOLD "Bold" + IDS_ITALIC "Italic" + IDS_UNDERLINE "Underline" + IDS_VERTICAL "Vertical" END diff --git a/base/applications/mspaint/lang/fr-FR.rc b/base/applications/mspaint/lang/fr-FR.rc index 2be2fa59f89..a714bbd1a1a 100644 --- a/base/applications/mspaint/lang/fr-FR.rc +++ b/base/applications/mspaint/lang/fr-FR.rc @@ -1,5 +1,7 @@ LANGUAGE LANG_FRENCH, SUBLANG_FRENCH
+//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-fr-FR.bmp" + ID_MENU MENU BEGIN POPUP "&Fichier" @@ -183,6 +185,17 @@ BEGIN PUSHBUTTON "Annuler", IDCANCEL, 170, 24, 48, 14 END
+IDD_FONTS DIALOG 0, 0, 225, 25 +CAPTION "Fonts" +STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION +EXSTYLE WS_EX_TOOLWINDOW +FONT 8, "MS Shell Dlg" +BEGIN + COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP + CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS | CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20 +END + STRINGTABLE BEGIN IDS_PROGRAMNAME "Paint" @@ -217,4 +230,8 @@ BEGIN IDS_ANGLE "L'angle doit être entre -89 et 89." IDS_LOADERRORTEXT "Le fichier %s n'a pas pu être chargé." IDS_ENLARGEPROMPTTEXT "L'image dans le presse-papier est plus grande que le bitmap.\nSouhaitez-vous agrandir le bitmap ?" + IDS_BOLD "Bold" + IDS_ITALIC "Italic" + IDS_UNDERLINE "Underline" + IDS_VERTICAL "Vertical" END diff --git a/base/applications/mspaint/lang/he-IL.rc b/base/applications/mspaint/lang/he-IL.rc index 1e16cb261cb..3501d9163c2 100644 --- a/base/applications/mspaint/lang/he-IL.rc +++ b/base/applications/mspaint/lang/he-IL.rc @@ -1,5 +1,7 @@ LANGUAGE LANG_HEBREW, SUBLANG_DEFAULT
+//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-he-IL.bmp" + ID_MENU MENU BEGIN POPUP "&קובץ" @@ -186,6 +188,17 @@ BEGIN PUSHBUTTON "ביטול", IDCANCEL, 170, 24, 48, 14 END
+IDD_FONTS DIALOG 0, 0, 225, 25 +CAPTION "Fonts" +STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION +EXSTYLE WS_EX_TOOLWINDOW +FONT 8, "MS Shell Dlg" +BEGIN + COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP + CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS | CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20 +END + STRINGTABLE BEGIN IDS_PROGRAMNAME "צייר" @@ -220,4 +233,8 @@ BEGIN IDS_ANGLE, "The angle must be between -89 and 89." IDS_LOADERRORTEXT, ".%s לא היה ניתן לטעון את הקובץ" IDS_ENLARGEPROMPTTEXT "The image in the clipboard is larger than the bitmap.\nWould you like the bitmap enlarged?" + IDS_BOLD "Bold" + IDS_ITALIC "Italic" + IDS_UNDERLINE "Underline" + IDS_VERTICAL "Vertical" END diff --git a/base/applications/mspaint/lang/hu-HU.rc b/base/applications/mspaint/lang/hu-HU.rc index dcdce5c35c2..d95cb65e542 100644 --- a/base/applications/mspaint/lang/hu-HU.rc +++ b/base/applications/mspaint/lang/hu-HU.rc @@ -1,5 +1,7 @@ LANGUAGE LANG_HUNGARIAN, SUBLANG_DEFAULT
+//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-hu-HU.bmp" + ID_MENU MENU BEGIN POPUP "&Fájl" @@ -183,6 +185,17 @@ BEGIN PUSHBUTTON "Mégse", IDCANCEL, 170, 24, 48, 14 END
+IDD_FONTS DIALOG 0, 0, 225, 25 +CAPTION "Fonts" +STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION +EXSTYLE WS_EX_TOOLWINDOW +FONT 8, "MS Shell Dlg" +BEGIN + COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP + CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS | CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20 +END + STRINGTABLE BEGIN IDS_PROGRAMNAME "Paint" @@ -217,4 +230,8 @@ BEGIN IDS_ANGLE "A szögnek -89 és 89 között kell lennie." IDS_LOADERRORTEXT "A(z) %s fájlt nem sikerült betölteni." IDS_ENLARGEPROMPTTEXT "A vágólapon lévő kép nagyobb mint a bitkép.\nSzeretné a bitkép méretét megnövelni?" + IDS_BOLD "Bold" + IDS_ITALIC "Italic" + IDS_UNDERLINE "Underline" + IDS_VERTICAL "Vertical" END diff --git a/base/applications/mspaint/lang/id-ID.rc b/base/applications/mspaint/lang/id-ID.rc index 771ff0d1753..289ce396c9c 100644 --- a/base/applications/mspaint/lang/id-ID.rc +++ b/base/applications/mspaint/lang/id-ID.rc @@ -8,6 +8,8 @@
LANGUAGE LANG_INDONESIAN, SUBLANG_DEFAULT
+//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-id-ID.bmp" + ID_MENU MENU BEGIN POPUP "Be&rkas" @@ -191,6 +193,17 @@ BEGIN PUSHBUTTON "Batal", IDCANCEL, 170, 24, 48, 14 END
+IDD_FONTS DIALOG 0, 0, 225, 25 +CAPTION "Fonts" +STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION +EXSTYLE WS_EX_TOOLWINDOW +FONT 8, "MS Shell Dlg" +BEGIN + COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP + CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS | CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20 +END + STRINGTABLE BEGIN IDS_PROGRAMNAME "Paint" @@ -225,4 +238,8 @@ BEGIN IDS_ANGLE "Sudut hanya tersedia antara -89 and 89." IDS_LOADERRORTEXT "Berkas %s tidak bisa dimuat." IDS_ENLARGEPROMPTTEXT "Gambar pada papan klip lebih besar dari kanvas.\nPerbesar kanvas?" + IDS_BOLD "Bold" + IDS_ITALIC "Italic" + IDS_UNDERLINE "Underline" + IDS_VERTICAL "Vertical" END diff --git a/base/applications/mspaint/lang/it-IT.rc b/base/applications/mspaint/lang/it-IT.rc index d69c4253f4a..42605678968 100644 --- a/base/applications/mspaint/lang/it-IT.rc +++ b/base/applications/mspaint/lang/it-IT.rc @@ -8,6 +8,8 @@
LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL
+//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-it-IT.bmp" + ID_MENU MENU BEGIN POPUP "&File" @@ -191,6 +193,17 @@ BEGIN PUSHBUTTON "Annulla", IDCANCEL, 170, 24, 48, 14 END
+IDD_FONTS DIALOG 0, 0, 225, 25 +CAPTION "Fonts" +STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION +EXSTYLE WS_EX_TOOLWINDOW +FONT 8, "MS Shell Dlg" +BEGIN + COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP + CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS | CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20 +END + STRINGTABLE BEGIN IDS_PROGRAMNAME "Paint" @@ -225,4 +238,8 @@ BEGIN IDS_ANGLE "L'angolo deve essere compreso tra -89 e 89." IDS_LOADERRORTEXT "l file %s non può essere caricato." IDS_ENLARGEPROMPTTEXT "The image in the clipboard is larger than the bitmap.\nWould you like the bitmap enlarged?" + IDS_BOLD "Bold" + IDS_ITALIC "Italic" + IDS_UNDERLINE "Underline" + IDS_VERTICAL "Vertical" END diff --git a/base/applications/mspaint/lang/ja-JP.rc b/base/applications/mspaint/lang/ja-JP.rc index bd41821e3fb..02fa6324bd4 100644 --- a/base/applications/mspaint/lang/ja-JP.rc +++ b/base/applications/mspaint/lang/ja-JP.rc @@ -8,6 +8,8 @@
LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT
+//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-ja-JP.bmp" + ID_MENU MENU BEGIN POPUP "ファイル(&F)" @@ -191,6 +193,17 @@ BEGIN PUSHBUTTON "キャンセル", IDCANCEL, 170, 24, 48, 14 END
+IDD_FONTS DIALOG 0, 0, 225, 25 +CAPTION "フォント" +STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION +EXSTYLE WS_EX_TOOLWINDOW +FONT 9, "MS UI Gothic" +BEGIN + COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP + CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS | CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20 +END + STRINGTABLE BEGIN IDS_PROGRAMNAME "ペイント" @@ -225,4 +238,8 @@ BEGIN IDS_ANGLE "角度は -89 から 89 の間でなければなりません。" IDS_LOADERRORTEXT "ファイル %s は読み込めませんでした。" IDS_ENLARGEPROMPTTEXT "クリップボードの画像はビットマップよりも大きいです。\nビットマップを拡張しますか?" + IDS_BOLD "太字" + IDS_ITALIC "斜体" + IDS_UNDERLINE "下線" + IDS_VERTICAL "縦書き" END diff --git a/base/applications/mspaint/lang/nl-NL.rc b/base/applications/mspaint/lang/nl-NL.rc index d6ad4ed0279..7b62d03e583 100644 --- a/base/applications/mspaint/lang/nl-NL.rc +++ b/base/applications/mspaint/lang/nl-NL.rc @@ -8,6 +8,8 @@
LANGUAGE LANG_DUTCH, SUBLANG_NEUTRAL
+//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-nl-NL.bmp" + ID_MENU MENU BEGIN POPUP "&Bestand" @@ -191,6 +193,17 @@ BEGIN PUSHBUTTON "Annuleren", IDCANCEL, 170, 24, 48, 14 END
+IDD_FONTS DIALOG 0, 0, 225, 25 +CAPTION "Fonts" +STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION +EXSTYLE WS_EX_TOOLWINDOW +FONT 8, "MS Shell Dlg" +BEGIN + COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP + CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS | CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20 +END + STRINGTABLE BEGIN IDS_PROGRAMNAME "Paint" @@ -225,4 +238,8 @@ BEGIN IDS_ANGLE "The angle must be between -89 and 89." IDS_LOADERRORTEXT "The file %s could not be loaded." IDS_ENLARGEPROMPTTEXT "The image in the clipboard is larger than the bitmap.\nWould you like the bitmap enlarged?" + IDS_BOLD "Bold" + IDS_ITALIC "Italic" + IDS_UNDERLINE "Underline" + IDS_VERTICAL "Vertical" END diff --git a/base/applications/mspaint/lang/no-NO.rc b/base/applications/mspaint/lang/no-NO.rc index 2864a8c7099..c52129aaad9 100644 --- a/base/applications/mspaint/lang/no-NO.rc +++ b/base/applications/mspaint/lang/no-NO.rc @@ -8,6 +8,8 @@
LANGUAGE LANG_NORWEGIAN, SUBLANG_NEUTRAL
+//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-no-NO.bmp" + ID_MENU MENU BEGIN POPUP "&Fil" @@ -191,6 +193,17 @@ BEGIN PUSHBUTTON "Avbryt", IDCANCEL, 170, 24, 48, 14 END
+IDD_FONTS DIALOG 0, 0, 225, 25 +CAPTION "Fonts" +STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION +EXSTYLE WS_EX_TOOLWINDOW +FONT 8, "MS Shell Dlg" +BEGIN + COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP + CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS | CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20 +END + STRINGTABLE BEGIN IDS_PROGRAMNAME "Paint" @@ -225,4 +238,8 @@ BEGIN IDS_ANGLE "The angle must be between -89 and 89." IDS_LOADERRORTEXT "The file %s could not be loaded." IDS_ENLARGEPROMPTTEXT "The image in the clipboard is larger than the bitmap.\nWould you like the bitmap enlarged?" + IDS_BOLD "Bold" + IDS_ITALIC "Italic" + IDS_UNDERLINE "Underline" + IDS_VERTICAL "Vertical" END diff --git a/base/applications/mspaint/lang/pl-PL.rc b/base/applications/mspaint/lang/pl-PL.rc index f0ed2ece509..4fd8c7fe837 100644 --- a/base/applications/mspaint/lang/pl-PL.rc +++ b/base/applications/mspaint/lang/pl-PL.rc @@ -9,6 +9,8 @@
LANGUAGE LANG_POLISH, SUBLANG_DEFAULT
+//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-pl-PL.bmp" + ID_MENU MENU BEGIN POPUP "&Plik" @@ -192,6 +194,17 @@ BEGIN PUSHBUTTON "Anuluj", IDCANCEL, 170, 24, 48, 14 END
+IDD_FONTS DIALOG 0, 0, 225, 25 +CAPTION "Fonts" +STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION +EXSTYLE WS_EX_TOOLWINDOW +FONT 8, "MS Shell Dlg" +BEGIN + COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP + CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS | CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20 +END + STRINGTABLE BEGIN IDS_PROGRAMNAME "Paint" @@ -226,4 +239,8 @@ BEGIN IDS_ANGLE "Wprowadź liczbę całkowitą z zakresu od -89 do 89." IDS_LOADERRORTEXT "Plik %s nie może być załadowany." IDS_ENLARGEPROMPTTEXT "Obraz w schowku jest większy niż bitmapa.\nChciałbyś powiększyć bitmapę?" + IDS_BOLD "Bold" + IDS_ITALIC "Italic" + IDS_UNDERLINE "Underline" + IDS_VERTICAL "Vertical" END diff --git a/base/applications/mspaint/lang/pt-BR.rc b/base/applications/mspaint/lang/pt-BR.rc index 1a6dd890930..4c26c69e758 100644 --- a/base/applications/mspaint/lang/pt-BR.rc +++ b/base/applications/mspaint/lang/pt-BR.rc @@ -8,6 +8,8 @@
LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN
+//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-pt-BR.bmp" + ID_MENU MENU BEGIN POPUP "&Arquivo" @@ -191,6 +193,17 @@ BEGIN PUSHBUTTON "Cancelar", IDCANCEL, 170, 24, 48, 14 END
+IDD_FONTS DIALOG 0, 0, 225, 25 +CAPTION "Fonts" +STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION +EXSTYLE WS_EX_TOOLWINDOW +FONT 8, "MS Shell Dlg" +BEGIN + COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP + CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS | CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20 +END + STRINGTABLE BEGIN IDS_PROGRAMNAME "Paint" @@ -225,4 +238,8 @@ BEGIN IDS_ANGLE "The angle must be between -89 and 89." IDS_LOADERRORTEXT "The file %s could not be loaded." IDS_ENLARGEPROMPTTEXT "The image in the clipboard is larger than the bitmap.\nWould you like the bitmap enlarged?" + IDS_BOLD "Bold" + IDS_ITALIC "Italic" + IDS_UNDERLINE "Underline" + IDS_VERTICAL "Vertical" END diff --git a/base/applications/mspaint/lang/pt-PT.rc b/base/applications/mspaint/lang/pt-PT.rc index 9395d3deaba..c4ddb740e0f 100644 --- a/base/applications/mspaint/lang/pt-PT.rc +++ b/base/applications/mspaint/lang/pt-PT.rc @@ -8,6 +8,8 @@
LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE
+//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-pt-PT.bmp" + ID_MENU MENU BEGIN POPUP "&Ficheiro" @@ -191,6 +193,17 @@ BEGIN PUSHBUTTON "Cancelar", IDCANCEL, 170, 24, 48, 14 END
+IDD_FONTS DIALOG 0, 0, 225, 25 +CAPTION "Fonts" +STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION +EXSTYLE WS_EX_TOOLWINDOW +FONT 8, "MS Shell Dlg" +BEGIN + COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP + CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS | CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20 +END + STRINGTABLE BEGIN IDS_PROGRAMNAME "Paint" @@ -225,4 +238,8 @@ BEGIN IDS_ANGLE "The angle must be between -89 and 89." IDS_LOADERRORTEXT "The file %s could not be loaded." IDS_ENLARGEPROMPTTEXT "The image in the clipboard is larger than the bitmap.\nWould you like the bitmap enlarged?" + IDS_BOLD "Bold" + IDS_ITALIC "Italic" + IDS_UNDERLINE "Underline" + IDS_VERTICAL "Vertical" END diff --git a/base/applications/mspaint/lang/ro-RO.rc b/base/applications/mspaint/lang/ro-RO.rc index 2bd8bf0efe9..72ad71d22ed 100644 --- a/base/applications/mspaint/lang/ro-RO.rc +++ b/base/applications/mspaint/lang/ro-RO.rc @@ -9,6 +9,8 @@
LANGUAGE LANG_ROMANIAN, SUBLANG_NEUTRAL
+//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-ro-RO.bmp" + ID_MENU MENU BEGIN POPUP "&Fișier" @@ -192,6 +194,17 @@ BEGIN PUSHBUTTON "A&nulează", IDCANCEL, 170, 24, 48, 14 END
+IDD_FONTS DIALOG 0, 0, 225, 25 +CAPTION "Fonts" +STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION +EXSTYLE WS_EX_TOOLWINDOW +FONT 8, "MS Shell Dlg" +BEGIN + COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP + CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS | CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20 +END + STRINGTABLE BEGIN IDS_PROGRAMNAME "Pictare" @@ -226,4 +239,8 @@ BEGIN IDS_ANGLE "Unghiul trebuie să fie între -89 și 89." IDS_LOADERRORTEXT "Fișierul %s nu poate fi încărcat." IDS_ENLARGEPROMPTTEXT "Imaginea din memorie este mai mare decât suprafața curent disponibilă în aplicație.\nDoriți să redimensionați suprafața de desen disponibilă?" + IDS_BOLD "Bold" + IDS_ITALIC "Italic" + IDS_UNDERLINE "Underline" + IDS_VERTICAL "Vertical" END diff --git a/base/applications/mspaint/lang/ru-RU.rc b/base/applications/mspaint/lang/ru-RU.rc index 10910b337ed..492fd51b45b 100644 --- a/base/applications/mspaint/lang/ru-RU.rc +++ b/base/applications/mspaint/lang/ru-RU.rc @@ -1,5 +1,7 @@ LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
+//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-ru-RU.bmp" + ID_MENU MENU BEGIN POPUP "&Файл" @@ -183,6 +185,17 @@ BEGIN PUSHBUTTON "Отмена", IDCANCEL, 170, 24, 48, 14 END
+IDD_FONTS DIALOG 0, 0, 225, 25 +CAPTION "Fonts" +STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION +EXSTYLE WS_EX_TOOLWINDOW +FONT 8, "MS Shell Dlg" +BEGIN + COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP + CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS | CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20 +END + STRINGTABLE BEGIN IDS_PROGRAMNAME "Paint" @@ -217,4 +230,8 @@ BEGIN IDS_ANGLE, "Угол должен быть в интервале от -89 до 89." IDS_LOADERRORTEXT, "Невозможно загрузить файл %s." IDS_ENLARGEPROMPTTEXT "Изображения в буфере обмена больше растрового изображения.\nХотите увеличить точечный рисунок?" + IDS_BOLD "Bold" + IDS_ITALIC "Italic" + IDS_UNDERLINE "Underline" + IDS_VERTICAL "Vertical" END diff --git a/base/applications/mspaint/lang/sk-SK.rc b/base/applications/mspaint/lang/sk-SK.rc index 4eadabc96c3..f513cf3e7da 100644 --- a/base/applications/mspaint/lang/sk-SK.rc +++ b/base/applications/mspaint/lang/sk-SK.rc @@ -9,6 +9,8 @@
LANGUAGE LANG_SLOVAK, SUBLANG_DEFAULT
+//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-sk-SK.bmp" + ID_MENU MENU BEGIN POPUP "&Súbor" @@ -192,6 +194,17 @@ BEGIN PUSHBUTTON "Zrušiť", IDCANCEL, 170, 24, 48, 14 END
+IDD_FONTS DIALOG 0, 0, 225, 25 +CAPTION "Fonts" +STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION +EXSTYLE WS_EX_TOOLWINDOW +FONT 8, "MS Shell Dlg" +BEGIN + COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP + CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS | CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20 +END + STRINGTABLE BEGIN IDS_PROGRAMNAME "Skicár" @@ -226,4 +239,8 @@ BEGIN IDS_ANGLE "The angle must be between -89 and 89." IDS_LOADERRORTEXT "The file %s could not be loaded." IDS_ENLARGEPROMPTTEXT "The image in the clipboard is larger than the bitmap.\nWould you like the bitmap enlarged?" + IDS_BOLD "Bold" + IDS_ITALIC "Italic" + IDS_UNDERLINE "Underline" + IDS_VERTICAL "Vertical" END diff --git a/base/applications/mspaint/lang/sq-AL.rc b/base/applications/mspaint/lang/sq-AL.rc index 25446b39bbc..f465274430c 100644 --- a/base/applications/mspaint/lang/sq-AL.rc +++ b/base/applications/mspaint/lang/sq-AL.rc @@ -8,6 +8,8 @@
LANGUAGE LANG_ALBANIAN, SUBLANG_NEUTRAL
+//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-sq-AL.bmp" + ID_MENU MENU BEGIN POPUP "&File" @@ -191,6 +193,17 @@ BEGIN PUSHBUTTON "Anulo", IDCANCEL, 170, 24, 48, 14 END
+IDD_FONTS DIALOG 0, 0, 225, 25 +CAPTION "Fonts" +STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION +EXSTYLE WS_EX_TOOLWINDOW +FONT 8, "MS Shell Dlg" +BEGIN + COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP + CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS | CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20 +END + STRINGTABLE BEGIN IDS_PROGRAMNAME "Paint" @@ -225,4 +238,8 @@ BEGIN IDS_ANGLE "Këndi duhet të jetë në mes -89 dhe 89." IDS_LOADERRORTEXT "Dokumenti %s nuk mund te ngarkohej." IDS_ENLARGEPROMPTTEXT "The image in the clipboard is larger than the bitmap.\nWould you like the bitmap enlarged?" + IDS_BOLD "Bold" + IDS_ITALIC "Italic" + IDS_UNDERLINE "Underline" + IDS_VERTICAL "Vertical" END diff --git a/base/applications/mspaint/lang/sv-SE.rc b/base/applications/mspaint/lang/sv-SE.rc index f883a7d9177..73c295551e7 100644 --- a/base/applications/mspaint/lang/sv-SE.rc +++ b/base/applications/mspaint/lang/sv-SE.rc @@ -1,5 +1,7 @@ LANGUAGE LANG_SWEDISH, SUBLANG_NEUTRAL
+//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-sv-SE.bmp" + ID_MENU MENU BEGIN POPUP "&Arkiv" @@ -183,6 +185,17 @@ BEGIN PUSHBUTTON "Avbryt", IDCANCEL, 170, 24, 48, 14 END
+IDD_FONTS DIALOG 0, 0, 225, 25 +CAPTION "Fonts" +STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION +EXSTYLE WS_EX_TOOLWINDOW +FONT 8, "MS Shell Dlg" +BEGIN + COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP + CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS | CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20 +END + STRINGTABLE BEGIN IDS_PROGRAMNAME "Paint" @@ -217,4 +230,8 @@ BEGIN IDS_ANGLE "The angle must be between -89 and 89." IDS_LOADERRORTEXT "The file %s could not be loaded." IDS_ENLARGEPROMPTTEXT "The image in the clipboard is larger than the bitmap.\nWould you like the bitmap enlarged?" + IDS_BOLD "Bold" + IDS_ITALIC "Italic" + IDS_UNDERLINE "Underline" + IDS_VERTICAL "Vertical" END diff --git a/base/applications/mspaint/lang/tr-TR.rc b/base/applications/mspaint/lang/tr-TR.rc index 735894e6de8..9fbaf431b3b 100644 --- a/base/applications/mspaint/lang/tr-TR.rc +++ b/base/applications/mspaint/lang/tr-TR.rc @@ -8,6 +8,8 @@
LANGUAGE LANG_TURKISH, SUBLANG_DEFAULT
+//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-tr-TR.bmp" + ID_MENU MENU BEGIN POPUP "&Dosya" @@ -191,6 +193,17 @@ BEGIN PUSHBUTTON "İptal", IDCANCEL, 170, 24, 48, 14 END
+IDD_FONTS DIALOG 0, 0, 225, 25 +CAPTION "Fonts" +STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION +EXSTYLE WS_EX_TOOLWINDOW +FONT 8, "MS Shell Dlg" +BEGIN + COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP + CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS | CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20 +END + STRINGTABLE BEGIN IDS_PROGRAMNAME "Paint" @@ -225,4 +238,8 @@ BEGIN IDS_ANGLE "Açı -89 ile 89 arasında olmalıdır." IDS_LOADERRORTEXT "%s dosyası yüklenemedi." IDS_ENLARGEPROMPTTEXT "Panodaki resim bit eşleminden daha büyük.\nBit eşlemin genişletilmişini ister misiniz?" + IDS_BOLD "Bold" + IDS_ITALIC "Italic" + IDS_UNDERLINE "Underline" + IDS_VERTICAL "Vertical" END diff --git a/base/applications/mspaint/lang/uk-UA.rc b/base/applications/mspaint/lang/uk-UA.rc index 08660706f12..2a75841f4ad 100644 --- a/base/applications/mspaint/lang/uk-UA.rc +++ b/base/applications/mspaint/lang/uk-UA.rc @@ -8,6 +8,8 @@
LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT
+//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-uk-UA.bmp" + ID_MENU MENU BEGIN POPUP "&Файл" @@ -191,6 +193,17 @@ BEGIN PUSHBUTTON "Скасувати", IDCANCEL, 170, 24, 48, 14 END
+IDD_FONTS DIALOG 0, 0, 225, 25 +CAPTION "Fonts" +STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION +EXSTYLE WS_EX_TOOLWINDOW +FONT 8, "MS Shell Dlg" +BEGIN + COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP + CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS | CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20 +END + STRINGTABLE BEGIN IDS_PROGRAMNAME "Paint" @@ -225,4 +238,8 @@ BEGIN IDS_ANGLE "The angle must be between -89 and 89." IDS_LOADERRORTEXT "The file %s could not be loaded." IDS_ENLARGEPROMPTTEXT "The image in the clipboard is larger than the bitmap.\nWould you like the bitmap enlarged?" + IDS_BOLD "Bold" + IDS_ITALIC "Italic" + IDS_UNDERLINE "Underline" + IDS_VERTICAL "Vertical" END diff --git a/base/applications/mspaint/lang/vi-VN.rc b/base/applications/mspaint/lang/vi-VN.rc index 9a0d7d03290..db323137650 100644 --- a/base/applications/mspaint/lang/vi-VN.rc +++ b/base/applications/mspaint/lang/vi-VN.rc @@ -8,6 +8,8 @@
LANGUAGE LANG_VIETNAMESE, SUBLANG_VIETNAMESE_VIETNAM
+//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-vi-VN.bmp" + ID_MENU MENU BEGIN POPUP "&Tập tin" @@ -191,6 +193,17 @@ BEGIN PUSHBUTTON "Hủy", IDCANCEL, 170, 24, 48, 14 END
+IDD_FONTS DIALOG 0, 0, 225, 25 +CAPTION "Fonts" +STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION +EXSTYLE WS_EX_TOOLWINDOW +FONT 8, "MS Shell Dlg" +BEGIN + COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP + CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS | CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20 +END + STRINGTABLE BEGIN IDS_PROGRAMNAME "Vẽ" @@ -225,4 +238,8 @@ BEGIN IDS_ANGLE "Giá trị của góc phải ở giữa -89 và 89." IDS_LOADERRORTEXT "Không thể tải tập tin %s." IDS_ENLARGEPROMPTTEXT "Hình ảnh bạn định dán lớn hơn hình bitmap này.\n Bạn có muốn nới rộng hình bitmap?" + IDS_BOLD "Bold" + IDS_ITALIC "Italic" + IDS_UNDERLINE "Underline" + IDS_VERTICAL "Vertical" END diff --git a/base/applications/mspaint/lang/zh-CN.rc b/base/applications/mspaint/lang/zh-CN.rc index c991b85b5cf..0be67583349 100644 --- a/base/applications/mspaint/lang/zh-CN.rc +++ b/base/applications/mspaint/lang/zh-CN.rc @@ -9,6 +9,8 @@
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
+//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-zh-CN.bmp" + ID_MENU MENU BEGIN POPUP "文件(&F)" @@ -192,6 +194,17 @@ BEGIN PUSHBUTTON "取消", IDCANCEL, 170, 24, 48, 14 END
+IDD_FONTS DIALOG 0, 0, 225, 25 +CAPTION "Fonts" +STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION +EXSTYLE WS_EX_TOOLWINDOW +FONT 9, "宋体" +BEGIN + COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP + CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS | CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20 +END + STRINGTABLE BEGIN IDS_PROGRAMNAME "画图" @@ -226,4 +239,8 @@ BEGIN IDS_ANGLE "角度必须在 -89 与 89 之间。" IDS_LOADERRORTEXT "文件 %s 无法加载。" IDS_ENLARGEPROMPTTEXT "剪贴板中的图像比位图大。\n你想扩大位图吗?" + IDS_BOLD "Bold" + IDS_ITALIC "Italic" + IDS_UNDERLINE "Underline" + IDS_VERTICAL "Vertical" END diff --git a/base/applications/mspaint/lang/zh-HK.rc b/base/applications/mspaint/lang/zh-HK.rc index 28d939f47fb..ece47e9fff4 100644 --- a/base/applications/mspaint/lang/zh-HK.rc +++ b/base/applications/mspaint/lang/zh-HK.rc @@ -8,6 +8,8 @@
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_HONGKONG
+//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-zh-HK.bmp" + ID_MENU MENU BEGIN POPUP "檔案(&F)" @@ -191,6 +193,17 @@ BEGIN PUSHBUTTON "取消", IDCANCEL, 170, 24, 48, 14 END
+IDD_FONTS DIALOG 0, 0, 225, 25 +CAPTION "Fonts" +STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION +EXSTYLE WS_EX_TOOLWINDOW +FONT 9, "新細明體" +BEGIN + COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP + CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS | CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20 +END + STRINGTABLE BEGIN IDS_PROGRAMNAME "小畫家" @@ -225,4 +238,8 @@ BEGIN IDS_ANGLE "角度必須介乎 -89 至 89 之間。" IDS_LOADERRORTEXT "無法載入檔案 %s。" IDS_ENLARGEPROMPTTEXT "剪貼簿中的圖像比點陣圖大。\n你要擴大點陣圖嗎?" + IDS_BOLD "Bold" + IDS_ITALIC "Italic" + IDS_UNDERLINE "Underline" + IDS_VERTICAL "Vertical" END diff --git a/base/applications/mspaint/lang/zh-TW.rc b/base/applications/mspaint/lang/zh-TW.rc index 8bc305e3159..d6011140db2 100644 --- a/base/applications/mspaint/lang/zh-TW.rc +++ b/base/applications/mspaint/lang/zh-TW.rc @@ -9,6 +9,8 @@
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL
+//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-zh-TW.bmp" + ID_MENU MENU BEGIN POPUP "檔案(&F)" @@ -192,6 +194,17 @@ BEGIN PUSHBUTTON "取消", IDCANCEL, 170, 24, 48, 14 END
+IDD_FONTS DIALOG 0, 0, 225, 25 +CAPTION "Fonts" +STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION +EXSTYLE WS_EX_TOOLWINDOW +FONT 9, "新細明體" +BEGIN + COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP + CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS | CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20 +END + STRINGTABLE BEGIN IDS_PROGRAMNAME "畫圖" @@ -226,4 +239,8 @@ BEGIN IDS_ANGLE "角度必須介於 -89 和 89 之間。" IDS_LOADERRORTEXT "無法載入檔案 %s。" IDS_ENLARGEPROMPTTEXT "剪貼簿中的圖像比點陣圖大。\n你想擴大點陣圖嗎?" + IDS_BOLD "Bold" + IDS_ITALIC "Italic" + IDS_UNDERLINE "Underline" + IDS_VERTICAL "Vertical" END diff --git a/base/applications/mspaint/main.cpp b/base/applications/mspaint/main.cpp index b7e774a23f4..ab410537a69 100644 --- a/base/applications/mspaint/main.cpp +++ b/base/applications/mspaint/main.cpp @@ -171,7 +171,10 @@ _tWinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPTSTR lpszArgument hProgInstance = hThisInstance;
/* initialize common controls library */ - InitCommonControls(); + INITCOMMONCONTROLSEX iccx; + iccx.dwSize = sizeof(iccx); + iccx.dwICC = ICC_STANDARD_CLASSES | ICC_USEREX_CLASSES; + InitCommonControlsEx(&iccx);
LoadString(hThisInstance, IDS_DEFAULTFILENAME, filepathname, _countof(filepathname)); CPath pathFileName(filepathname); @@ -256,6 +259,8 @@ _tWinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPTSTR lpszArgument DoLoadImageFile(mainWindow, __targv[1], TRUE); }
+ imageModel.ClearHistory(); + /* initializing the CHOOSECOLOR structure for use with ChooseColor */ ZeroMemory(&choosecolor, sizeof(choosecolor)); choosecolor.lStructSize = sizeof(CHOOSECOLOR); @@ -327,10 +332,6 @@ _tWinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPTSTR lpszArgument /* by moving the window, the things in WM_SIZE are done */ mainWindow.SetWindowPlacement(&(registrySettings.WindowPlacement));
- /* creating the text editor window for the text tool */ - RECT textEditWindowPos = {300, 0, 300 + 300, 0 + 200}; - textEditWindow.Create(hwnd, textEditWindowPos, NULL, WS_OVERLAPPEDWINDOW); - /* Make the window visible on the screen */ ShowWindow (hwnd, nFunsterStil);
@@ -340,6 +341,9 @@ _tWinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPTSTR lpszArgument /* Run the message loop. It will run until GetMessage() returns 0 */ while (GetMessage(&messages, NULL, 0, 0)) { + if (fontsDialog.IsWindow() && IsDialogMessage(fontsDialog, &messages)) + continue; + TranslateAccelerator(hwnd, haccel, &messages);
/* Translate virtual-key messages into character messages */ diff --git a/base/applications/mspaint/mouse.cpp b/base/applications/mspaint/mouse.cpp index e5b50b617ad..16a6500e9d1 100644 --- a/base/applications/mspaint/mouse.cpp +++ b/base/applications/mspaint/mouse.cpp @@ -366,12 +366,7 @@ struct TextTool : ToolBase { }
- void OnButtonDown(BOOL bLeftButton, LONG x, LONG y, BOOL bDoubleClick) - { - imageModel.CopyPrevious(); - } - - void OnMouseMove(BOOL bLeftButton, LONG x, LONG y) + void UpdatePoint(LONG x, LONG y) { POINT temp; imageModel.ResetToPrevious(); @@ -381,16 +376,78 @@ struct TextTool : ToolBase RectSel(m_hdc, start.x, start.y, temp.x, temp.y); }
+ void OnButtonDown(BOOL bLeftButton, LONG x, LONG y, BOOL bDoubleClick) + { + if (!textEditWindow.IsWindow()) + textEditWindow.Create(imageArea); + + imageModel.CopyPrevious(); + UpdatePoint(x, y); + } + + void OnMouseMove(BOOL bLeftButton, LONG x, LONG y) + { + UpdatePoint(x, y); + } + void OnButtonUp(BOOL bLeftButton, LONG x, LONG y) { imageModel.ResetToPrevious(); - if (selectionModel.IsSrcRectSizeNonzero()) + + BOOL bTextBoxShown = textEditWindow.IsWindowVisible(); + if (bTextBoxShown && textEditWindow.GetWindowTextLength() > 0) { - imageModel.CopyPrevious(); + CString szText; + textEditWindow.GetWindowText(szText);
- placeSelWin(); - selectionWindow.ShowWindow(SW_SHOW); - ForceRefreshSelectionContents(); + RECT rc; + textEditWindow.InvalidateEditRect(); + textEditWindow.GetEditRect(&rc); + + INT style = (toolsModel.IsBackgroundTransparent() ? 0 : 1); + Text(m_hdc, rc.left, rc.top, rc.right, rc.bottom, m_fg, m_bg, szText, + textEditWindow.GetFont(), style); + } + + if (registrySettings.ShowTextTool) + { + if (!fontsDialog.IsWindow()) + fontsDialog.Create(mainWindow); + + fontsDialog.ShowWindow(SW_SHOWNOACTIVATE); + } + + if (!bTextBoxShown || selectionModel.IsSrcRectSizeNonzero()) + { + RECT rc; + selectionModel.GetRect(&rc); + + // Enlarge if tool small + INT cxMin = CX_MINTEXTEDIT, cyMin = CY_MINTEXTEDIT; + if (selectionModel.IsSrcRectSizeNonzero()) + { + if (rc.right - rc.left < cxMin) + rc.right = rc.left + cxMin; + if (rc.bottom - rc.top < cyMin) + rc.bottom = rc.top + cyMin; + } + else + { + SetRect(&rc, x, y, x + cxMin, y + cyMin); + } + + if (!textEditWindow.IsWindow()) + textEditWindow.Create(imageArea); + + textEditWindow.SetWindowText(NULL); + textEditWindow.ValidateEditRect(&rc); + textEditWindow.ShowWindow(SW_SHOWNOACTIVATE); + textEditWindow.SetFocus(); + } + else + { + textEditWindow.ShowWindow(SW_HIDE); + textEditWindow.SetWindowText(NULL); } }
@@ -398,6 +455,8 @@ struct TextTool : ToolBase { imageModel.ResetToPrevious(); selectionModel.ResetPtStack(); + textEditWindow.SetWindowText(NULL); + textEditWindow.ShowWindow(SW_HIDE); ToolBase::OnCancelDraw(); } }; diff --git a/base/applications/mspaint/palettemodel.cpp b/base/applications/mspaint/palettemodel.cpp index ffbde5706fd..1f5dd899be6 100644 --- a/base/applications/mspaint/palettemodel.cpp +++ b/base/applications/mspaint/palettemodel.cpp @@ -97,6 +97,8 @@ void PaletteModel::NotifyColorChanged() { paletteWindow.SendMessage(WM_PALETTEMODELCOLORCHANGED); selectionWindow.SendMessage(WM_PALETTEMODELCOLORCHANGED); + if (textEditWindow.IsWindow()) + textEditWindow.SendMessage(WM_PALETTEMODELCOLORCHANGED); }
void PaletteModel::NotifyPaletteChanged() diff --git a/base/applications/mspaint/precomp.h b/base/applications/mspaint/precomp.h index 5b5bfa8279d..5e2756b2fa1 100644 --- a/base/applications/mspaint/precomp.h +++ b/base/applications/mspaint/precomp.h @@ -50,6 +50,7 @@ #include "toolsettings.h" #include "toolsmodel.h" #include "winproc.h" +#include "dialogs.h" #include "common.h"
#endif /* _MSPAINT_H */ diff --git a/base/applications/mspaint/registry.cpp b/base/applications/mspaint/registry.cpp index eb257e0cf3b..fd83a4b3243 100644 --- a/base/applications/mspaint/registry.cpp +++ b/base/applications/mspaint/registry.cpp @@ -25,13 +25,18 @@ static DWORD ReadDWORD(CRegKey &key, LPCTSTR lpName, DWORD &dwValue, BOOL bCheck return dwPrev; }
-static void ReadFileHistory(CRegKey &key, LPCTSTR lpName, CString &strFile) +static void ReadString(CRegKey &key, LPCTSTR lpName, CString &strValue, LPCTSTR lpDefault = TEXT("")) { + CString strTemp; ULONG nChars = MAX_PATH; - LPTSTR szFile = strFile.GetBuffer(nChars); - if (key.QueryStringValue(lpName, szFile, &nChars) != ERROR_SUCCESS) - szFile[0] = '\0'; - strFile.ReleaseBuffer(); + LPTSTR psz = strTemp.GetBuffer(nChars); + LONG error = key.QueryStringValue(lpName, psz, &nChars); + strTemp.ReleaseBuffer(); + + if (error == ERROR_SUCCESS) + strValue = strTemp; + else + strValue = lpDefault; }
void RegistrySettings::SetWallpaper(LPCTSTR szFileName, RegistrySettings::WallpaperStyle style) @@ -61,15 +66,20 @@ void RegistrySettings::LoadPresets() ThumbXPos = 180; ThumbYPos = 200; UnitSetting = 0; - const WINDOWPLACEMENT DefaultWindowPlacement = { - sizeof(WINDOWPLACEMENT), - 0, - SW_SHOWNORMAL, - {0, 0}, - {-1, -1}, - {100, 100, 700, 550} - }; - WindowPlacement = DefaultWindowPlacement; + Bold = FALSE; + Italic = FALSE; + Underline = FALSE; + CharSet = DEFAULT_CHARSET; + PointSize = 14; + FontsPositionX = 0; + FontsPositionY = 0; + ShowTextTool = TRUE; + + LOGFONT lf; + GetObject(GetStockObject(DEFAULT_GUI_FONT), sizeof(lf), &lf); + strFontName = lf.lfFaceName; + + ZeroMemory(&WindowPlacement, sizeof(WindowPlacement)); }
void RegistrySettings::Load() @@ -98,10 +108,24 @@ void RegistrySettings::Load() CRegKey files; if (files.Open(HKEY_CURRENT_USER, _T("Software\Microsoft\Windows\CurrentVersion\Applets\Paint\Recent File List"), KEY_READ) == ERROR_SUCCESS) { - ReadFileHistory(files, _T("File1"), strFile1); - ReadFileHistory(files, _T("File2"), strFile2); - ReadFileHistory(files, _T("File3"), strFile3); - ReadFileHistory(files, _T("File4"), strFile4); + ReadString(files, _T("File1"), strFile1); + ReadString(files, _T("File2"), strFile2); + ReadString(files, _T("File3"), strFile3); + ReadString(files, _T("File4"), strFile4); + } + + CRegKey text; + if (text.Open(HKEY_CURRENT_USER, _T("Software\Microsoft\Windows\CurrentVersion\Applets\Paint\Text"), KEY_READ) == ERROR_SUCCESS) + { + ReadDWORD(text, _T("Bold"), Bold, FALSE); + ReadDWORD(text, _T("Italic"), Italic, FALSE); + ReadDWORD(text, _T("Underline"), Underline, FALSE); + ReadDWORD(text, _T("CharSet"), CharSet, FALSE); + ReadDWORD(text, _T("PointSize"), PointSize, FALSE); + ReadDWORD(text, _T("PositionX"), FontsPositionX, FALSE); + ReadDWORD(text, _T("PositionY"), FontsPositionY, FALSE); + ReadDWORD(text, _T("ShowTextTool"), ShowTextTool, FALSE); + ReadString(text, _T("TypeFaceName"), strFontName, strFontName); }
// Fix the bitmap size if too large @@ -144,6 +168,20 @@ void RegistrySettings::Store() if (!strFile4.IsEmpty()) files.SetStringValue(_T("File4"), strFile4); } + + CRegKey text; + if (text.Create(HKEY_CURRENT_USER, _T("Software\Microsoft\Windows\CurrentVersion\Applets\Paint\Text")) == ERROR_SUCCESS) + { + text.SetDWORDValue(_T("Bold"), Bold); + text.SetDWORDValue(_T("Italic"), Italic); + text.SetDWORDValue(_T("Underline"), Underline); + text.SetDWORDValue(_T("CharSet"), CharSet); + text.SetDWORDValue(_T("PointSize"), PointSize); + text.SetDWORDValue(_T("PositionX"), FontsPositionX); + text.SetDWORDValue(_T("PositionY"), FontsPositionY); + text.SetDWORDValue(_T("ShowTextTool"), ShowTextTool); + text.SetStringValue(_T("TypeFaceName"), strFontName); + } }
void RegistrySettings::SetMostRecentFile(LPCTSTR szPathName) diff --git a/base/applications/mspaint/registry.h b/base/applications/mspaint/registry.h index 98cd4072374..33c1be4054b 100644 --- a/base/applications/mspaint/registry.h +++ b/base/applications/mspaint/registry.h @@ -32,6 +32,16 @@ public: CString strFile3; CString strFile4;
+ CString strFontName; + DWORD PointSize; + DWORD Bold; + DWORD Italic; + DWORD Underline; + DWORD CharSet; + DWORD FontsPositionX; + DWORD FontsPositionY; + DWORD ShowTextTool; + enum WallpaperStyle { TILED, CENTERED, diff --git a/base/applications/mspaint/resource.h b/base/applications/mspaint/resource.h index fd3330a776b..3e563416309 100644 --- a/base/applications/mspaint/resource.h +++ b/base/applications/mspaint/resource.h @@ -13,6 +13,7 @@ #define IDI_APPICON 500
#define IDB_TOOLBARICONS 510 +#define IDB_FONTSTOOLBAR 511
#define IDI_TRANSPARENT 526 #define IDI_NONTRANSPARENT 527 @@ -96,6 +97,11 @@ #define IDM_HELPHELPTOPICS 270 #define IDM_HELPINFO 271
+#define IDM_BOLD 280 +#define IDM_ITALIC 281 +#define IDM_UNDERLINE 282 +#define IDM_VERTICAL 283 + /* the following 16 numbers need to be in order, increasing by 1 */ #define ID_FREESEL 600 #define ID_RECTSEL 601 @@ -165,6 +171,11 @@ #define IDD_STRETCHSKEWEDITVSKEW 757 #define IDD_STRETCHSKEWTEXTVDEG 758
+#define IDD_FONTS 760 +#define IDD_FONTSNAMES 761 +#define IDD_FONTSSIZES 762 +#define IDD_FONTSTOOLBAR 764 + #define IDS_PROGRAMNAME 900 #define IDS_WINDOWTITLE 901 #define IDS_INFOTITLE 902 @@ -202,3 +213,8 @@
#define IDS_LOADERRORTEXT 933 #define IDS_ENLARGEPROMPTTEXT 934 + +#define IDS_BOLD 935 +#define IDS_ITALIC 936 +#define IDS_UNDERLINE 937 +#define IDS_VERTICAL 938 diff --git a/base/applications/mspaint/rsrc.rc b/base/applications/mspaint/rsrc.rc index 8b85446cf71..49a6fb4ce2a 100644 --- a/base/applications/mspaint/rsrc.rc +++ b/base/applications/mspaint/rsrc.rc @@ -10,6 +10,7 @@
#include <windef.h> #include <winuser.h> +#include <commctrl.h>
#include "resource.h"
diff --git a/base/applications/mspaint/selectionmodel.cpp b/base/applications/mspaint/selectionmodel.cpp index aa6b8ef9f49..464b6bdca64 100644 --- a/base/applications/mspaint/selectionmodel.cpp +++ b/base/applications/mspaint/selectionmodel.cpp @@ -347,3 +347,8 @@ void SelectionModel::NotifyRefreshNeeded() { selectionWindow.SendMessage(WM_SELECTIONMODELREFRESHNEEDED); } + +void SelectionModel::GetRect(LPRECT prc) const +{ + *prc = m_rcDest; +} diff --git a/base/applications/mspaint/selectionmodel.h b/base/applications/mspaint/selectionmodel.h index 9ed0f2faa46..523f22145fb 100644 --- a/base/applications/mspaint/selectionmodel.h +++ b/base/applications/mspaint/selectionmodel.h @@ -65,6 +65,7 @@ public: LONG GetDestRectHeight() const; LONG GetDestRectLeft() const; LONG GetDestRectTop() const; + void GetRect(LPRECT prc) const; void DrawTextToolText(HDC hDCImage, COLORREF crFg, COLORREF crBg, BOOL bBgTransparent = FALSE);
private: diff --git a/base/applications/mspaint/textedit.cpp b/base/applications/mspaint/textedit.cpp index 4c792c28d83..792633a55e7 100644 --- a/base/applications/mspaint/textedit.cpp +++ b/base/applications/mspaint/textedit.cpp @@ -10,50 +10,502 @@
#include "precomp.h"
+#define CXY_GRIP 3 + /* FUNCTIONS ********************************************************/ -LRESULT CTextEditWindow::OnCreate(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) + +CTextEditWindow::CTextEditWindow() : m_hFont(NULL), m_hFontZoomed(NULL), m_nAppIsMovingOrSizing(0) +{ + SetRectEmpty(&m_rc); +} + +#define X0 rc.left +#define X1 ((rc.left + rc.right - CXY_GRIP) / 2) +#define X2 (rc.right - CXY_GRIP) +#define Y0 rc.top +#define Y1 ((rc.top + rc.bottom - CXY_GRIP) / 2) +#define Y2 (rc.bottom - CXY_GRIP) +#define RECT0 X0, Y0, X0 + CXY_GRIP, Y0 + CXY_GRIP // Upper Left +#define RECT1 X1, Y0, X1 + CXY_GRIP, Y0 + CXY_GRIP // Top +#define RECT2 X2, Y0, X2 + CXY_GRIP, Y0 + CXY_GRIP // Upper Right +#define RECT3 X0, Y1, X0 + CXY_GRIP, Y1 + CXY_GRIP // Left +#define RECT4 X2, Y1, X2 + CXY_GRIP, Y1 + CXY_GRIP // Right +#define RECT5 X0, Y2, X0 + CXY_GRIP, Y2 + CXY_GRIP // Lower Left +#define RECT6 X1, Y2, X1 + CXY_GRIP, Y2 + CXY_GRIP // Bottom +#define RECT7 X2, Y2, X2 + CXY_GRIP, Y2 + CXY_GRIP // Lower Right + +INT CTextEditWindow::DoHitTest(RECT& rc, POINT pt) { - /* creating the edit control within the editor window */ - RECT editControlPos = {0, 0, 0 + 100, 0 + 100}; - editControl.Create(_T("EDIT"), m_hWnd, editControlPos, NULL, - WS_CHILD | WS_VISIBLE | WS_BORDER | WS_HSCROLL | WS_VSCROLL | ES_MULTILINE | ES_NOHIDESEL | ES_AUTOHSCROLL | ES_AUTOVSCROLL, - WS_EX_CLIENTEDGE); + RECT rcGrip; + + SetRect(&rcGrip, RECT0); + if (PtInRect(&rcGrip, pt)) + return HTTOPLEFT; + SetRect(&rcGrip, RECT1); + if (PtInRect(&rcGrip, pt)) + return HTTOP; + SetRect(&rcGrip, RECT2); + if (PtInRect(&rcGrip, pt)) + return HTTOPRIGHT; + + SetRect(&rcGrip, RECT3); + if (PtInRect(&rcGrip, pt)) + return HTLEFT; + SetRect(&rcGrip, RECT4); + if (PtInRect(&rcGrip, pt)) + return HTRIGHT; + + SetRect(&rcGrip, RECT5); + if (PtInRect(&rcGrip, pt)) + return HTBOTTOMLEFT; + SetRect(&rcGrip, RECT6); + if (PtInRect(&rcGrip, pt)) + return HTBOTTOM; + SetRect(&rcGrip, RECT7); + if (PtInRect(&rcGrip, pt)) + return HTBOTTOMRIGHT; + + // On border line? + RECT rcInner = rc; + InflateRect(&rcInner, -3, -3); + if (!PtInRect(&rcInner, pt) && PtInRect(&rc, pt)) + return HTCAPTION; + + return HTCLIENT; +} + +void CTextEditWindow::DrawGrip(HDC hDC, RECT& rc) +{ + HGDIOBJ hbrOld = SelectObject(hDC, GetStockObject(NULL_BRUSH)); + HPEN hPen = CreatePen(PS_DOT, 1, GetSysColor(COLOR_HIGHLIGHT)); + HGDIOBJ hPenOld = SelectObject(hDC, hPen); + InflateRect(&rc, -1, -1); + Rectangle(hDC, rc.left, rc.top, rc.right, rc.bottom); + InflateRect(&rc, 1, 1); + SelectObject(hDC, hPenOld); + SelectObject(hDC, hbrOld); + DeleteObject(hPen); + + RECT rcGrip; + HBRUSH hbrHighlight = GetSysColorBrush(COLOR_HIGHLIGHT); + + SetRect(&rcGrip, RECT0); + FillRect(hDC, &rcGrip, hbrHighlight); + SetRect(&rcGrip, RECT1); + FillRect(hDC, &rcGrip, hbrHighlight); + SetRect(&rcGrip, RECT2); + FillRect(hDC, &rcGrip, hbrHighlight); + + SetRect(&rcGrip, RECT3); + FillRect(hDC, &rcGrip, hbrHighlight); + SetRect(&rcGrip, RECT4); + FillRect(hDC, &rcGrip, hbrHighlight); + + SetRect(&rcGrip, RECT5); + FillRect(hDC, &rcGrip, hbrHighlight); + SetRect(&rcGrip, RECT6); + FillRect(hDC, &rcGrip, hbrHighlight); + SetRect(&rcGrip, RECT7); + FillRect(hDC, &rcGrip, hbrHighlight); +} + +void CTextEditWindow::FixEditPos(LPCTSTR pszOldText) +{ + CString szText; + GetWindowText(szText); + + RECT rcParent; + ::GetWindowRect(m_hwndParent, &rcParent); + + RECT rc, rcWnd, rcText; + GetWindowRect(&rcWnd); + rcText = rcWnd; + + HDC hDC = GetDC(); + if (hDC) + { + SelectObject(hDC, m_hFontZoomed); + TEXTMETRIC tm; + GetTextMetrics(hDC, &tm); + szText += TEXT("x"); // This is a trick to enable the last newlines + const UINT uFormat = DT_LEFT | DT_TOP | DT_EDITCONTROL | DT_NOPREFIX | DT_NOCLIP | + DT_EXPANDTABS | DT_WORDBREAK; + DrawText(hDC, szText, -1, &rcText, uFormat | DT_CALCRECT); + if (tm.tmDescent > 0) + rcText.bottom += tm.tmDescent; + ReleaseDC(hDC); + } + + UnionRect(&rc, &rcText, &rcWnd); + ::MapWindowPoints(NULL, m_hwndParent, (LPPOINT)&rc, 2); + + rcWnd = rc; + ::GetClientRect(m_hwndParent, &rcParent); + IntersectRect(&rc, &rcParent, &rcWnd); + + ++m_nAppIsMovingOrSizing; + MoveWindow(rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top, FALSE); + --m_nAppIsMovingOrSizing; + + DefWindowProc(WM_HSCROLL, SB_LEFT, 0); + DefWindowProc(WM_VSCROLL, SB_TOP, 0); + + ::InvalidateRect(m_hwndParent, &rc, TRUE); +} + +LRESULT CTextEditWindow::OnChar(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) +{ + if (wParam == VK_TAB) + return 0; // FIXME: Tabs + + CString szText; + GetWindowText(szText); + + LRESULT ret = DefWindowProc(nMsg, wParam, lParam); + FixEditPos(szText); + + return ret; +} + +LRESULT CTextEditWindow::OnKeyDown(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) +{ + if (wParam == VK_ESCAPE) + { + toolsModel.OnCancelDraw(); + return 0; + } + + CString szText; + GetWindowText(szText); + + LRESULT ret = DefWindowProc(nMsg, wParam, lParam); + FixEditPos(szText); + return ret; +} + +LRESULT CTextEditWindow::OnLButtonDown(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) +{ + LRESULT ret = DefWindowProc(nMsg, wParam, lParam); + DefWindowProc(WM_HSCROLL, SB_LEFT, 0); + DefWindowProc(WM_VSCROLL, SB_TOP, 0); + return ret; +} + +LRESULT CTextEditWindow::OnEraseBkGnd(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) +{ + HDC hDC = (HDC)wParam; + if (!toolsModel.IsBackgroundTransparent()) + { + RECT rc; + GetClientRect(&rc); + HBRUSH hbr = CreateSolidBrush(paletteModel.GetBgColor()); + FillRect(hDC, &rc, hbr); + DeleteObject(hbr); + } + SetTextColor(hDC, paletteModel.GetFgColor()); + return TRUE; +} + +LRESULT CTextEditWindow::OnPaint(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) +{ + RECT rc; + GetClientRect(&rc); + + DefWindowProc(nMsg, wParam, lParam); + + HDC hDC = GetDC(); + if (hDC) + { + DrawGrip(hDC, rc); + ReleaseDC(hDC); + } + + return 0; +} + +LRESULT CTextEditWindow::OnNCPaint(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) +{ + RECT rc; + GetWindowRect(&rc); + + HDC hDC = GetDCEx(NULL, DCX_WINDOW | DCX_PARENTCLIP); + if (hDC) + { + OffsetRect(&rc, -rc.left, -rc.top); + DrawGrip(hDC, rc); + ReleaseDC(hDC); + } + return 0; }
+LRESULT CTextEditWindow::OnNCCalcSize(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) +{ + return 0; // No frame. +} + +LRESULT CTextEditWindow::OnNCHitTest(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) +{ + POINT pt = { GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam) }; + RECT rc; + GetWindowRect(&rc); + return DoHitTest(rc, pt); +} + +LRESULT CTextEditWindow::OnSetCursor(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) +{ + UINT nHitTest = LOWORD(lParam); + if (nHitTest == HTCAPTION) + { + SetCursor(LoadCursor(NULL, IDC_SIZEALL)); + return FALSE; + } + return DefWindowProc(nMsg, wParam, lParam); +} + +LRESULT CTextEditWindow::OnMove(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) +{ + LRESULT ret = DefWindowProc(nMsg, wParam, lParam); + + if (m_nAppIsMovingOrSizing == 0) + { + Reposition(); + InvalidateEditRect(); + } + return ret; +} + LRESULT CTextEditWindow::OnSize(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { - RECT clientRect; - GetClientRect(&clientRect); - editControl.MoveWindow(clientRect.left, clientRect.top, RECT_WIDTH(clientRect), RECT_HEIGHT(clientRect), TRUE); + LRESULT ret = DefWindowProc(nMsg, wParam, lParam); + + RECT rc; + GetClientRect(&rc); + SendMessage(EM_SETRECTNP, 0, (LPARAM)&rc); + SendMessage(EM_SETMARGINS, EC_LEFTMARGIN | EC_RIGHTMARGIN, MAKELONG(0, 0)); + + if (m_nAppIsMovingOrSizing == 0) + { + Reposition(); + InvalidateEditRect(); + } + + return ret; +} + +// Hack: Use DECLARE_WND_SUPERCLASS instead! +HWND CTextEditWindow::Create(HWND hwndParent) +{ + m_hwndParent = hwndParent; + + const DWORD style = ES_LEFT | ES_MULTILINE | ES_WANTRETURN | ES_AUTOVSCROLL | + WS_CHILD | WS_THICKFRAME; + m_hWnd = ::CreateWindowEx(0, WC_EDIT, NULL, style, 0, 0, 0, 0, + hwndParent, NULL, hProgInstance, NULL); + if (m_hWnd) + { +#undef SubclassWindow // Don't use this macro + SubclassWindow(m_hWnd); + + UpdateFont(); + + PostMessage(WM_SIZE, 0, 0); + } + + return m_hWnd; +} + +void CTextEditWindow::DoFillBack(HWND hwnd, HDC hDC) +{ + if (toolsModel.IsBackgroundTransparent()) + return; + + RECT rc; + SendMessage(EM_GETRECT, 0, (LPARAM)&rc); + MapWindowPoints(hwnd, (LPPOINT)&rc, 2); + + HBRUSH hbr = CreateSolidBrush(paletteModel.GetBgColor()); + FillRect(hDC, &rc, hbr); + DeleteObject(hbr); +} + +LRESULT CTextEditWindow::OnCreate(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) +{ + UpdateFont(); return 0; }
LRESULT CTextEditWindow::OnClose(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { ShowWindow(SW_HIDE); + if (m_hFont) + { + DeleteObject(m_hFont); + m_hFont = NULL; + } + if (m_hFontZoomed) + { + DeleteObject(m_hFontZoomed); + m_hFontZoomed = NULL; + } return 0; }
-LRESULT CTextEditWindow::OnCommand(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) +void CTextEditWindow::InvalidateEditRect() { - switch(HIWORD(wParam)) - { - case EN_UPDATE: - { - HeapFree(GetProcessHeap(), 0, textToolText); - textToolTextMaxLen = editControl.GetWindowTextLength() + 1; - textToolText = (LPTSTR) HeapAlloc(GetProcessHeap(), HEAP_GENERATE_EXCEPTIONS, sizeof(TCHAR) * textToolTextMaxLen); - editControl.GetWindowText(textToolText, textToolTextMaxLen); - ForceRefreshSelectionContents(); - break; - } - } + RECT rc; + GetWindowRect(&rc); + ::MapWindowPoints(NULL, m_hwndParent, (LPPOINT)&rc, 2); + ::InvalidateRect(m_hwndParent, &rc, TRUE); + + GetClientRect(&rc); + MapWindowPoints(imageArea, (LPPOINT)&rc, 2); + rc.left = UnZoomed(rc.left); + rc.top = UnZoomed(rc.top); + rc.right = UnZoomed(rc.right); + rc.bottom = UnZoomed(rc.bottom); + m_rc = rc; +} + +LRESULT CTextEditWindow::OnPaletteModelColorChanged(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) +{ + UpdateFont(); + return 0; +} + +LRESULT CTextEditWindow::OnToolsModelSettingsChanged(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) +{ + UpdateFont(); + return 0; +} + +LRESULT CTextEditWindow::OnToolsModelZoomChanged(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) +{ + UpdateFont(); + ValidateEditRect(NULL); return 0; }
LRESULT CTextEditWindow::OnToolsModelToolChanged(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { - ShowWindow((wParam == TOOL_TEXT) ? SW_SHOW : SW_HIDE); + if (wParam == TOOL_TEXT) + { + UpdateFont(); + } + else + { + ShowWindow(SW_HIDE); + } return 0; } + +void CTextEditWindow::UpdateFont() +{ + if (m_hFont) + { + DeleteObject(m_hFont); + m_hFont = NULL; + } + if (m_hFontZoomed) + { + DeleteObject(m_hFontZoomed); + m_hFontZoomed = NULL; + } + + LOGFONT lf; + ZeroMemory(&lf, sizeof(lf)); + lf.lfCharSet = DEFAULT_CHARSET; // registrySettings.CharSet; // Ignore + lf.lfWeight = (registrySettings.Bold ? FW_BOLD : FW_NORMAL); + lf.lfItalic = registrySettings.Italic; + lf.lfUnderline = registrySettings.Underline; + lstrcpyn(lf.lfFaceName, registrySettings.strFontName, _countof(lf.lfFaceName)); + + HDC hdc = GetDC(); + if (hdc) + { + INT nFontSize = registrySettings.PointSize; + lf.lfHeight = -MulDiv(nFontSize, GetDeviceCaps(hdc, LOGPIXELSY), 72); + ReleaseDC(hdc); + } + + m_hFont = ::CreateFontIndirect(&lf); + + lf.lfHeight = Zoomed(lf.lfHeight); + m_hFontZoomed = ::CreateFontIndirect(&lf); + + SetWindowFont(m_hWnd, m_hFontZoomed, TRUE); + DefWindowProc(EM_SETMARGINS, EC_LEFTMARGIN | EC_RIGHTMARGIN, MAKELONG(0, 0)); + + FixEditPos(NULL); + + Invalidate(); +} + +LRESULT CTextEditWindow::OnSetSel(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) +{ + LRESULT ret = DefWindowProc(nMsg, wParam, lParam); + DefWindowProc(WM_HSCROLL, SB_LEFT, 0); + DefWindowProc(WM_VSCROLL, SB_TOP, 0); + InvalidateEditRect(); + return ret; +} + +BOOL CTextEditWindow::GetEditRect(LPRECT prc) const +{ + *prc = m_rc; + return TRUE; +} + +void CTextEditWindow::ValidateEditRect(LPCRECT prc OPTIONAL) +{ + if (prc) + m_rc = *prc; + INT x0 = Zoomed(m_rc.left), y0 = Zoomed(m_rc.top); + INT x1 = Zoomed(m_rc.right), y1 = Zoomed(m_rc.bottom); + + ++m_nAppIsMovingOrSizing; + MoveWindow(x0, y0, x1 - x0, y1 - y0, TRUE); + --m_nAppIsMovingOrSizing; +} + +void CTextEditWindow::Reposition() +{ + RECT rc, rcImage; + GetWindowRect(&rc); + + ::MapWindowPoints(NULL, imageArea, (LPPOINT)&rc, 2); + imageArea.GetClientRect(&rcImage); + + if (rc.bottom > rcImage.bottom) + { + rc.top = rcImage.bottom - (rc.bottom - rc.top); + rc.bottom = rcImage.bottom; + } + + if (rc.right > rcImage.right) + { + rc.left = rcImage.right - (rc.right - rc.left); + rc.right = rcImage.right; + } + + if (rc.left < 0) + { + rc.right += -rc.left; + rc.left = 0; + } + + if (rc.top < 0) + { + rc.bottom += -rc.top; + rc.top = 0; + } + + ++m_nAppIsMovingOrSizing; + MoveWindow(rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top, TRUE); + --m_nAppIsMovingOrSizing; +} + +LRESULT CTextEditWindow::OnMouseWheel(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) +{ + return ::SendMessage(GetParent(), nMsg, wParam, lParam); +} diff --git a/base/applications/mspaint/textedit.h b/base/applications/mspaint/textedit.h index 61eac3675a3..a227ce25714 100644 --- a/base/applications/mspaint/textedit.h +++ b/base/applications/mspaint/textedit.h @@ -8,24 +8,73 @@
#pragma once
+#define CX_MINTEXTEDIT 100 +#define CY_MINTEXTEDIT 24 + class CTextEditWindow : public CWindowImpl<CTextEditWindow> { public: - DECLARE_WND_CLASS_EX(_T("TextEdit"), CS_DBLCLKS, COLOR_BTNFACE) + CTextEditWindow(); + + HWND Create(HWND hwndParent); + void DoFillBack(HWND hwnd, HDC hDC); + void FixEditPos(LPCTSTR pszOldText); + void InvalidateEditRect(); + void UpdateFont(); + BOOL GetEditRect(LPRECT prc) const; + void ValidateEditRect(LPCRECT prc OPTIONAL); + HFONT GetFont() const { return m_hFont; }
BEGIN_MSG_MAP(CTextEditWindow) MESSAGE_HANDLER(WM_CREATE, OnCreate) - MESSAGE_HANDLER(WM_SIZE, OnSize) MESSAGE_HANDLER(WM_CLOSE, OnClose) - MESSAGE_HANDLER(WM_COMMAND, OnCommand) MESSAGE_HANDLER(WM_TOOLSMODELTOOLCHANGED, OnToolsModelToolChanged) + MESSAGE_HANDLER(WM_TOOLSMODELSETTINGSCHANGED, OnToolsModelSettingsChanged) + MESSAGE_HANDLER(WM_TOOLSMODELZOOMCHANGED, OnToolsModelZoomChanged) + MESSAGE_HANDLER(WM_PALETTEMODELCOLORCHANGED, OnPaletteModelColorChanged) + MESSAGE_HANDLER(WM_CHAR, OnChar) + MESSAGE_HANDLER(WM_KEYDOWN, OnKeyDown) + MESSAGE_HANDLER(WM_ERASEBKGND, OnEraseBkGnd) + MESSAGE_HANDLER(WM_PAINT, OnPaint) + MESSAGE_HANDLER(WM_NCPAINT, OnNCPaint) + MESSAGE_HANDLER(WM_NCCALCSIZE, OnNCCalcSize); + MESSAGE_HANDLER(WM_NCHITTEST, OnNCHitTest); + MESSAGE_HANDLER(WM_SETCURSOR, OnSetCursor); + MESSAGE_HANDLER(WM_MOVE, OnMove); + MESSAGE_HANDLER(WM_SIZE, OnSize); + MESSAGE_HANDLER(WM_LBUTTONDOWN, OnLButtonDown); + MESSAGE_HANDLER(EM_SETSEL, OnSetSel); + MESSAGE_HANDLER(WM_MOUSEWHEEL, OnMouseWheel); END_MSG_MAP()
- CWindow editControl; - LRESULT OnCreate(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); - LRESULT OnSize(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); LRESULT OnClose(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); - LRESULT OnCommand(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); LRESULT OnToolsModelToolChanged(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); + LRESULT OnToolsModelSettingsChanged(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); + LRESULT OnToolsModelZoomChanged(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); + LRESULT OnPaletteModelColorChanged(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); + LRESULT OnChar(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); + LRESULT OnKeyDown(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); + LRESULT OnLButtonDown(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); + LRESULT OnEraseBkGnd(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); + LRESULT OnPaint(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); + LRESULT OnNCPaint(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); + LRESULT OnNCCalcSize(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); + LRESULT OnNCHitTest(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); + LRESULT OnSetCursor(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); + LRESULT OnMove(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); + LRESULT OnSize(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); + LRESULT OnSetSel(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); + LRESULT OnMouseWheel(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); + +protected: + HWND m_hwndParent; + HFONT m_hFont; + HFONT m_hFontZoomed; + LONG m_nAppIsMovingOrSizing; + RECT m_rc; + + INT DoHitTest(RECT& rc, POINT pt); + void DrawGrip(HDC hDC, RECT& rc); + void Reposition(); }; diff --git a/base/applications/mspaint/toolsmodel.cpp b/base/applications/mspaint/toolsmodel.cpp index bedf12d4e9a..f5725207a1c 100644 --- a/base/applications/mspaint/toolsmodel.cpp +++ b/base/applications/mspaint/toolsmodel.cpp @@ -92,8 +92,17 @@ void ToolsModel::SetActiveTool(TOOLTYPE nActiveTool) case TOOL_RUBBER: case TOOL_COLOR: case TOOL_ZOOM: + break; + case TOOL_TEXT: + if (nActiveTool != TOOL_TEXT) + { + // Finish the text + OnButtonDown(TRUE, -1, -1, TRUE); + OnButtonUp(TRUE, -1, -1); + } break; + default: m_oldActiveTool = m_activeTool; break; @@ -152,6 +161,10 @@ void ToolsModel::NotifyToolChanged() { toolBoxContainer.SendMessage(WM_TOOLSMODELTOOLCHANGED, m_activeTool); toolSettingsWindow.SendMessage(WM_TOOLSMODELTOOLCHANGED, m_activeTool); + + if (fontsDialog.IsWindow()) + fontsDialog.SendMessage(WM_TOOLSMODELTOOLCHANGED, m_activeTool); + textEditWindow.SendMessage(WM_TOOLSMODELTOOLCHANGED, m_activeTool); }
@@ -159,11 +172,15 @@ void ToolsModel::NotifyToolSettingsChanged() { toolSettingsWindow.SendMessage(WM_TOOLSMODELSETTINGSCHANGED); selectionWindow.SendMessage(WM_TOOLSMODELSETTINGSCHANGED); + if (textEditWindow.IsWindow()) + textEditWindow.SendMessage(WM_TOOLSMODELSETTINGSCHANGED); }
void ToolsModel::NotifyZoomChanged() { toolSettingsWindow.SendMessage(WM_TOOLSMODELZOOMCHANGED); + if (textEditWindow.IsWindow()) + textEditWindow.SendMessage(WM_TOOLSMODELZOOMCHANGED); }
void ToolsModel::OnButtonDown(BOOL bLeftButton, LONG x, LONG y, BOOL bDoubleClick) diff --git a/base/applications/mspaint/toolsmodel.h b/base/applications/mspaint/toolsmodel.h index b8a70dce4a7..f6d4496d985 100644 --- a/base/applications/mspaint/toolsmodel.h +++ b/base/applications/mspaint/toolsmodel.h @@ -85,10 +85,6 @@ private:
ToolBase *GetOrCreateTool(TOOLTYPE nTool);
- void NotifyToolChanged(); - void NotifyToolSettingsChanged(); - void NotifyZoomChanged(); - public: ToolsModel(); ~ToolsModel(); @@ -117,4 +113,8 @@ public:
void resetTool(); void selectAll(); + + void NotifyToolChanged(); + void NotifyToolSettingsChanged(); + void NotifyZoomChanged(); }; diff --git a/base/applications/mspaint/winproc.cpp b/base/applications/mspaint/winproc.cpp index 643a914309c..7a739f76cca 100644 --- a/base/applications/mspaint/winproc.cpp +++ b/base/applications/mspaint/winproc.cpp @@ -13,8 +13,6 @@
#include "precomp.h"
-#include "dialogs.h" - /* FUNCTIONS ********************************************************/
BOOL @@ -326,7 +324,7 @@ LRESULT CMainWindow::OnInitMenuPopup(UINT nMsg, WPARAM wParam, LPARAM lParam, BO CheckMenuItem(menu, IDM_VIEWTOOLBOX, CHECKED_IF(toolBoxContainer.IsWindowVisible())); CheckMenuItem(menu, IDM_VIEWCOLORPALETTE, CHECKED_IF(paletteWindow.IsWindowVisible())); CheckMenuItem(menu, IDM_VIEWSTATUSBAR, CHECKED_IF(::IsWindowVisible(hStatusBar))); - CheckMenuItem(menu, IDM_FORMATICONBAR, CHECKED_IF(textEditWindow.IsWindowVisible())); + CheckMenuItem(menu, IDM_FORMATICONBAR, CHECKED_IF(fontsDialog.IsWindowVisible())); EnableMenuItem(menu, IDM_FORMATICONBAR, ENABLED_IF(toolsModel.GetActiveTool() == TOOL_TEXT));
CheckMenuItem(menu, IDM_VIEWSHOWGRID, CHECKED_IF(showGrid)); @@ -522,10 +520,14 @@ LRESULT CMainWindow::OnCommand(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bH break; } case IDM_EDITUNDO: + if (toolsModel.GetActiveTool() == TOOL_TEXT && textEditWindow.IsWindowVisible()) + break; imageModel.Undo(); imageArea.Invalidate(FALSE); break; case IDM_EDITREDO: + if (toolsModel.GetActiveTool() == TOOL_TEXT && textEditWindow.IsWindowVisible()) + break; imageModel.Redo(); imageArea.Invalidate(FALSE); break; @@ -557,6 +559,11 @@ LRESULT CMainWindow::OnCommand(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bH } case IDM_EDITSELECTALL: { + if (toolsModel.GetActiveTool() == TOOL_TEXT && textEditWindow.IsWindowVisible()) + { + textEditWindow.SendMessage(EM_SETSEL, 0, -1); + break; + } HWND hToolbar = FindWindowEx(toolBoxContainer.m_hWnd, NULL, TOOLBARCLASSNAME, NULL); SendMessage(hToolbar, TB_CHECKBUTTON, ID_RECTSEL, MAKELPARAM(TRUE, 0)); toolsModel.selectAll(); @@ -662,7 +669,16 @@ LRESULT CMainWindow::OnCommand(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bH alignChildrenToMainWindow(); break; case IDM_FORMATICONBAR: - textEditWindow.ShowWindow(textEditWindow.IsWindowVisible() ? SW_HIDE : SW_SHOW); + if (toolsModel.GetActiveTool() == TOOL_TEXT) + { + if (!fontsDialog.IsWindow()) + { + fontsDialog.Create(mainWindow); + } + registrySettings.ShowTextTool = !fontsDialog.IsWindowVisible(); + fontsDialog.ShowWindow(registrySettings.ShowTextTool ? SW_SHOW : SW_HIDE); + fontsDialog.SendMessage(DM_REPOSITION, 0, 0); + } break; case IDM_VIEWSHOWGRID: showGrid = !showGrid;