visual basic visual basic visual basic  
  Ozon.ru vb
Visual Basic Visual Basic Visual Basic
main Новости статьи download магазин помощь
 
vb

меню

vb
Новости
Основы VB
DirectX & VB
      Основы Dx
           Direct3D
           DirectDraw
           DirectInput
           DirectSound
           DirectMusic
           DirectPlay
           Others
      Графика с Dx
      Разное
Разные статьи
Download
Магазин
Ссылки
Помощь
 
Озон
 
     
Урок 1: Работа с клавиатурой

    Сегодня я раскажу о работе с клавиатурой, ведь без клавиатуры не бойтись в играх. Приступим к реалзации.

    1. Создайте новый проект.
    2. Поставим на форму таймер (name=tmrKey, interval=10, enabled=false) и ListBox (name=lstkeys) растянув на всю форму.
    3. Подключим библиотеку DirectX 8 (Project-> References...-> DirectX 8 for Visual Basic Type Library), если ее там нет, то установите DirectX 8 или выше.
    4. Сначало объявим переменные, необходимые для работы.

        Dim dx As New DirectX8 'объект DirectX
        Dim di As DirectInput8 'объект DirectInput
        Dim diDEV As DirectInputDevice8 'устройство DirectInput
        Dim diState As DIKEYBOARDSTATE
        Dim iKeyCounter As Integer
        Dim aKeys(255) As String

Теперь начинаем заполнять Form_Load Создаём объект DirectInput


        Set di = dx.DirectInputCreate()

Устанавливаем обработчик ошибок

        If Err.Number <> 0 Then
            MsgBox "Ошибка инициализации DirectInput", vbApplicationModal
            End
        End If

Создаем устройтсво DirectInput на основе системной клавиатуры(GUID_SysKeyboard)

        Set diDEV = di.CreateDevice("GUID_SysKeyboard")

Задаём формат данных

        diDEV.SetCommonDataFormat DIFORMAT_KEYBOARD

Теперь укажем где использовать DirectInput и установим некоторые параметры для работы с клавиатурой

        diDEV.SetCooperativeLevel Me.hWnd, DISCL_BACKGROUND Or DISCL_NONEXCLUSIVE

Показываем форму

        me.show

Активируем DirectInput !!!! Не забудьте поставить diDEV.UnAcquire в form_unload для избежания ошибок при последующем запуске DirectInput

        diDEV.Acquire

Включаем Timer

         tmrKey.Enabled = True

На этом Заканчивается Sub Form_Load Вод код события Timer(sub tmrKeys_timer)

        Private Sub tmrKey_Timer()
            lstKeys.Clear 'очистка списка
             diDEV.GetDeviceStateKeyboard diState 'узнаем текущий статус клавиатуры
            For iKeyCounter = 0 To 255 'Проверка всевозможных клавиш
                If diState.Key(iKeyCounter) <> 0 Then
'Если клавиша нажата
                    lstKeys.AddItem KeyNames(iKeyCounter)
'добавляем её в список
                End If
            Next
            DoEvents
        End Sub


Для распознавание какая клавиша нажата создадим функции

            Function KeyNames(iNum As Integer) As String
                aKeys(DIK_ESCAPE) = "ESCAPE"
                aKeys(DIK_1) = "1": aKeys(DIK_2) = "2" : aKeys(DIK_3) = "3"
                aKeys(DIK_4) = "4": aKeys(DIK_5) = "5": aKeys(DIK_6) = "6"
                aKeys(DIK_7) = "7": aKeys(DIK_8) = "8": aKeys(DIK_9) = "9"
                aKeys(DIK_0) = "0"
                aKeys(DIK_MINUS) = "-" ' - на главной клавиатуре
                aKeys(DIK_EQUALS) = "="
                aKeys(DIK_BACK) = "Backspace"
                aKeys(DIK_TAB) = "TAB"
                aKeys(DIK_Q) = "Q": aKeys(DIK_W) = "W": aKeys(DIK_E) = "E"
                aKeys(DIK_R) = "R": aKeys(DIK_T) = "T": aKeys(DIK_Y) = "Y"
                aKeys(DIK_U) = "U": aKeys(DIK_I) = "I": aKeys(DIK_O) = "O"
                aKeys(DIK_P) = "P"
                aKeys(DIK_LBRACKET) = "BRACKET" 'Левый
                aKeys(DIK_RBRACKET) = "BRACKET" 'Правый
                aKeys(DIK_RETURN) = "Enter" ' На главной клавиатуре
                aKeys(DIK_LCONTROL) = "CTRL" 'Левый
                aKeys(DIK_A) = "A": aKeys(DIK_S) = "S": aKeys(DIK_D) = "D"
                aKeys(DIK_F) = "F": aKeys(DIK_G) = "G": aKeys(DIK_H) = "H"
                aKeys(DIK_J) = "J": aKeys(DIK_K) = "K": aKeys(DIK_L) = "L"
...
Чтобы увидеть полный код функции нажмите здесь
...
                KeyNames = aKeys(iNum)
            End Function


Программа готова, жмите F5 если все правильно сделано то нажмите несколько клавиш и вы увидите что эти клавиши появляются в списке. Для самых нетерпеливых исходники кода здесь

     
   
 
Copyright © 2005 Visual Basic Programmes
Максим "Genius" Малыгин

  Яндекс цитирования Rambler's Top100  
Сайт создан в системе uCoz