X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/dca0f651782d5c2659203c97b3243f613966998d..5852a1dcbbadb7fd0d5a9d7851aaa67f2370f3cf:/include/wx/msw/private.h diff --git a/include/wx/msw/private.h b/include/wx/msw/private.h index 5a1d2f3fe2..146d2d3a37 100644 --- a/include/wx/msw/private.h +++ b/include/wx/msw/private.h @@ -23,6 +23,10 @@ #include "wx/log.h" +#if wxUSE_GUI + #include "wx/window.h" +#endif // wxUSE_GUI + class WXDLLIMPEXP_FWD_CORE wxFont; class WXDLLIMPEXP_FWD_CORE wxWindow; class WXDLLIMPEXP_FWD_CORE wxWindowBase; @@ -42,13 +46,13 @@ class WXDLLIMPEXP_FWD_CORE wxWindowBase; #if wxUSE_GUI -extern WXDLLEXPORT_DATA(HICON) wxSTD_FRAME_ICON; -extern WXDLLEXPORT_DATA(HICON) wxSTD_MDIPARENTFRAME_ICON; -extern WXDLLEXPORT_DATA(HICON) wxSTD_MDICHILDFRAME_ICON; -extern WXDLLEXPORT_DATA(HICON) wxDEFAULT_FRAME_ICON; -extern WXDLLEXPORT_DATA(HICON) wxDEFAULT_MDIPARENTFRAME_ICON; -extern WXDLLEXPORT_DATA(HICON) wxDEFAULT_MDICHILDFRAME_ICON; -extern WXDLLEXPORT_DATA(HFONT) wxSTATUS_LINE_FONT; +extern WXDLLIMPEXP_DATA_CORE(HICON) wxSTD_FRAME_ICON; +extern WXDLLIMPEXP_DATA_CORE(HICON) wxSTD_MDIPARENTFRAME_ICON; +extern WXDLLIMPEXP_DATA_CORE(HICON) wxSTD_MDICHILDFRAME_ICON; +extern WXDLLIMPEXP_DATA_CORE(HICON) wxDEFAULT_FRAME_ICON; +extern WXDLLIMPEXP_DATA_CORE(HICON) wxDEFAULT_MDIPARENTFRAME_ICON; +extern WXDLLIMPEXP_DATA_CORE(HICON) wxDEFAULT_MDICHILDFRAME_ICON; +extern WXDLLIMPEXP_DATA_CORE(HFONT) wxSTATUS_LINE_FONT; #endif // wxUSE_GUI @@ -251,7 +255,7 @@ enum wxSTD_COLOUR wxSTD_COL_MAX }; -struct WXDLLEXPORT wxCOLORMAP +struct WXDLLIMPEXP_CORE wxCOLORMAP { COLORREF from, to; }; @@ -597,7 +601,7 @@ private: HDCMapModeChanger wxMAKE_UNIQUE_NAME(wxHDCMapModeChanger)(hdc, mm) #endif // __WXWINCE__/!__WXWINCE__ -// smart buffeer using GlobalAlloc/GlobalFree() +// smart pointer using GlobalAlloc/GlobalFree() class GlobalPtr { public: @@ -643,7 +647,10 @@ public: void Init(HGLOBAL hGlobal) { m_hGlobal = hGlobal; - m_ptr = ::GlobalLock(hGlobal); + + // NB: GlobalLock() is a macro, not a function, hence don't use the + // global scope operator with it (and neither with GlobalUnlock()) + m_ptr = GlobalLock(hGlobal); if ( !m_ptr ) wxLogLastError(_T("GlobalLock")); } @@ -656,7 +663,7 @@ public: ~GlobalPtrLock() { - if ( m_hGlobal && !::GlobalUnlock(m_hGlobal) ) + if ( m_hGlobal && !GlobalUnlock(m_hGlobal) ) { #ifdef __WXDEBUG__ // this might happen simply because the block became unlocked @@ -865,30 +872,30 @@ WXDLLIMPEXP_BASE wxWinVersion wxGetWinVersion(); extern HCURSOR wxGetCurrentBusyCursor(); // from msw/utils.cpp extern const wxCursor *wxGetGlobalCursor(); // from msw/cursor.cpp -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); +WXDLLIMPEXP_CORE void wxGetCharSize(WXHWND wnd, int *x, int *y, const wxFont& the_font); +WXDLLIMPEXP_CORE void wxFillLogFont(LOGFONT *logFont, const wxFont *font); +WXDLLIMPEXP_CORE wxFont wxCreateFontFromLogFont(const LOGFONT *logFont); +WXDLLIMPEXP_CORE wxFontEncoding wxGetFontEncFromCharSet(int charset); -WXDLLEXPORT void wxSliderEvent(WXHWND control, WXWORD wParam, WXWORD pos); -WXDLLEXPORT void wxScrollBarEvent(WXHWND hbar, WXWORD wParam, WXWORD pos); +WXDLLIMPEXP_CORE void wxSliderEvent(WXHWND control, WXWORD wParam, WXWORD pos); +WXDLLIMPEXP_CORE void wxScrollBarEvent(WXHWND hbar, WXWORD wParam, WXWORD pos); // Find maximum size of window/rectangle -extern WXDLLEXPORT void wxFindMaxSize(WXHWND hwnd, RECT *rect); +extern WXDLLIMPEXP_CORE void wxFindMaxSize(WXHWND hwnd, RECT *rect); // Safely get the window text (i.e. without using fixed size buffer) -extern WXDLLEXPORT wxString wxGetWindowText(WXHWND hWnd); +extern WXDLLIMPEXP_CORE wxString wxGetWindowText(WXHWND hWnd); // get the window class name -extern WXDLLEXPORT wxString wxGetWindowClass(WXHWND hWnd); +extern WXDLLIMPEXP_CORE wxString wxGetWindowClass(WXHWND hWnd); // get the window id (should be unsigned, hence this is not wxWindowID which // is, for mainly historical reasons, signed) -extern WXDLLEXPORT int wxGetWindowId(WXHWND hWnd); +extern WXDLLIMPEXP_CORE int wxGetWindowId(WXHWND hWnd); // check if hWnd's WNDPROC is wndProc. Return true if yes, false if they are // different -extern WXDLLEXPORT bool wxCheckWindowWndProc(WXHWND hWnd, WXFARPROC wndProc); +extern WXDLLIMPEXP_CORE bool wxCheckWindowWndProc(WXHWND hWnd, WXFARPROC wndProc); // Does this window style specify any border? inline bool wxStyleHasBorder(long style) @@ -897,18 +904,33 @@ inline bool wxStyleHasBorder(long style) wxSUNKEN_BORDER | wxDOUBLE_BORDER)) != 0; } +inline long wxGetWindowExStyle(const wxWindowMSW *win) +{ + return ::GetWindowLong(GetHwndOf(win), GWL_EXSTYLE); +} + +inline bool wxHasWindowExStyle(const wxWindowMSW *win, long style) +{ + return (wxGetWindowExStyle(win) & style) != 0; +} + +inline long wxSetWindowExStyle(const wxWindowMSW *win, long style) +{ + return ::SetWindowLong(GetHwndOf(win), GWL_EXSTYLE, style); +} + // ---------------------------------------------------------------------------- // functions mapping HWND to wxWindow // ---------------------------------------------------------------------------- // this function simply checks whether the given hwnd corresponds to a wxWindow // and returns either that window if it does or NULL otherwise -extern WXDLLEXPORT wxWindow* wxFindWinFromHandle(HWND hwnd); +extern WXDLLIMPEXP_CORE wxWindow* wxFindWinFromHandle(HWND hwnd); // without STRICT WXHWND is the same as HWND anyhow inline wxWindow* wxFindWinFromHandle(WXHWND hWnd) { - return wxFindWinFromHandle(wx_static_cast(HWND, hWnd)); + return wxFindWinFromHandle(static_cast(hWnd)); } // find the window for HWND which is part of some wxWindow, i.e. unlike @@ -916,13 +938,13 @@ inline wxWindow* wxFindWinFromHandle(WXHWND hWnd) // wxWindow. // // returns the wxWindow corresponding to the given HWND or NULL. -extern WXDLLEXPORT wxWindow *wxGetWindowFromHWND(WXHWND hwnd); +extern WXDLLIMPEXP_CORE wxWindow *wxGetWindowFromHWND(WXHWND hwnd); // Get the size of an icon -extern WXDLLEXPORT wxSize wxGetHiconSize(HICON hicon); +extern WXDLLIMPEXP_CORE 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); +WXDLLIMPEXP_CORE 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)