多显示器的程序,
主要是使用两个函数,一个是系统函数EnumDisplayMonitors,一个是用户定义的回调函数,比如为MonitorEnumProc
流程为,程序调用EnumDisplayMonitors,MonitorEnumProc作为EnumDisplayMonitors的参数,则系统函数会自动调用EnumDisplayMonitors,并将当前所有显示器的参数传递给这个函数。
这样,你就可以得到两个显示器的区域:
如:
......
//其中,this是当前窗口的指针
EnumDisplayMonitors( NULL, NULL, MonitorEnumProc, ( LPARAM )this);
.....
BOOL CALLBACK MonitorEnumProc( HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcMonitor, LPARAM dwData)
{
CMainView* pView;
pView = ( CMainView* )dwData;
if( lprcMonitor->left == 0 && lprcMonitor->top == 0 )
{
//设置主显示器的矩形
pView->SetMainMonitorRectangle( *lprcMonitor );
}
else
{
//设置辅助显示器的矩形
pView->SetSecondaryMonitorRectangle( *lprcMonitor );
}
return TRUE;
}
主要是使用两个函数,一个是系统函数EnumDisplayMonitors,一个是用户定义的回调函数,比如为MonitorEnumProc
流程为,程序调用EnumDisplayMonitors,MonitorEnumProc作为EnumDisplayMonitors的参数,则系统函数会自动调用EnumDisplayMonitors,并将当前所有显示器的参数传递给这个函数。
这样,你就可以得到两个显示器的区域:
如:
......
//其中,this是当前窗口的指针
EnumDisplayMonitors( NULL, NULL, MonitorEnumProc, ( LPARAM )this);
.....
BOOL CALLBACK MonitorEnumProc( HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcMonitor, LPARAM dwData)
{
CMainView* pView;
pView = ( CMainView* )dwData;
if( lprcMonitor->left == 0 && lprcMonitor->top == 0 )
{
//设置主显示器的矩形
pView->SetMainMonitorRectangle( *lprcMonitor );
}
else
{
//设置辅助显示器的矩形
pView->SetSecondaryMonitorRectangle( *lprcMonitor );
}
return TRUE;
}