怎么能够快速的切换屏幕的分辨率

如何能够快速的切换屏幕的分辨率
我现在的程序从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)