#ifndef _WX_PRIVATE_H_
#define _WX_PRIVATE_H_
+#ifndef STRICT
+ #define STRICT 1
+#endif
+
#include <windows.h>
+#ifdef __WXMICROWIN__
+ // Extra prototypes and symbols not defined by MicroWindows
+ #include "wx/msw/microwin.h"
+#endif
+
// undefine conflicting symbols which were defined in windows.h
#include "wx/msw/winundef.h"
+#include "wx/log.h"
+
class WXDLLEXPORT wxFont;
class WXDLLEXPORT wxWindow;
// this defines a CASTWNDPROC macro which casts a pointer to the type of a
// window proc
-
-#if defined(__GNUWIN32_OLD__) && !defined(__CYGWIN10__)
- #define CASTWNDPROC (long unsigned)
+#if defined(STRICT) || defined(__GNUC__)
+ typedef WNDPROC WndProcCast;
#else
- #if defined(STRICT) || defined(__GNUC__)
- typedef WNDPROC WndProcCast;
- #else
- typedef FARPROC WndProcCast;
- #endif
- #define CASTWNDPROC (WndProcCast)
-#endif // __GNUWIN32_OLD__
+ typedef FARPROC WndProcCast;
+#endif
+
+#define CASTWNDPROC (WndProcCast)
// ---------------------------------------------------------------------------
// some stuff for old Windows versions (FIXME: what does it do here??)
// ---------------------------------------------------------------------------
// a wrapper macro for ZeroMemory()
-#ifdef __WIN32__
+#if defined(__WIN32__) && !defined(__WXMICROWIN__)
#define wxZeroMemory(obj) ::ZeroMemory(&obj, sizeof(obj))
#else
#define wxZeroMemory(obj) memset((void*) & obj, 0, sizeof(obj))
// make conversion from wxColour and COLORREF a bit less painful
inline COLORREF wxColourToRGB(const wxColour& c)
{
- return RGB(c.Red(), c.Green(), c.Blue());
+ return PALETTERGB(c.Red(), c.Green(), c.Blue());
}
inline void wxRGBToColour(wxColour& c, COLORREF rgb)
return (::GetKeyState(VK_CONTROL) & 0x100) != 0;
}
+// wrapper around GetWindowRect() and GetClientRect() APIs doing error checking
+// for Win32
+inline RECT wxGetWindowRect(HWND hwnd)
+{
+ RECT rect;
+#ifdef __WIN16__
+ ::GetWindowRect(hwnd, &rect);
+#else // Win32
+ if ( !::GetWindowRect(hwnd, &rect) )
+ {
+ wxLogLastError(_T("GetWindowRect"));
+ }
+#endif // Win16/32
+
+ return rect;
+}
+
+inline RECT wxGetClientRect(HWND hwnd)
+{
+ RECT rect;
+#ifdef __WIN16__
+ ::GetClientRect(hwnd, &rect);
+#else // Win32
+ if ( !::GetClientRect(hwnd, &rect) )
+ {
+ wxLogLastError(_T("GetClientRect"));
+ }
+#endif // Win16/32
+
+ return rect;
+}
+
// ---------------------------------------------------------------------------
// small helper classes
// ---------------------------------------------------------------------------
#define GetHfont() ((HFONT)GetHFONT())
#define GetHfontOf(font) ((HFONT)(font).GetHFONT())
+#define GetHpalette() ((HPALETTE)GetHPALETTE())
+#define GetHpaletteOf(pal) ((HPALETTE)(pal)->GetHPALETTE())
+
#define GetHrgn() ((HRGN)GetHRGN())
#define GetHrgnOf(rgn) ((HRGN)(rgn).GetHRGN())
// is, for mainly historical reasons, signed)
WXDLLEXPORT extern WXWORD wxGetWindowId(WXHWND hWnd);
+// check if hWnd's WNDPROC is wndProc. Return true if yes, false if they are different
+extern bool wxCheckWindowWndProc(WXHWND hWnd, WXFARPROC wndProc);
+
// Does this window style specify any border?
inline bool wxStyleHasBorder(long style)
{
- return (style & (wxSIMPLE_BORDER | wxRAISED_BORDER |
- wxSUNKEN_BORDER | wxDOUBLE_BORDER)) != 0;
+ return (style & (wxSIMPLE_BORDER | wxRAISED_BORDER |
+ wxSUNKEN_BORDER | wxDOUBLE_BORDER)) != 0;
}
// find the window for HWND which is part of some wxWindow, returns just the