Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ DirectX截图在全屏游戏中不起作用 我试图用DirectX在C++中进行截屏,它在桌面应用程序和桌面上也很好,但是当我在全屏上玩游戏时,我不能截屏,什么都没保存。 有人知道如何解决这个问题吗 int D3DScreenshot(char* na_C++_Directx_Screenshot - Fatal编程技术网

C++ DirectX截图在全屏游戏中不起作用 我试图用DirectX在C++中进行截屏,它在桌面应用程序和桌面上也很好,但是当我在全屏上玩游戏时,我不能截屏,什么都没保存。 有人知道如何解决这个问题吗 int D3DScreenshot(char* na

C++ DirectX截图在全屏游戏中不起作用 我试图用DirectX在C++中进行截屏,它在桌面应用程序和桌面上也很好,但是当我在全屏上玩游戏时,我不能截屏,什么都没保存。 有人知道如何解决这个问题吗 int D3DScreenshot(char* na,c++,directx,screenshot,C++,Directx,Screenshot,C++ DirectX截图在全屏游戏中不起作用 我试图用DirectX在C++中进行截屏,它在桌面应用程序和桌面上也很好,但是当我在全屏上玩游戏时,我不能截屏,什么都没保存。 有人知道如何解决这个问题吗 int D3DScreenshot(char* name) { int ret; HWND hwnd = GetDesktopWindow(); IDirect3DDevice9 *g_pd3dDevice; D3DPRESENT_PARAMETERS d3dp

C++ DirectX截图在全屏游戏中不起作用 我试图用DirectX在C++中进行截屏,它在桌面应用程序和桌面上也很好,但是当我在全屏上玩游戏时,我不能截屏,什么都没保存。 有人知道如何解决这个问题吗

int D3DScreenshot(char* name)
{
    int ret;

    HWND hwnd = GetDesktopWindow();
    IDirect3DDevice9 *g_pd3dDevice;
    D3DPRESENT_PARAMETERS d3dpp;
    IDirect3D9 *g_pD3D = NULL;
    IDirect3DSurface9* pSurface;

    g_pD3D = Direct3DCreate9(D3D_SDK_VERSION);
    if (g_pD3D == NULL)
        return 0;

    ZeroMemory(&d3dpp, sizeof(d3dpp));

    d3dpp.Windowed = TRUE;
    d3dpp.SwapEffect = D3DSWAPEFFECT_COPY;
    d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;
    d3dpp.BackBufferCount = 1;
    d3dpp.MultiSampleType = D3DMULTISAMPLE_NONE;
    d3dpp.MultiSampleQuality = 0;
    d3dpp.EnableAutoDepthStencil = TRUE;
    d3dpp.AutoDepthStencilFormat = D3DFMT_D16;
    d3dpp.hDeviceWindow = hwnd;
    d3dpp.Flags = D3DPRESENTFLAG_LOCKABLE_BACKBUFFER;
    d3dpp.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT;
    d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT;


    if ((ret = g_pD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hwnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &g_pd3dDevice)) != D3D_OK)
        return 0;

    if ((ret = g_pd3dDevice->CreateOffscreenPlainSurface(GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN), D3DFMT_A8R8G8B8, D3DPOOL_SCRATCH, &pSurface, NULL)) != D3D_OK)
        return 0;

    if ((ret = g_pd3dDevice->GetFrontBufferData(0, pSurface)) != D3D_OK)
        return 0;
    if (( ret = D3DXSaveSurfaceToFile(TEXT(name), D3DXIFF_JPG, pSurface, NULL, NULL)) != D3D_OK)
            return 0;
    g_pD3D->Release();
    pSurface->Release();

    return (0);
}

d3dpp.Windowed=TRUE?如果我将其删除,则不会拍摄任何屏幕截图,它将不再工作:/Direct3D 9全屏是独占的。全屏时的游戏拥有设备的独家所有权,因此任何其他Direct3D 9设备都无法访问。是的,经过一些研究,我现在知道我必须怎么做。为了做一个DLL代理,我必须钩住DirectX