- Visual C++源码
- Visual Basic源码
- C++ Builder源码
- Java源码
- Delphi源码
- C/C++源码
- PHP源码
- Perl源码
- Python源码
- Asm源码
- Pascal源码
- Borland C++源码
- Others源码
- SQL源码
- VBScript源码
- JavaScript源码
- ASP/ASPX源码
- C#源码
- Flash/ActionScript源码
- matlab源码
- PowerBuilder源码
- LabView源码
- Flex源码
- MathCAD源码
- VBA源码
- IDL源码
- Lisp/Scheme源码
- VHDL源码
- Objective-C源码
- Fortran源码
- tcl/tk源码
- QT源码
KbdManager.cpp
资源名称:tanksrc.zip [点击查看]
上传用户:royluo
上传日期:2007-01-05
资源大小:1584k
文件大小:3k
源码类别:
游戏
开发平台:
Visual C++
- /*****************************************************************************
- *
- * KbdManager.cpp
- *
- * Electrical Engineering Faculty - Software Lab
- * Spring semester 1998
- *
- * Tanks game
- *
- * Module description: The keyboard manager holds the player control keys in
- * use. It allows the user to assign his own keys to the
- * different tank actions, check for conflicts, and store
- * the table for future use in the registry file.
- *
- * Authors: Eran Yariv - 28484475
- * Moshe Zur - 24070856
- *
- *
- * Date: 23/09/98
- *
- ******************************************************************************/
- #include <stdafx.h>
- #include <KbdManager.h>
- #include "keymappingdlg.h"
- void
- CKbdManager::SetKbdMapping()
- {
- // Make a copy of current set of keys, and pass it to dlg:
- CKeysTable NewKeys = m_Keys;
- // Create Keys configuration dlg:
- CKeyMappingDlg dlg(&NewKeys);
- int nResponse = dlg.DoModal();
- if (nResponse == IDOK) // Replace the current settings with the new ones:
- {
- m_Keys = NewKeys;
- }
- }
- /*------------------------------------------------------------------------------
- Function: RefreshManouverSet
- Purpose: Refresh the local tank's maneuver set after each use, to deal with
- situation of focus lost of the main game dialog.
- Input: None.
- Output: None.
- Remarks: When the game loose it's focus, the WM_KEY_UP message may be missed,
- thus causing the tank to repeat it's last maneuver set. To eliminate
- this phenomena, we check the key board state after every use of the
- maneuver set by the local tank.
- ------------------------------------------------------------------------------*/
- void
- CKbdManager::RefreshManouverSet()
- {
- ASSERT(m_pManouverSet);
- for (int i = 0; i < 8; i++)
- {
- UINT uKeyCode = m_Keys.GetKey(i);
- if (! GetAsyncKeyState(uKeyCode)) // Key is up or nother window got the kbd input
- m_pManouverSet -> UnsetBit (i);
- }
- }