X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8614c467553e7dd8a5b9984683d73c89730b8ead..486fd225d4942c852b913636bdc81d9a0a27f7d5:/include/wx/msw/private.h diff --git a/include/wx/msw/private.h b/include/wx/msw/private.h index 51e044b022..0f012b1994 100644 --- a/include/wx/msw/private.h +++ b/include/wx/msw/private.h @@ -59,7 +59,7 @@ WXDLLEXPORT_DATA(extern HFONT) wxSTATUS_LINE_FONT; // define things missing from some compilers' headers // --------------------------------------------------------------------------- -#if defined(__GNUWIN32__) && !defined(wxUSE_NORLANDER_HEADERS) +#if defined(__GNUWIN32__) && !wxUSE_NORLANDER_HEADERS #ifndef ZeroMemory inline void ZeroMemory(void *buf, size_t len) { memset(buf, 0, len); } #endif @@ -67,41 +67,17 @@ WXDLLEXPORT_DATA(extern HFONT) wxSTATUS_LINE_FONT; // this defines a CASTWNDPROC macro which casts a pointer to the type of a // window proc -#if defined(__GNUWIN32__) && !defined(wxUSE_NORLANDER_HEADERS) -# define CASTWNDPROC (long unsigned) + +#ifdef __GNUWIN32_OLD__ + #define CASTWNDPROC (long unsigned) #else -# ifdef __BORLANDC__ - -# ifdef __WIN32__ - typedef int (pascal * WndProcCast) (); -# define CASTWNDPROC (WndProcCast) -// # define CASTWNDPROC -# else - typedef int (pascal * WndProcCast) (); -# define CASTWNDPROC (WndProcCast) -# endif - -# else -# if defined (__WIN32__) && defined(STRICT) - typedef long (_stdcall * WndProcCast) (HWND, unsigned int, unsigned int, long); -# define CASTWNDPROC (WndProcCast) -# elif defined(__WIN16__) -# ifdef __BORLANDC__ - typedef int (pascal * WndProcCast) (); -# define CASTWNDPROC (WndProcCast) -# else -# if defined(__VISUALC__) && defined(STRICT) -# define CASTWNDPROC (WNDPROC) -# else - typedef int (PASCAL * WndProcCast) (); -# define CASTWNDPROC (WndProcCast) -# endif -# endif -# else -# define CASTWNDPROC -# endif -# endif -#endif + #if defined(STRICT) || defined(__GNUC__) + typedef WNDPROC WndProcCast; + #else + typedef FARPROC WndProcCast; + #endif + #define CASTWNDPROC (WndProcCast) +#endif // __GNUWIN32_OLD__ // --------------------------------------------------------------------------- // some stuff for old Windows versions (FIXME: what does it do here??) @@ -179,7 +155,8 @@ WXDLLEXPORT_DATA(extern HFONT) wxSTATUS_LINE_FONT; #define DEFAULT_ITEM_HEIGHT 80 // Scale font to get edit control height -#define EDIT_HEIGHT_FROM_CHAR_HEIGHT(cy) (3*(cy)/2) +//#define EDIT_HEIGHT_FROM_CHAR_HEIGHT(cy) (3*(cy)/2) +#define EDIT_HEIGHT_FROM_CHAR_HEIGHT(cy) (cy+8) // Generic subclass proc, for panel item moving/sizing and intercept // EDIT control VK_RETURN messages @@ -213,6 +190,8 @@ extern LONG APIENTRY _EXPORT #define wxZeroMemory(obj) memset((void*) & obj, 0, sizeof(obj)) #endif +#if wxUSE_GUI + #include // make conversion from wxColour and COLORREF a bit less painful @@ -226,6 +205,15 @@ inline void wxRGBToColour(wxColour& c, COLORREF rgb) c.Set(GetRValue(rgb), GetGValue(rgb), GetBValue(rgb)); } +// copy Windows RECT to our wxRect +inline void wxCopyRECTToRect(const RECT& r, wxRect& rect) +{ + rect.y = r.top; + rect.x = r.left; + rect.width = r.right - r.left; + rect.height = r.bottom - r.top; +} + // translations between HIMETRIC units (which OLE likes) and pixels (which are // liked by all the others) - implemented in msw/utilsexc.cpp extern void HIMETRICToPixel(LONG *x, LONG *y); @@ -244,6 +232,17 @@ extern HBITMAP wxInvertMask(HBITMAP hbmpMask, int w = 0, int h = 0); #define GET_Y_LPARAM(lp) ((int)(short)HIWORD(lp)) #endif // GET_X_LPARAM +// get the current state of SHIFT/CTRL keys +inline bool wxIsShiftDown() +{ + return (::GetKeyState(VK_SHIFT) & 0x100) != 0; +} + +inline bool wxIsCtrlDown() +{ + return (::GetKeyState(VK_CONTROL) & 0x100) != 0; +} + // --------------------------------------------------------------------------- // small helper classes // --------------------------------------------------------------------------- @@ -288,15 +287,18 @@ private: #define GetHmenu() ((HMENU)GetHMenu()) #define GetHmenuOf(menu) ((HMENU)menu->GetHMenu()) +#define GetHcursor() ((HCURSOR)GetHCURSOR()) +#define GetHcursorOf(cursor) ((HCURSOR)(cursor).GetHCURSOR()) + +#define GetHfont() ((HFONT)GetHFONT()) +#define GetHfontOf(font) ((HFONT)(font).GetHFONT()) + +#endif // wxUSE_GUI + // --------------------------------------------------------------------------- // global data // --------------------------------------------------------------------------- -#if 0 // where is this?? -// The MakeProcInstance version of the function wxSubclassedGenericControlProc -WXDLLEXPORT_DATA(extern FARPROC) wxGenericControlSubClassProc; -#endif // 0 - WXDLLEXPORT_DATA(extern wxChar*) wxBuffer; WXDLLEXPORT_DATA(extern HINSTANCE) wxhInstance; @@ -314,11 +316,16 @@ WXDLLEXPORT void wxSetInstance(HINSTANCE hInst); #if wxUSE_GUI +// cursor stuff +extern HCURSOR wxGetCurrentBusyCursor(); // from msw/utils.cpp +extern const wxCursor *wxGetGlobalCursor(); // from msw/cursor.cpp + WXDLLEXPORT wxWindow* wxFindWinFromHandle(WXHWND hWnd); WXDLLEXPORT void wxGetCharSize(WXHWND wnd, int *x, int *y, const wxFont *the_font); WXDLLEXPORT void wxFillLogFont(LOGFONT *logFont, const wxFont *font); WXDLLEXPORT wxFont wxCreateFontFromLogFont(const LOGFONT *logFont); +WXDLLEXPORT wxFontEncoding wxGetFontEncFromCharSet(int charset); WXDLLEXPORT void wxSliderEvent(WXHWND control, WXWORD wParam, WXWORD pos); WXDLLEXPORT void wxScrollBarEvent(WXHWND hbar, WXWORD wParam, WXWORD pos);