diff --git a/include/wx/msw/private/dcdynwrap.h b/include/wx/msw/private/dcdynwrap.h new file mode 100644 index 0000000000..fe41430c30 --- /dev/null +++ b/include/wx/msw/private/dcdynwrap.h @@ -0,0 +1,39 @@ +/////////////////////////////////////////////////////////////////////////////// +// Name: wx/msw/private/dcdynwrap.h +// Purpose: Private dynamically loaded HDC-related functions +// Author: Vadim Zeitlin +// Created: 2016-05-26 (extracted from src/msw/dc.cpp) +// Copyright: (c) 2016 Vadim Zeitlin +// Licence: wxWindows licence +/////////////////////////////////////////////////////////////////////////////// + +#ifndef _WX_MSW_PRIVATE_DCDYNWRAP_H_ +#define _WX_MSW_PRIVATE_DCDYNWRAP_H_ + +#include "wx/msw/wrapwin.h" + +// Namespace for the wrapper functions, hopefully one day we'll be able to get +// rid of all of them and then it will be easy to find all occurrences of their +// use by just searching for this namespace name. +// +// All of the functions in this namespace must work *exactly* like the standard +// functions with the same name and just return an error if dynamically loading +// them failed. +// +// And they're all implemented in src/msw/dc.cpp. +namespace wxDynLoadWrappers +{ + +DWORD GetLayout(HDC hdc); +DWORD SetLayout(HDC hdc, DWORD dwLayout); + +BOOL AlphaBlend(HDC hdcDest, int xDest, int yDest, int wDest, int hDest, + HDC hdcSrc, int xSrc, int ySrc, int wSrc, int hSrc, + BLENDFUNCTION bf); + +BOOL GradientFill(HDC hdc, PTRIVERTEX pVert, ULONG numVert, + PVOID pMesh, ULONG numMesh, ULONG mode); + +} // namespace wxDynLoadWrappers + +#endif // _WX_MSW_PRIVATE_DCDYNWRAP_H_ diff --git a/src/msw/checklst.cpp b/src/msw/checklst.cpp index c47e6c3e09..ec084c3175 100644 --- a/src/msw/checklst.cpp +++ b/src/msw/checklst.cpp @@ -47,6 +47,7 @@ #include "wx/renderer.h" #include "wx/msw/private.h" #include "wx/msw/dc.h" +#include "wx/msw/private/dcdynwrap.h" // ---------------------------------------------------------------------------- // private functions @@ -159,7 +160,7 @@ bool wxCheckListBoxItem::OnDrawItem(wxDC& dc, const wxRect& rc, UINT uState = stat & wxOwnerDrawn::wxODSelected ? wxDSB_SELECTED : wxDSB_NORMAL; // checkmarks should not be mirrored in RTL layout - DWORD oldLayout = ::GetLayout(hdc); + DWORD oldLayout = wxDynLoadWrappers::GetLayout(hdc); if ( oldLayout & LAYOUT_RTL ) ::SetLayout(hdc, oldLayout | LAYOUT_BITMAPORIENTATIONPRESERVED); wxDrawStateBitmap(hdc, hBmpCheck, x, y, uState); diff --git a/src/msw/dc.cpp b/src/msw/dc.cpp index 03f96e6955..acf9cc1f22 100644 --- a/src/msw/dc.cpp +++ b/src/msw/dc.cpp @@ -240,13 +240,6 @@ wxIMPLEMENT_DYNAMIC_CLASS(wxGDIDLLsCleanupModule, wxModule); #endif // USE_DYNAMIC_GDI_FUNCS -// Namespace for the wrapper functions, hopefully one day we'll be able to get -// rid of all of them and then it will be easy to find all occurrences of their -// use by just searching for this namespace name. -// -// All of the functions in this namespace must work *exactly* like the standard -// functions with the same name and just return an error if dynamically loading -// them failed. namespace wxDynLoadWrappers { @@ -317,19 +310,16 @@ BOOL GradientFill(HDC hdc, PTRIVERTEX pVert, ULONG numVert, #elif defined(USE_STATIC_GDI_FUNCS) -inline DWORD GetLayout(HDC hdc) { return ::GetLayout(hdc); } -inline DWORD SetLayout(HDC hdc, DWORD dwLayout) { return ::SetLayout(hdc, dwLayout); } -inline BOOL AlphaBlend(HDC hdcDest, int xDest, int yDest, int wDest, int hDest, HDC hdcSrc, int xSrc, int ySrc, int wSrc, int hSrc, BLENDFUNCTION bf) @@ -339,7 +329,6 @@ BOOL AlphaBlend(HDC hdcDest, int xDest, int yDest, int wDest, int hDest, bf); } -inline BOOL GradientFill(HDC hdc, PTRIVERTEX pVert, ULONG numVert, PVOID pMesh, ULONG numMesh, ULONG mode) {