#if wxUSE_DISPLAY
+#include "wx/display.h"
+
#ifndef WX_PRECOMP
- #include "wx/msw/missing.h"
#include "wx/dynarray.h"
#include "wx/app.h"
#include "wx/frame.h"
#include "wx/dynload.h"
#include "wx/sysopt.h"
-#include "wx/display.h"
#include "wx/display_impl.h"
+#include "wx/msw/wrapwin.h"
+#include "wx/msw/missing.h"
// define this to use DirectDraw for display mode switching: this is disabled
// by default because ddraw.h is now always available and also it's not really
virtual unsigned GetCount() { return unsigned(m_displays.size()); }
virtual int GetFromPoint(const wxPoint& pt);
- virtual int GetFromWindow(wxWindow *window);
+ virtual int GetFromWindow(const wxWindow *window);
protected:
// ctor checks if the current system supports multimon API and dynamically
// according to MSDN. The version of GetName() we implement for Win95
// returns an empty string.
const wxString name = GetName();
- const wxChar * const deviceName = name.empty() ? NULL : name.c_str();
+ const wxChar * const deviceName = name.empty()
+ ? (const wxChar*)NULL
+ : (const wxChar*)name.c_str();
DEVMODE dm;
dm.dmSize = sizeof(dm);
wxLogNull noLog;
- gs_MonitorFromPoint = (MonitorFromPoint_t)
- dllUser32.GetSymbol(wxT("MonitorFromPoint"));
- if ( !gs_MonitorFromPoint )
- return;
-
- gs_MonitorFromWindow = (MonitorFromWindow_t)
- dllUser32.GetSymbol(wxT("MonitorFromWindow"));
- if ( !gs_MonitorFromWindow )
- return;
-
- gs_GetMonitorInfo = (GetMonitorInfo_t)
- dllUser32.GetSymbolAorW(wxT("GetMonitorInfo"));
- if ( !gs_GetMonitorInfo )
+ if ( (wxDL_INIT_FUNC(gs_, MonitorFromPoint, dllUser32)) == NULL ||
+ (wxDL_INIT_FUNC(gs_, MonitorFromWindow, dllUser32)) == NULL ||
+ (wxDL_INIT_FUNC_AW(gs_, GetMonitorInfo, dllUser32)) == NULL )
return;
ms_supportsMultimon = 1;
MONITOR_DEFAULTTONULL));
}
-int wxDisplayFactoryWin32Base::GetFromWindow(wxWindow *window)
+int wxDisplayFactoryWin32Base::GetFromWindow(const wxWindow *window)
{
return FindDisplayFromHMONITOR(gs_MonitorFromWindow(GetHwndOf(window),
MONITOR_DEFAULTTONULL));
wxLogNull noLog;
wxDynamicLibrary dllUser32(_T("user32.dll"));
- pfnEnumDisplayMonitors = (EnumDisplayMonitors_t)
- dllUser32.GetSymbol(wxT("EnumDisplayMonitors"));
- if ( !pfnEnumDisplayMonitors )
+ if ( (wxDL_INIT_FUNC(pfn, EnumDisplayMonitors, dllUser32)) == NULL )
return;
}
// according to MSDN. The version of GetName() we implement for Win95
// returns an empty string.
const wxString name = GetName();
- const wxChar * const deviceName = name.empty() ? NULL : name.c_str();
+ const wxChar * const deviceName = name.empty()
+ ? (const wxChar*)NULL
+ : (const wxChar*)name.c_str();
DEVMODE dm;
dm.dmSize = sizeof(dm);
wxDynamicLibrary dllUser32(_T("user32.dll"));
if ( dllUser32.IsLoaded() )
{
- pfnChangeDisplaySettingsEx = (ChangeDisplaySettingsEx_t)
- dllUser32.GetSymbolAorW(_T("ChangeDisplaySettingsEx"));
+ wxDL_INIT_FUNC_AW(pfn, ChangeDisplaySettingsEx, dllUser32);
}
//else: huh, no user32.dll??
// do change the mode
switch ( pfnChangeDisplaySettingsEx
(
- GetName(), // display name
- pDevMode, // dev mode or NULL to reset
- NULL, // reserved
+ GetName().wx_str(), // display name
+ pDevMode, // dev mode or NULL to reset
+ NULL, // reserved
flags,
- NULL // pointer to video parameters (not used)
+ NULL // pointer to video parameters (not used)
) )
{
case DISP_CHANGE_SUCCESSFUL:
if ( !m_dllDDraw.IsLoaded() )
return;
- DirectDrawEnumerateEx_t pDDEnumEx = (DirectDrawEnumerateEx_t)
- m_dllDDraw.GetSymbolAorW(_T("DirectDrawEnumerateEx"));
- if ( !pDDEnumEx )
+ DirectDrawEnumerateEx_t
+ wxDL_INIT_FUNC_AW(pfn, DirectDrawEnumerateEx, m_dllDDraw);
+ if ( !pfnDirectDrawEnumerateEx )
return;
// we can't continue without DirectDrawCreate() later, so resolve it right
// now and fail the initialization if it's not available
- m_pfnDirectDrawCreate = (DirectDrawCreate_t)
- m_dllDDraw.GetSymbol(_T("DirectDrawCreate"));
- if ( !m_pfnDirectDrawCreate )
+ if ( !wxDL_INIT_FUNC(m_pfn, DirectDrawCreate, m_dllDDraw) )
return;
- if ( (*pDDEnumEx)(DDEnumExCallback,
- this,
- DDENUM_ATTACHEDSECONDARYDEVICES) != DD_OK )
+ if ( (*pfnDirectDrawEnumerateEx)(DDEnumExCallback,
+ this,
+ DDENUM_ATTACHEDSECONDARYDEVICES) != DD_OK )
{
wxLogLastError(_T("DirectDrawEnumerateEx"));
}