From: Vadim Zeitlin Date: Sun, 22 May 2005 13:59:45 +0000 (+0000) Subject: added AutoHPEN, AutoHBRUSH, AutoHBITMAP; refactored CompatibleBitmap into the last... X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/cf831d8e2b6c7a158f0974ad61ee829f1274f174?hp=0db776b480624917e28750ad9049c742349463b5 added AutoHPEN, AutoHBRUSH, AutoHBITMAP; refactored CompatibleBitmap into the last one to be able to add MonoBitmap as well git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@34245 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/include/wx/msw/private.h b/include/wx/msw/private.h index be6d9305ad..f015082b7e 100644 --- a/include/wx/msw/private.h +++ b/include/wx/msw/private.h @@ -440,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