Método IDirectDraw7::SetCooperativeLevel (ddraw.h)
Determina o comportamento de nível superior do aplicativo.
Sintaxe
HRESULT SetCooperativeLevel(
[in] HWND unnamedParam1,
[in] DWORD unnamedParam2
);
Parâmetros
[in] unnamedParam1
Identificador de janela usado para o aplicativo. Defina como o identificador de janela de nível superior do aplicativo de chamada (não é um identificador para janelas filho criadas pela janela de nível superior). Esse parâmetro pode ser NULL quando o sinalizador DDSCL_NORMAL é especificado no parâmetro dwFlags .
[in] unnamedParam2
Esse valor consiste em um ou mais dos seguintes sinalizadores:
DDSCL_ALLOWMODEX
Permite o uso de modos de exibição do Modo X. Esse sinalizador só poderá ser usado se os sinalizadores DDSCL_EXCLUSIVE e DDSCL_FULLSCREEN estiverem presentes.
DDSCL_ALLOWREBOOT
Permite que CTRL+ALT+DEL funcione enquanto estiver no modo exclusivo (tela inteira).
DDSCL_CREATEDEVICEWINDOW
Esse sinalizador tem suporte apenas no Windows 98 e no Windows 2000. Indica que o DirectDraw criará e gerenciará uma janela de dispositivo padrão para este objeto DirectDraw.
DDSCL_EXCLUSIVE
Solicita o nível exclusivo. Esse sinalizador deve ser usado com o sinalizador DDSCL_FULLSCREEN.
DDSCL_FPUPRESERVE
O aplicativo de chamada se preocupa com o estado da FPU e não deseja que o Direct3D o modifique de maneiras visíveis para o aplicativo. Nesse modo, o Direct3D salva e restaura o estado FPU sempre que precisa modificar o estado da FPU.
DDSCL_FPUSETUP
É provável que o aplicativo de chamada mantenha a FPU configurada para o desempenho ideal do Direct3D (precisão única e exceções desabilitadas), portanto, o Direct3D não precisa definir explicitamente a FPU todas as vezes. Esse é o valor padrão.
DDSCL_FULLSCREEN
O proprietário do modo exclusivo é responsável por toda a superfície primária. O GDI pode ser ignorado. Esse sinalizador deve ser usado com o sinalizador DDSCL_EXCLUSIVE.
DDSCL_MULTITHREADED
Solicita o comportamento do DirectDraw multithread-safe. Isso faz com que o Direct3D tome a seção crítica global com mais frequência.
DDSCL_NORMAL
O aplicativo funciona como um aplicativo típico do Windows. Esse sinalizador não pode ser usado com os sinalizadores DDSCL_ALLOWMODEX, DDSCL_EXCLUSIVE ou DDSCL_FULLSCREEN.
DDSCL_NOWINDOWCHANGES
O DirectDraw não tem permissão para minimizar ou restaurar a janela do aplicativo na ativação.
DDSCL_SETDEVICEWINDOW
Esse sinalizador tem suporte apenas no Windows 98 e no Windows 2000. Indica que o parâmetro hWnd é o identificador de janela da janela do dispositivo para este objeto DirectDraw. Esse sinalizador não pode ser usado com o sinalizador DDSCL_SETFOCUSWINDOW.
DDSCL_SETFOCUSWINDOW
Esse sinalizador tem suporte apenas no Windows 98 e no Windows 2000. Indica que o parâmetro hWnd é o identificador de janela da janela de foco para este objeto DirectDraw. Esse sinalizador não pode ser usado com o sinalizador DDSCL_SETDEVICEWINDOW.
Retornar valor
Se o método for bem-sucedido, o valor retornado será DD_OK.
Se falhar, o método poderá retornar um dos seguintes valores de erro:
- DDERR_EXCLUSIVEMODEALREADYSET
- DDERR_HWNDALREADYSET
- DDERR_HWNDSUBCLASSED
- DDERR_INVALIDOBJECT
- DDERR_INVALIDPARAMS
- DDERR_OUTOFMEMORY
Comentários
Esse método deve ser chamado pelo mesmo thread que criou a janela do aplicativo.
Um aplicativo deve definir a DDSCL_EXCLUSIVE ou o sinalizador DDSCL_NORMAL.
O sinalizador DDSCL_EXCLUSIVE deve ser definido para chamar funções que podem afetar negativamente o desempenho de outros aplicativos.
A interação entre esse método e o método IDirectDraw7::SetDisplayMode difere de seus equivalentes IDirectDraw.
Se você usar o MFC (Microsoft Foundation Classes), o identificador de janela passado para esse método deverá identificar a janela de nível superior do aplicativo, não uma janela filho derivada. Para recuperar o identificador de janela de nível superior do aplicativo MFC, você pode usar o seguinte código:
HWND hwndTop = AfxGetMainWnd()->GetSafeHwnd();
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Windows |
Cabeçalho | ddraw.h |
Biblioteca | Ddraw.lib |
DLL | Ddraw.dll |