0

これは私の機能です:

void CreateRenderTarget(HWND, ID2D1HwndRenderTarget*);

それがどのように機能するかがあります:

void D2DRes::CreateRenderTarget(HWND hwnd, ID2D1HwndRenderTarget* pRT)
{
    RECT rc;
    GetClientRect(hwnd,&rc);

    pFactory->CreateHwndRenderTarget(
            D2D1::RenderTargetProperties(),
            D2D1::HwndRenderTargetProperties(
                hwnd,
                D2D1::SizeU(
                    rc.right - rc.left,
                    rc.bottom - rc.top)),
                &pRT);
}

次のように呼び出されます。

pD2DRes->CreateRenderTarget(map.GetHWnd(),map.GetpRT());

CreateRenderTarget() から戻ると、map.pRT は NULL です。どうして?

編集: GetpRT() 関数があります:

ID2D1HwndRenderTarget* MapEditor::GetpRT()
{
    return pRT;
}
4

2 に答える 2

0

これは非常に奇妙なコードです。すべてを値で渡し、関数内の値を変更することを期待しています。

関数に渡されるポインターを変更する場合は、プロトタイプを次のようにする必要があります。

void CreateRenderTarget(HWND, ID2D1HwndRenderTarget*& pRT);

于 2013-04-01T11:47:15.273 に答える