// undefine conflicting symbols which were defined in windows.h
#include "wx/msw/winundef.h"
+// Include fixes for MSLU:
+#include "wx/msw/mslu.h"
+
#include "wx/log.h"
class WXDLLEXPORT wxFont;
return PALETTERGB(c.Red(), c.Green(), c.Blue());
}
+inline wxColour wxRGBToColour(COLORREF rgb)
+{
+ return wxColour(GetRValue(rgb), GetGValue(rgb), GetBValue(rgb));
+}
+
inline void wxRGBToColour(wxColour& c, COLORREF rgb)
{
c.Set(GetRValue(rgb), GetGValue(rgb), GetBValue(rgb));
}
+// get the standard colour map for some standard colours - see comment in this
+// function to understand why is it needed and when should it be used
+//
+// it returns a wxCOLORMAP (can't use COLORMAP itself here as comctl32.dll
+// might be not included/available) array of size wxSTD_COLOUR_MAX
+//
+// NB: if you change these colours, update wxBITMAP_STD_COLOURS in the
+// resources as well: it must have the same number of pixels!
+enum wxSTD_COLOUR
+{
+ wxSTD_COL_BTNTEXT,
+ wxSTD_COL_BTNSHADOW,
+ wxSTD_COL_BTNFACE,
+ wxSTD_COL_BTNHIGHLIGHT,
+ wxSTD_COL_MAX,
+};
+
+struct WXDLLEXPORT wxCOLORMAP
+{
+ COLORREF from, to;
+};
+
+// this function is implemented in src/msw/window.cpp
+extern wxCOLORMAP *wxGetStdColourMap();
+
// copy Windows RECT to our wxRect
inline void wxCopyRECTToRect(const RECT& r, wxRect& rect)
{
class ScreenHDC
{
public:
- ScreenHDC() { m_hdc = GetDC(NULL); }
- ~ScreenHDC() { ReleaseDC(NULL, m_hdc); }
- operator HDC() const { return m_hdc; }
+ ScreenHDC() { m_hdc = ::GetDC(NULL); }
+ ~ScreenHDC() { ::ReleaseDC(NULL, m_hdc); }
+
+ operator HDC() const { return m_hdc; }
+
+private:
+ HDC m_hdc;
+};
+
+// the same as ScreenHDC but for memory DCs: creates the HDC in ctor and
+// destroys it in dtor
+class MemoryHDC
+{
+public:
+ MemoryHDC() { m_hdc = ::CreateCompatibleDC(NULL); }
+ ~MemoryHDC() { ::DeleteObject(m_hdc); }
+
+ operator HDC() const { return m_hdc; }
private:
HDC m_hdc;
};
+// a class which selects a GDI object into a DC in its ctor and deselects in
+// dtor
+class SelectInHDC
+{
+public:
+ SelectInHDC(HDC hdc, HGDIOBJ hgdiobj) : m_hdc(hdc)
+ { m_hgdiobj = ::SelectObject(hdc, hgdiobj); }
+
+ ~SelectInHDC() { ::SelectObject(m_hdc, m_hgdiobj); }
+
+ // return true if the object was successfully selected
+ operator bool() const { return m_hgdiobj != 0; }
+
+private:
+ HDC m_hdc;
+ HGDIOBJ m_hgdiobj;
+};
+
// ---------------------------------------------------------------------------
// macros to make casting between WXFOO and FOO a bit easier: the GetFoo()
// returns Foo cast to the Windows type for oruselves, while GetFooOf() takes
#define GetHfontOf(font) ((HFONT)(font).GetHFONT())
#define GetHpalette() ((HPALETTE)GetHPALETTE())
-#define GetHpaletteOf(pal) ((HPALETTE)(pal)->GetHPALETTE())
+#define GetHpaletteOf(pal) ((HPALETTE)(pal).GetHPALETTE())
#define GetHrgn() ((HRGN)GetHRGN())
#define GetHrgnOf(rgn) ((HRGN)(rgn).GetHRGN())