Transfer the application to a second monitor in MFC

I am developing an application in VS2008 VC ++. net

I want to move the application to an additional monitor. Without clicking and dragging the mouse.

Is there any function, such as MoveToMonitor, by pressing a button or shortcut keys. Then he should switch to an additional monitor.

+4
source share
2 answers

You can call GetMonitorInfo and move it to this window.

See here ' MFC Example Multiple Monitor Support Using GetSystemMetrics EnumDisplayMonitors and GetMonitorInfo for more information.

Using the code CMointor is a basic MFC class that allows you to safely use the multiple-monitor API on any Win32 platform. There are three classes in this library: CMonitors represents the collection of monitors currently attached to the system and wraps the EnumDisplayMonitors API function. Collapse Copy Code //CMonitors' interface CMonitor GetMonitor( const int index ) const; int GetCount() const; //returns the monitor closest to the specified item static CMonitor GetNearestMonitor( const LPRECT lprc ); static CMonitor GetNearestMonitor( const POINT pt ); static CMonitor GetNearestMonitor( const CWnd* pWnd ); //is the specificed item visible on any monitor static BOOL IsOnScreen( const POINT pt ); static BOOL IsOnScreen( const CWnd* pWnd ); static BOOL IsOnScreen( const LPRECT lprc ); //returns the rectangle encompassing all monitors static void GetVirtualDesktopRect( LPRECT lprc ); //determines whether the given handle is a valid monitor handle static BOOL IsMonitor( const HMONITOR hMonitor ); static CMonitor GetPrimaryMonitor(); static BOOL AllMonitorsShareDisplayFormat(); static int GetMonitorCount(); CMonitor is a wrapper around an HMONITOR handle (returned from EnumDisplayMonitors) and the GetMonitorInfo function. With CMonitor you can get at the characteristics of a given monitor. Collapse Copy Code //The interface of CMonitor void Attach( const HMONITOR hMonitor ); HMONITOR Detach(); void ClipRectToMonitor( LPRECT lprc, const BOOL UseWorkAreaRect = FALSE ) const; void CenterRectToMonitor( LPRECT lprc, const BOOL UseWorkAreaRect = FALSE ) const; void CenterWindowToMonitor( CWnd* const pWnd, const BOOL UseWorkAreaRect = FALSE ) const; //creates a device context for the monitor - the client is responsible for // DeleteDC HDC CreateDC() const; void GetMonitorRect( LPRECT lprc ) const; //the work area is the monitor rect minus the start bar void GetWorkAreaRect( LPRECT lprc ) const; void GetName( CString& string ) const; int GetBitsPerPixel() const; //determines if the specified item on the monitor BOOL IsOnMonitor( const POINT pt ) const; BOOL IsOnMonitor( const CWnd* pWnd ) const; BOOL IsOnMonitor( const LPRECT lprc ) const; BOOL IsPrimaryMonitor() const; BOOL IsMonitor() const; CMonitorDC is a CDC derived class that represents a monitor specific device context. I haven't really gone to far with this class but it seemed like a logical part of the library. Known Limitations CMonitor and CMonitors rely on the assumption that a monitor handle does not change. This has proved to be a safe assumption empirically but isn't nessecarily a guarantee. 

If you are in window 7, then moving windows between Windows-Arrow monitors

+2
source

You use MoveWindow (or SetWindowPos , although in this case you do not need additional things that it can do) to move the Window to the part of the desktop displayed on the corresponding monitor. You can find this with (among other features) EnumDisplayMonitors , which will display the rectangle associated with each monitor.

+2
source

Source: https://habr.com/ru/post/1305071/


All Articles