(搬运工)把D3D画面渲染到桌面!不用创建任何窗口

其实这个很简单,只是创建设备的时候那个hwnd有点不一样!
可能有人就会说,用GetDesktopWindows()获得桌面的句柄不就行了?那就错了!这样会没有效果的!正确的代码如下:

    HWND hWnd   =   FindWindowEx(GetDesktopWindow() ,   0   ,   "  Progman  "   ,   "  Program Manager  "  );
    hWnd  
=   FindWindowEx(hWnd ,   0   ,   "  SHELLDLL_DefView  "   ,   0  );
    hWnd  
=   FindWindowEx(hWnd ,   0   ,   "  SysListView32  "   ,   "  FolderView  "  );
     
//   初始化 D3D 设备 
    InitD3D(hWnd);

是不是很简单!哈哈。

显示的时候,如果想渲染在桌面的一角,则可以这样写:

//  显示在左上角,128×128宽
 RECT rect;
  rect.left = 0;
  rect.right 
= 128;
  rect.top 
= 0;
  rect.bottom 
= 128;
  
// 显示
 
 g_pd3dDevice->Present(0 , &rect , 0 , 0);
       

你可能感兴趣的:((搬运工)把D3D画面渲染到桌面!不用创建任何窗口)