D3D实现双屏显示功能

主要是要注意设置第一屏和第二个屏幕的坐标。

 

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);
    
   }
   
   
  }      
 }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值