fix for [ 1020924 ] wx.Display.IsPrimary is wrong

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@30327 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Ryan Norton 2004-11-07 00:48:37 +00:00
parent 4cd1ed991c
commit 24d2b4f5ba
3 changed files with 29 additions and 3 deletions

View File

@ -67,8 +67,8 @@ public:
// name may be empty // name may be empty
virtual wxString GetName() const = 0; virtual wxString GetName() const = 0;
// display 0 is always the primary display // display 0 is usually the primary display
bool IsPrimary() const { return m_index == 0; } virtual bool IsPrimary() const { return m_index == 0; }
// enumerate all video modes supported by this display matching the given // enumerate all video modes supported by this display matching the given

View File

@ -38,6 +38,8 @@ public:
virtual wxVideoMode GetCurrentMode() const; virtual wxVideoMode GetCurrentMode() const;
virtual bool ChangeMode(const wxVideoMode& mode = wxVideoMode()); virtual bool ChangeMode(const wxVideoMode& mode = wxVideoMode());
virtual bool IsPrimary() const;
private: private:
// get the display name to use with EnumDisplaySettings() // get the display name to use with EnumDisplaySettings()
wxString GetNameForEnumSettings() const; wxString GetNameForEnumSettings() const;

View File

@ -1,7 +1,7 @@
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
// Name: display.cpp // Name: display.cpp
// Purpose: MSW Implementation of wxDisplay class // Purpose: MSW Implementation of wxDisplay class
// Author: Royce Mitchell III // Author: Royce Mitchell III, Ryan Norton
// Modified by: VZ (resolutions enumeration/change support, DirectDraw, ...) // Modified by: VZ (resolutions enumeration/change support, DirectDraw, ...)
// Created: 06/21/02 // Created: 06/21/02
// RCS-ID: $Id$ // RCS-ID: $Id$
@ -544,6 +544,30 @@ wxString wxDisplay::GetNameForEnumSettings() const
return name; return name;
} }
// ----------------------------------------------------------------------------
// determine if this is the primary display
// ----------------------------------------------------------------------------
bool wxDisplay::IsPrimary() const
{
wxDisplayInfo& dpyInfo = (*gs_displays)[m_index];
MONITORINFOEX monInfo;
wxZeroMemory(monInfo);
monInfo.cbSize = sizeof(monInfo);
// NB: Cast from MONITORINFOEX* to MONITORINFO* is done because
// Mingw headers - unlike the ones from Microsoft's Platform SDK -
// don't derive the former from the latter in C++ mode and so
// the pointer's type is not converted implicitly.
if ( !::GetMonitorInfo(dpyInfo.m_hmon, (LPMONITORINFO)&monInfo) )
{
wxLogLastError(_T("GetMonitorInfo"));
}
return (monInfo.dwFlags & MONITORINFOF_PRIMARY) == MONITORINFOF_PRIMARY;
}
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// video modes enumeration // video modes enumeration
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------