主要是要注意设置第一屏和第二个屏幕的坐标。
void CMainFrame::OnD3dBegin()
{
int nMonitorCount = CMonitors::GetMonitorCount();
CMonitor monitor;
CMonitors monitors;
CString name,str;
CRect rect,rt;
if(1 == nMonitorCount)
{
CRect rectPrimary;
CMonitor monitor = CMonitors::GetPrimaryMonitor();
monitor.GetWorkAreaRect(&rectPrimary);
/* m_wndD3D.CreateEx(
0, AfxRegisterWndClass(0,NULL,NULL,NULL),
"Direct3D窗口", WS_POPUP | WS_CAPTION | WS_VISIBLE,
CRect(rectPrimary.left,rectPrimary.top,rectPrimary.right,rectPrimary.bottom), this, 0);*/
m_wndD3D.CreateEx(
0, AfxRegisterWndClass(0,NULL,NULL,NULL),
"Direct3DOne窗口", WS_POPUP | WS_CAPTION | WS_VISIBLE | WS_SYSMENU ,
CRect(rectPrimary.left,rectPrimary.top,rectPrimary.right,rectPrimary.bottom), this, 0);
char szFilen[64];
sprintf( szFilen, "image/yuv_0030.yuv" );
m_wndD3D.Play(szFilen);
}
else if(2 == nMonitorCount)
{
// CRect DesktopRect;
// CMonitors::GetVirtualDesktopRect( &DesktopRect );
for ( int i = 0; i < monitors.GetCount(); i++ )
{
monitor = monitors.GetMonitor( i );
monitor.GetWorkAreaRect(&rect);
monitor.GetMonitorRect(&rt);
monitor.GetName(name);
str.Format("显示器名称(%d):%s/n%d,%d,%d,%d=WorkArea/n%d,%d,%d,%d=MonitorRect",
i,name,
rect.left,rect.top,rect.right,rect.bottom,
rt.left,rt.top,rt.right,rt.bottom);
//::AfxMessageBox(str);
/* //判断是不是主显示器
if(monitor.IsPrimaryMonitor())
{
m_wndD3D.CreateEx(
0, AfxRegisterWndClass(0,NULL,NULL,NULL),
"Direct3DOne窗口", WS_POPUP | WS_CAPTION | WS_VISIBLE,
CRect(rect.left,rect.top,rect.right,rect.bottom), this, 0);
}
else
{
m_wndD3DDouble.CreateEx(
0, AfxRegisterWndClass(0,NULL,NULL,NULL),
"Direct3DTwo窗口", WS_POPUP | WS_CAPTION | WS_VISIBLE,
CRect(rect.left,rect.top,rect.right,rect.bottom), this, 0);
}*/
if(0 == i)
{
m_wndD3D.CreateEx(
0, AfxRegisterWndClass(0,NULL,NULL,NULL),
"Direct3DOne窗口", WS_POPUP | WS_CAPTION | WS_VISIBLE | WS_SYSMENU ,
CRect(rect.left,rect.top,rect.right,rect.bottom), this, 0);
char szFilen[64];
sprintf( szFilen, "image/yuv_0030.yuv" );
m_wndD3D.Play(szFilen);
}
if(1 == i)
{
m_wndD3DDouble.CreateEx(
0, AfxRegisterWndClass(0,NULL,NULL,NULL),
"Direct3DTwo窗口", WS_POPUP | WS_CAPTION | WS_VISIBLE | WS_SYSMENU ,
CRect(rect.left,rect.top,rect.right,rect.bottom), this, 0);
char szFilen[64];
sprintf( szFilen, "image/test.yuv" );
m_wndD3DDouble.Play(szFilen);
}
}
}
}