怎么能够快速的切换屏幕的分辨率
如何能够快速的切换屏幕的分辨率
我现在的程序从1024*768分辨率到640*480分辨率的切换非常慢
class CVideoMode
{
public:
//Constructors / Destructors
CVideoMode();
CVideoMode(DWORD BitsPerPixel, DWORD Width, DWORD Height, DWORD Frequency);
CVideoMode(const CVideoMode& mode);
CVideoMode& operator=(const CVideoMode& mode);
//Public variables
DWORD m_dwBitsPerPixel;
DWORD m_dwWidth;
DWORD m_dwHeight;
DWORD m_dwFrequency;
};
//Defintion of the array which contains all available video modes
typedef CArray <CVideoMode, CVideoMode&> CAvailableVideoModes;
//Class which contains the actual functions the developer can call
//All functions are static as the class does not contain any instance
//data. Functions which return a LONG use the same return values as from
//the SDK function ChangeDisplaySettings()
class CVideoModes
{
public:
static BOOL GetCurrentVideoMode(CVideoMode& mode);
static BOOL GetAvailableVideoModes(CAvailableVideoModes& modes);
static LONG ChangeVideoModePermanently(const CVideoMode& mode);
static LONG ChangeVideoModeTemporarily(const CVideoMode& mode);
static LONG CanChangeVideoMode(const CVideoMode& mode);
static LONG RevertVideoModeToDefault();
protected:
static void ReportChangeVideoErrorValue(LONG lError);
static void CreateCompatibleDEVMODE(DEVMODE* pdm, DWORD BitsPerPixel, DWORD Width, DWORD Height, DWORD Frequency);
};
//////////////////////////////// Implementation ///////////////////////////////
CVideoMode::CVideoMode()
{
m_dwBitsPerPixel = 0;
m_dwWidth = 0;
m_dwHeight = 0;
m_dwFrequency = 0;
}
CVideoMode::CVideoMode(DWORD BitsPerPixel, DWORD Width, DWORD Height, DWORD Frequency)
{
m_dwBitsPerPixel = BitsPerPixel;
m_dwWidth = Width;
m_dwHeight = Height;
m_dwFrequency = Frequency;
}
CVideoMode::CVideoMode(const CVideoMode& mode)
{
*this = mode;
}
CVideoMode& CVideoMode::operator=(const CVideoMode& mode)
{
m_dwBitsPerPixel = mode.m_dwBitsPerPixel;
m_dwWidth = mode.m_dwWidth;
m_dwHeight = mode.m_dwHeight;
m_dwFrequency = mode.m_dwFrequency;
return *this;
}
BOOL CVideoModes::GetCurrentVideoMode(CVideoMode& mode)
我现在的程序从1024*768分辨率到640*480分辨率的切换非常慢
class CVideoMode
{
public:
//Constructors / Destructors
CVideoMode();
CVideoMode(DWORD BitsPerPixel, DWORD Width, DWORD Height, DWORD Frequency);
CVideoMode(const CVideoMode& mode);
CVideoMode& operator=(const CVideoMode& mode);
//Public variables
DWORD m_dwBitsPerPixel;
DWORD m_dwWidth;
DWORD m_dwHeight;
DWORD m_dwFrequency;
};
//Defintion of the array which contains all available video modes
typedef CArray <CVideoMode, CVideoMode&> CAvailableVideoModes;
//Class which contains the actual functions the developer can call
//All functions are static as the class does not contain any instance
//data. Functions which return a LONG use the same return values as from
//the SDK function ChangeDisplaySettings()
class CVideoModes
{
public:
static BOOL GetCurrentVideoMode(CVideoMode& mode);
static BOOL GetAvailableVideoModes(CAvailableVideoModes& modes);
static LONG ChangeVideoModePermanently(const CVideoMode& mode);
static LONG ChangeVideoModeTemporarily(const CVideoMode& mode);
static LONG CanChangeVideoMode(const CVideoMode& mode);
static LONG RevertVideoModeToDefault();
protected:
static void ReportChangeVideoErrorValue(LONG lError);
static void CreateCompatibleDEVMODE(DEVMODE* pdm, DWORD BitsPerPixel, DWORD Width, DWORD Height, DWORD Frequency);
};
//////////////////////////////// Implementation ///////////////////////////////
CVideoMode::CVideoMode()
{
m_dwBitsPerPixel = 0;
m_dwWidth = 0;
m_dwHeight = 0;
m_dwFrequency = 0;
}
CVideoMode::CVideoMode(DWORD BitsPerPixel, DWORD Width, DWORD Height, DWORD Frequency)
{
m_dwBitsPerPixel = BitsPerPixel;
m_dwWidth = Width;
m_dwHeight = Height;
m_dwFrequency = Frequency;
}
CVideoMode::CVideoMode(const CVideoMode& mode)
{
*this = mode;
}
CVideoMode& CVideoMode::operator=(const CVideoMode& mode)
{
m_dwBitsPerPixel = mode.m_dwBitsPerPixel;
m_dwWidth = mode.m_dwWidth;
m_dwHeight = mode.m_dwHeight;
m_dwFrequency = mode.m_dwFrequency;
return *this;
}
BOOL CVideoModes::GetCurrentVideoMode(CVideoMode& mode)