C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 8 - Устанавливаем совместный доступ – SetCooperativeLevel / DirectInput / Microsoft DirectX

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

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

Visual Basic
Visual C++

Visual Basic

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

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

  • DISCL_BACKGROUND - Приложение использует устройство когда имеет фокус ввода
  • DISCL_FOREGROUND - Приложение может использовать устройство даже когда не активно
  • DISCL_EXCLUSIVE - Монопольный доступ к устройству
  • DISCL_NONEXCLUSIVE - Приложение не требует монопольного доступа

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

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_BACKGROUND - Приложение использует устройство когда имеет фокус ввода
  • DISCL_FOREGROUND - Приложение может использовать устройство даже когда не активно
  • DISCL_EXCLUSIVE - Монопольный доступ к устройству
  • DISCL_NONEXCLUSIVE - Приложение не требует монопольного доступа

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

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

DIERR_INVALIDPARAM  
DIERR_NOTINITIALIZED  
E_HANDLE

| |
Автор Каев Артем.
[AD]