X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8704b36653dc76ed7b6743642fb2925ffc5789d7..61581d48be4b9b8818d5d743dc12c5e1ca2afd0e:/include/wx/msw/private.h diff --git a/include/wx/msw/private.h b/include/wx/msw/private.h index 86cc595d89..f015082b7e 100644 --- a/include/wx/msw/private.h +++ b/include/wx/msw/private.h @@ -28,6 +28,7 @@ class WXDLLEXPORT wxFont; class WXDLLEXPORT wxWindow; +class WXDLLEXPORT wxWindowBase; // --------------------------------------------------------------------------- // private constants @@ -439,16 +440,53 @@ private: HGDIOBJ m_gdiobj; }; -// a class for temporary bitmaps -class CompatibleBitmap : private AutoGDIObject +// TODO: all this asks for using a AutoHandler template... + +// a class for temporary pens +class AutoHBRUSH : private AutoGDIObject +{ +public: + AutoHBRUSH(COLORREF col) + : AutoGDIObject(::CreateSolidBrush(col)) { } + + operator HBRUSH() const { return (HBRUSH)GetObject(); } +}; + +// a class for temporary pens +class AutoHPEN : private AutoGDIObject +{ +public: + AutoHPEN(COLORREF col) + : AutoGDIObject(::CreatePen(PS_SOLID, 0, col)) { } + + operator HPEN() const { return (HPEN)GetObject(); } +}; + +// classes for temporary bitmaps +class AutoHBITMAP : private AutoGDIObject +{ +public: + AutoHBITMAP(HBITMAP hbmp) : AutoGDIObject(hbmp) { } + + operator HBITMAP() const { return (HBITMAP)GetObject(); } +}; + +class CompatibleBitmap : public AutoHBITMAP { public: CompatibleBitmap(HDC hdc, int w, int h) - : AutoGDIObject(::CreateCompatibleBitmap(hdc, w, h)) + : AutoHBITMAP(::CreateCompatibleBitmap(hdc, w, h)) { } +}; - operator HBITMAP() const { return (HBITMAP)GetObject(); } +class MonoBitmap : public AutoHBITMAP +{ +public: + MonoBitmap(int w, int h) + : AutoHBITMAP(::CreateBitmap(w, h, 1, 1, 0)) + { + } }; // class automatically destroys the region object @@ -701,6 +739,9 @@ inline bool wxStyleHasBorder(long style) wxSUNKEN_BORDER | wxDOUBLE_BORDER)) != 0; } +// Deferred window moving +bool wxMoveWindowDeferred(HDWP& hdwp, wxWindowBase* win, HWND hWnd, int x, int y, int width, int height); + // ---------------------------------------------------------------------------- // functions mapping HWND to wxWindow // ---------------------------------------------------------------------------- @@ -722,6 +763,14 @@ extern WXDLLEXPORT wxSize wxGetHiconSize(HICON hicon); // Lines are drawn differently for WinCE and regular WIN32 WXDLLEXPORT void wxDrawLine(HDC hdc, int x1, int y1, int x2, int y2); +// fill the client rect of the given window on the provided dc using this brush +inline void wxFillRect(HWND hwnd, HDC hdc, HBRUSH hbr) +{ + RECT rc; + ::GetClientRect(hwnd, &rc); + ::FillRect(hdc, &rc, hbr); +} + // ---------------------------------------------------------------------------- // 32/64 bit helpers // ----------------------------------------------------------------------------