home *** CD-ROM | disk | FTP | other *** search
/ Windows Game Programming for Dummies (2nd Edition) / WinGamProgFD.iso / pc / DirectX SDK / DXSDK / samples / Multimedia / VBSamples / DirectInput / Keyboard / frmMain.frm (.txt) < prev    next >
Encoding:
Visual Basic Form  |  2001-10-08  |  8.1 KB  |  221 lines

  1. VERSION 5.00
  2. Begin VB.Form frmMain 
  3.    BorderStyle     =   1  'Fixed Single
  4.    Caption         =   "DirectInput Keyboard Sample"
  5.    ClientHeight    =   3435
  6.    ClientLeft      =   45
  7.    ClientTop       =   330
  8.    ClientWidth     =   5880
  9.    Icon            =   "frmMain.frx":0000
  10.    LinkTopic       =   "Form1"
  11.    MaxButton       =   0   'False
  12.    MinButton       =   0   'False
  13.    ScaleHeight     =   3435
  14.    ScaleWidth      =   5880
  15.    StartUpPosition =   3  'Windows Default
  16.    Begin VB.Timer tmrKey 
  17.       Left            =   0
  18.       Top             =   0
  19.    End
  20.    Begin VB.ListBox lstKeys 
  21.       Height          =   2595
  22.       Left            =   120
  23.       TabIndex        =   0
  24.       Top             =   360
  25.       Width           =   5655
  26.    End
  27. Attribute VB_Name = "frmMain"
  28. Attribute VB_GlobalNameSpace = False
  29. Attribute VB_Creatable = False
  30. Attribute VB_PredeclaredId = True
  31. Attribute VB_Exposed = False
  32. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  33. '  Copyright (C) 1999-2001 Microsoft Corporation.  All Rights Reserved.
  34. '  File:       FrmMain.frm
  35. '  Content:    This sample will show one way to use DirectInput with the keyboard
  36. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  37. Dim dx As New DirectX8
  38. Dim di As DirectInput8
  39. Dim diDEV As DirectInputDevice8
  40. Dim diState As DIKEYBOARDSTATE
  41. Dim iKeyCounter As Integer
  42. Dim aKeys(255) As String
  43. Private Sub Form_Load()
  44.     Set di = dx.DirectInputCreate()
  45.         
  46.     If Err.Number <> 0 Then
  47.         MsgBox "Error starting Direct Input, please make sure you have DirectX installed", vbApplicationModal
  48.         End
  49.     End If
  50.         
  51.         
  52.     Set diDEV = di.CreateDevice("GUID_SysKeyboard")
  53.     diDEV.SetCommonDataFormat DIFORMAT_KEYBOARD
  54.     diDEV.SetCooperativeLevel Me.hWnd, DISCL_BACKGROUND Or DISCL_NONEXCLUSIVE
  55.     Me.Show
  56.     diDEV.Acquire
  57.         
  58.     tmrKey.Interval = 10
  59.     tmrKey.Enabled = True
  60. End Sub
  61. Private Sub Form_Unload(Cancel As Integer)
  62.     diDEV.Unacquire
  63. End Sub
  64. Private Sub tmrKey_Timer()
  65.     lstKeys.Clear
  66.     diDEV.GetDeviceStateKeyboard diState
  67.     For iKeyCounter = 0 To 255
  68.         If diState.Key(iKeyCounter) <> 0 Then
  69.             lstKeys.AddItem KeyNames(iKeyCounter)
  70.         End If
  71.     Next
  72.     DoEvents
  73. End Sub
  74. Function KeyNames(iNum As Integer) As String
  75.     aKeys(&H1) = "DIK_ESCAPE"
  76.     aKeys(&H2) = "DIK_1"
  77.     aKeys(&H3) = "DIK_2"
  78.     aKeys(&H4) = "DIK_3"
  79.     aKeys(&H5) = "DIK_4"
  80.     aKeys(&H6) = "DIK_5"
  81.     aKeys(&H7) = "DIK_6"
  82.     aKeys(&H8) = "DIK_7"
  83.     aKeys(&H9) = "DIK_8"
  84.     aKeys(&HA) = "DIK_9"
  85.     aKeys(&HB) = "DIK_0"
  86.     aKeys(&HC) = "DIK_MINUS"             ' - on main keyboard
  87.     aKeys(&HD) = "DIK_EQUALS"
  88.     aKeys(&HE) = "DIK_BACK"                  ' backspace
  89.     aKeys(&HF) = "DIK_TAB"
  90.     aKeys(&H10) = "DIK_Q"
  91.     aKeys(&H11) = "DIK_W"
  92.     aKeys(&H12) = "DIK_E"
  93.     aKeys(&H13) = "DIK_R"
  94.     aKeys(&H14) = "DIK_T"
  95.     aKeys(&H15) = "DIK_Y"
  96.     aKeys(&H16) = "DIK_U"
  97.     aKeys(&H17) = "DIK_I"
  98.     aKeys(&H18) = "DIK_O"
  99.     aKeys(&H19) = "DIK_P"
  100.     aKeys(&H1A) = "DIK_LBRACKET"
  101.     aKeys(&H1B) = "DIK_RBRACKET"
  102.     aKeys(&H1C) = "DIK_RETURN" ' Enter on main keyboard
  103.     aKeys(&H1D) = "DIK_LCONTROL"
  104.     aKeys(&H1E) = "DIK_A"
  105.     aKeys(&H1F) = "DIK_S"
  106.     aKeys(&H20) = "DIK_D"
  107.     aKeys(&H21) = "DIK_F"
  108.     aKeys(&H22) = "DIK_G"
  109.     aKeys(&H23) = "DIK_H"
  110.     aKeys(&H24) = "DIK_J"
  111.     aKeys(&H25) = "DIK_K"
  112.     aKeys(&H26) = "DIK_L"
  113.     aKeys(&H27) = "DIK_SEMICOLON"
  114.     aKeys(&H28) = "DIK_APOSTROPHE"
  115.     aKeys(&H29) = "DIK_GRAVE" ' accent grave
  116.     aKeys(&H2A) = "DIK_LSHIFT"
  117.     aKeys(&H2B) = "DIK_BACKSLASH"
  118.     aKeys(&H2C) = "DIK_Z"
  119.     aKeys(&H2D) = "DIK_X"
  120.     aKeys(&H2E) = "DIK_C"
  121.     aKeys(&H2F) = "DIK_V"
  122.     aKeys(&H30) = "DIK_B"
  123.     aKeys(&H31) = "DIK_N"
  124.     aKeys(&H32) = "DIK_M"
  125.     aKeys(&H33) = "DIK_COMMA"
  126.     aKeys(&H34) = "DIK_PERIOD" ' . on main keyboard
  127.     aKeys(&H35) = "DIK_SLASH" ' / on main keyboard
  128.     aKeys(&H36) = "DIK_RSHIFT"
  129.     aKeys(&H37) = "DIK_MULTIPLY" ' * on numeric keypad
  130.     aKeys(&H38) = "DIK_LMENU" ' left Alt
  131.     aKeys(&H39) = "DIK_SPACE"
  132.     aKeys(&H3A) = "DIK_CAPITAL"
  133.     aKeys(&H3B) = "DIK_F1"
  134.     aKeys(&H3C) = "DIK_F2"
  135.     aKeys(&H3D) = "DIK_F3"
  136.     aKeys(&H3E) = "DIK_F4"
  137.     aKeys(&H3F) = "DIK_F5"
  138.     aKeys(&H40) = "DIK_F6"
  139.     aKeys(&H41) = "DIK_F7"
  140.     aKeys(&H42) = "DIK_F8"
  141.     aKeys(&H43) = "DIK_F9"
  142.     aKeys(&H44) = "DIK_F10"
  143.     aKeys(&H45) = "DIK_NUMLOCK"
  144.     aKeys(&H46) = "DIK_SCROLL" ' Scroll Lock
  145.     aKeys(&H47) = "DIK_NUMPAD7"
  146.     aKeys(&H48) = "DIK_NUMPAD8"
  147.     aKeys(&H49) = "DIK_NUMPAD9"
  148.     aKeys(&H4A) = "DIK_SUBTRACT" ' - on numeric keypad
  149.     aKeys(&H4B) = "DIK_NUMPAD4"
  150.     aKeys(&H4C) = "DIK_NUMPAD5"
  151.     aKeys(&H4D) = "DIK_NUMPAD6"
  152.     aKeys(&H4E) = "DIK_ADD" ' + on numeric keypad
  153.     aKeys(&H4F) = "DIK_NUMPAD1"
  154.     aKeys(&H50) = "DIK_NUMPAD2"
  155.     aKeys(&H51) = "DIK_NUMPAD3"
  156.     aKeys(&H52) = "DIK_NUMPAD0"
  157.     aKeys(&H53) = "DIK_DECIMAL" ' . on numeric keypad
  158.     aKeys(&H56) = "DIK_OEM_102 < > | on UK/Germany keyboards"
  159.     aKeys(&H57) = "DIK_F11"
  160.     aKeys(&H58) = "DIK_F12"
  161.     aKeys(&H64) = "DIK_F13 on (NEC PC98) "
  162.     aKeys(&H65) = "DIK_F14 on (NEC PC98) "
  163.     aKeys(&H66) = "DIK_F15 on (NEC PC98) "
  164.     aKeys(&H70) = "DIK_KANA on (Japanese keyboard)"
  165.     aKeys(&H73) = "DIK_ABNT_C1 / ? on Portugese (Brazilian) keyboards "
  166.     aKeys(&H79) = "DIK_CONVERT on (Japanese keyboard)"
  167.     aKeys(&H7B) = "DIK_NOCONVERT on (Japanese keyboard)"
  168.     aKeys(&H7D) = "DIK_YEN on (Japanese keyboard)"
  169.     aKeys(&H7E) = "DIK_ABNT_C2 on Numpad . on Portugese (Brazilian) keyboards "
  170.     aKeys(&H8D) = "DIK_NUMPADEQUALS = on numeric keypad (NEC PC98) "
  171.     aKeys(&H90) = "DIK_PREVTRACK on Previous Track (DIK_CIRCUMFLEX on Japanese keyboard) "
  172.     aKeys(&H91) = "DIK_AT (NEC PC98) "
  173.     aKeys(&H92) = "DIK_COLON (NEC PC98) "
  174.     aKeys(&H93) = "DIK_UNDERLINE (NEC PC98) "
  175.     aKeys(&H94) = "DIK_KANJI on (Japanese keyboard)"
  176.     aKeys(&H95) = "DIK_STOP (NEC PC98) "
  177.     aKeys(&H96) = "DIK_AX (Japan AX) "
  178.     aKeys(&H97) = "DIK_UNLABELED (J3100) "
  179.     aKeys(&H99) = "DIK_NEXTTRACK" ' Next Track
  180.     aKeys(&H9C) = "DIK_NUMPADENTER" ' Enter on numeric keypad
  181.     aKeys(&H9D) = "DIK_RCONTROL"
  182.     aKeys(&HA0) = "DIK_MUTE" ' Mute
  183.     aKeys(&HA1) = "DIK_CALCULATOR" ' Calculator
  184.     aKeys(&HA2) = "DIK_PLAYPAUSE" ' Play / Pause
  185.     aKeys(&HA4) = "DIK_MEDIASTOP" ' Media Stop
  186.     aKeys(&HAE) = "DIK_VOLUMEDOWN" ' Volume -
  187.     aKeys(&HB0) = "DIK_VOLUMEUP" ' Volume +
  188.     aKeys(&HB2) = "DIK_WEBHOME" ' Web home
  189.     aKeys(&HB3) = "DIK_NUMPADCOMMA" ' , on numeric keypad (NEC PC98)
  190.     aKeys(&HB5) = "DIK_DIVIDE" ' / on numeric keypad
  191.     aKeys(&HB7) = "DIK_SYSRQ"
  192.     aKeys(&HB8) = "DIK_RMENU" ' right Alt
  193.     aKeys(&HC5) = "DIK_PAUSE" ' Pause
  194.     aKeys(&HC7) = "DIK_HOME" ' Home on arrow keypad
  195.     aKeys(&HC8) = "DIK_UP" ' UpArrow on arrow keypad
  196.     aKeys(&HC9) = "DIK_PRIOR" ' PgUp on arrow keypad
  197.     aKeys(&HCB) = "DIK_LEFT" ' LeftArrow on arrow keypad
  198.     aKeys(&HCD) = "DIK_RIGHT" ' RightArrow on arrow keypad
  199.     aKeys(&HCF) = "DIK_END" ' End on arrow keypad
  200.     aKeys(&HD0) = "DIK_DOWN" ' DownArrow on arrow keypad
  201.     aKeys(&HD1) = "DIK_NEXT" ' PgDn on arrow keypad
  202.     aKeys(&HD2) = "DIK_INSERT" ' Insert on arrow keypad
  203.     aKeys(&HD3) = "DIK_DELETE" ' Delete on arrow keypad
  204.     aKeys(&HDB) = "DIK_LWIN" ' Left Windows key
  205.     aKeys(&HDC) = "DIK_RWIN" ' Right Windows key
  206.     aKeys(&HDD) = "DIK_APPS" ' AppMenu key
  207.     aKeys(&HDE) = "DIK_POWER" ' System Power
  208.     aKeys(&HDF) = "DIK_SLEEP" ' System Sleep
  209.     aKeys(&HE3) = "DIK_WAKE" ' System Wake
  210.     aKeys(&HE5) = "DIK_WEBSEARCH" ' Web Search
  211.     aKeys(&HE6) = "DIK_WEBFAVORITES" ' Web Favorites
  212.     aKeys(&HE7) = "DIK_WEBREFRESH" ' Web Refresh
  213.     aKeys(&HE8) = "DIK_WEBSTOP" ' Web Stop
  214.     aKeys(&HE9) = "DIK_WEBFORWARD" ' Web Forward
  215.     aKeys(&HEA) = "DIK_WEBBACK" ' Web Back
  216.     aKeys(&HEB) = "DIK_MYCOMPUTER" ' My Computer
  217.     aKeys(&HEC) = "DIK_MAIL" ' Mail
  218.     aKeys(&HED) = "DIK_MEDIASELECT" ' Media Select
  219.     KeyNames = aKeys(iNum)
  220. End Function
  221.