Шаг 8 - Устанавливаем совместный доступ – SetCooperativeLevel

Получив указатель на интерфейс устройства, мы можем установить уровень совместного доступа. Несмотря на то, что DirectInput сам устанавливает уровень доступа по умолчанию, лучше эту функцию все-таки вызвать. Тут есть ряд тонкостей, например при вызове этой функции передается дескриптор окна, который может впоследствии понадобиться при выполнении определенных действий (например, настройка джойстика).

Visual Basic
Visual C++

Visual Basic

object.SetCooperativeLevel(hwnd As Long,  flags As CONST_DISCLFLAGS)

Параметры
object
Объектная переменная типа DirectInputDevice
hwnd
Дескриптор окна связанный с устройством.
flags
Флаг совместного доступа:

Следующие комбинации имеют силу:

DISCL_NONEXCLUSIVE Or DISCL_BACKGROUND		все
DISCL_NONEXCLUSIVE Or DISCL_FOREGROUND		все
DISCL_EXCLUSIVE Or DISCL_BACKGROUND			джойстик
DISCL_EXCLUSIVE Or DISC_FOREGROUND			все

Ошибки
Если создание не успешно, то будет сгенерирована ошибка и код установлен в Err.Number в одно из следующих значений

DIERR_INVALIDPARAM  
DIERR_INVALIDHANDLE

Visual C++

HRESULT SetCooperativeLevel
(
	HWND hwnd,     
	DWORD dwFlags  
);

Параметры
hwnd
Дескриптор окна связанный с устройством.
flags
Флаг совместного доступа:

Приложение должно обязательно определить DISCL_FOREGROUND или DISCL_BACKGROUND и обязательно DISCL_EXCLUSIVE или DISCL_NONEXCLUSIVE.

Возвращаемое значение.
Если вызов успешный функция возвращает DI_OK. Иначе один из следующих кодов ошибки.

DIERR_INVALIDPARAM  
DIERR_NOTINITIALIZED  
E_HANDLE

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 31.05.2002