这是截桌面的,可是俺把当前窗口的hWnd传给函数,还是截桌面的,很郁闷!
怎么截当前窗口的屏呢?
急用!
BOOL InitD3d(HWND hWnd)
{
D3DDISPLAYMODE ddm;
D3DPRESENT_PARAMETERS d3dpp; if((g_pD3D=Direct3DCreate8(D3D_SDK_VERSION))==NULL)
{
ErrorMessage("Unable to Create Direct3D ");
return 0;
} if(FAILED(g_pD3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT,&ddm)))
{
ErrorMessage("Unable to Get Adapter Display Mode");
return 0;
} ZeroMemory(&d3dpp,sizeof(D3DPRESENT_PARAMETERS)); d3dpp.Windowed=WINDOW_MODE;
d3dpp.Flags=D3DPRESENTFLAG_LOCKABLE_BACKBUFFER;
d3dpp.BackBufferFormat=ddm.Format;
d3dpp.BackBufferHeight=nDisplayHeight=gScreenRect.bottom =ddm.Height;
d3dpp.BackBufferWidth=nDisplayWidth=gScreenRect.right =ddm.Width;
d3dpp.MultiSampleType=D3DMULTISAMPLE_NONE;
d3dpp.SwapEffect=D3DSWAPEFFECT_DISCARD;
d3dpp.hDeviceWindow=hWnd;
d3dpp.FullScreen_PresentationInterval=D3DPRESENT_INTERVAL_DEFAULT;
d3dpp.FullScreen_RefreshRateInHz=D3DPRESENT_RATE_DEFAULT; if(FAILED(g_pD3D->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,hWnd,D3DCREATE_SOFTWARE_VERTEXPROCESSING ,&d3dpp,&g_pd3dDevice)))
{
ErrorMessage("Unable to Create Device");
return 0;
} if(FAILED(g_pd3dDevice->CreateImageSurface(ddm.Width,ddm.Height,D3DFMT_A8R8G8B8,&g_pSurface)))
{
ErrorMessage("Unable to Create Surface");
return 0;
} return 1;
}BOOL CaptureTheScreenShot(HWND hWnd)
{
.............................................
InitD3d(hWnd);

SetCursor(LoadCursor(NULL,IDC_WAIT)); g_pd3dDevice->GetFrontBuffer(g_pSurface);
D3DXSaveSurfaceToFile(szFileName,D3DXIFF_BMP,g_pSurface,NULL,NULL); //Save to File
g_pd3dDevice->GetFrontBuffer(g_pSurface);
D3DXSaveSurfaceToFile(szFileName,D3DXIFF_BMP,g_pSurface,NULL,NULL); //Save to File
.......................
}