2013-07-01 5 views
0

Поскольку возвращаемое значение функции используется для сообщения об ошибке, как функции возвращают необходимую информацию обратно вызывающему абоненту?Функции Direct3D 9 возвращают значение

Например: IDirect3D9::CreateDevice method

+0

вы можете указать на пример? (Ссылка для MSDN бы) – Mgetz

+0

ссылка MSDN обновленный – zzz

ответ

1

Так что, если вы посмотрите на эту ссылку, вы заметите, что он имеет некоторые параметры, отмеченные Out это важно, потому что это означает, что будет возвращено вызывающему абоненту.

HRESULT CreateDevice(
[in]   UINT Adapter, 
[in]   D3DDEVTYPE DeviceType, 
[in]   HWND hFocusWindow, 
[in]   DWORD BehaviorFlags, 
[in, out]  D3DPRESENT_PARAMETERS *pPresentationParameters, 
[out, retval] IDirect3DDevice9 **ppReturnedDeviceInterface 
); 

В приведенном выше примере (скопировать и вставить из ссылки MSDN), вы заметите параметр ppReturnedDeviceInterface помечается как ** или указатель на указатель, вызывающий абонент будет проходить в адрес их указатель и будет возвращен указатель на этот адрес. Также будет обновлена ​​структура D3DPRESENT_PARAMETERS до pPresentationParameters, как отмечено аннотацией out. Ex:

IDirect3DDevice9 *pDevice = NULL; 

HRESULT hr = pD3D->CreateDevice(
        D3DADAPTER_DEFAULT, 
        D3DDEVTYPE_HAL, 
        hwnd, 
        pPresentationParams, 
        &pDevice); 
if(SUCCEEDED(hr)) 
{ 
    //pDevice should be non null at this point 
} 
+0

Таким образом, вызывающий абонент CreateDevice ( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, HWND, pPresentationParams, & pDevice); , в то время как значение возвращается через D3DPRESENT_PARAMETERS * pPresentationParameters. Я прав? – zzz

+0

На самом деле есть два возвращаемых значения, обновляется «D3DPRESENT_PARAMETERS» (как указано пометкой 'out'), а' pDevice' присваивается указателем на 'IDirect3DDevice9'. Все это, конечно, предполагает, что возвращаемое значение функции - 'S_OK', если нет ... все ставки отключены. – Mgetz

+1

@zzz - это описание возвращаемых значений и выходных параметров. – zdd