ShortcutKey.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:4k
源码类别:

模拟服务器

开发平台:

C/C++

  1. /*****************************************************************************************
  2. // 快捷键系统
  3. // Copyright : Kingsoft 2002
  4. // Author :   Wooy(Wu yue)
  5. // CreateTime: 2003-1-13
  6. ------------------------------------------------------------------------------------------
  7. 用于设置,获取,检查各种控制快捷键;读取,保存快捷键设置。
  8. 当前支持的快捷键为:字母键A至Z;数字键0至9;功能键F1至F11。
  9. *****************************************************************************************/
  10. #pragma once
  11. #include "KLuaScript.h"
  12. #define SCK_SHORTCUT_FRIEND "Open([[friend]])"
  13. #define SCK_SHORTCUT_SYSTEM "Open([[system]])"
  14. #define SCK_SHORTCUT_ITEMS "Open([[items]])"
  15. #define SCK_SHORTCUT_STATUS "Open([[status]])"
  16. #define SCK_SHORTCUT_MAP "Open([[map]])"
  17. #define SCK_SHORTCUT_SKILLS "Open([[skills]])"
  18. #define SCK_SHORTCUT_TEAM "Open([[team]])"
  19. #define SCK_SHORTCUT_OPTIONS "Open([[options]])"
  20. #define SCK_SHORTCUT_SIT "Switch([[sit]])"
  21. #define SCK_SHORTCUT_RUN "Switch([[run]])"
  22. #define SCK_SHORTCUT_PK "Switch([[pk]])"
  23. #define SCK_SHORTCUT_HORSE "Switch([[horse]])"
  24. #define SCK_SHORTCUT_TRADE "Switch([[trade]])"
  25. #define SCK_SHORTCUT_SHOWPLAYERNAME "Switch([[showplayername]])"
  26. #define SCK_SHORTCUT_SHOWPLAYERNUMBER "Switch([[showplayernumber]])"
  27. #define SCK_SHORTCUTSKILL_FORMAT "ShortcutSkill(%d)"
  28. #define SCK_DIRECTSHORTCUTSKILL_FORMAT "DirectShortcutSkill(%d)"
  29. struct COMMAND_SETTING
  30. {
  31. DWORD uKey; //第一关键字
  32. char szCommand[32]; //第二关键字,当第一关键字为0时有效
  33. char szDo[128];
  34. };
  35. #pragma warning(disable:4786)
  36. #include "string"
  37. #include "map"
  38. #include "list"
  39. #include "tchar.h"
  40. #include "commctrl.h"
  41. struct string_less
  42. {
  43. bool operator() (const std::string& src1, const std::string& src2) const
  44. {
  45. const size_t len1 = src1.size();
  46. const size_t len2 = src2.size();
  47. if (len1 < len2)
  48. return true;
  49. if (len1 > len2)
  50. return false;
  51. return _tcscmp(src1.c_str(), src2.c_str()) < 0;
  52. }
  53. };
  54. struct string_iless
  55. {
  56. bool operator() (const std::string& src1, const std::string& src2) const
  57. {
  58. const size_t len1 = src1.size();
  59. const size_t len2 = src2.size();
  60. if (len1 < len2)
  61. return true;
  62. if (len1 > len2)
  63. return false;
  64. return _tcsicmp(src1.c_str(), src2.c_str()) < 0;
  65. }
  66. };
  67. typedef std::list<std::string> PARAMLIST;
  68. struct ShortFuncInfo
  69. {
  70. std::string strName;
  71. int nParamNum;
  72. PARAMLIST strDefaultParam;
  73. };
  74. typedef std::map<std::string, ShortFuncInfo, string_iless> SHORTFUNCMAP;
  75. class KIniFile;
  76. class KShortcutKeyCentre
  77. {
  78. public:
  79. static int HandleKeyInput(unsigned int uKey, int nModifier);
  80. static int HandleMouseInput(unsigned int uKey, int nModifier, int x, int y);
  81. static BOOL InitScript();
  82. static BOOL LoadScript(char* pFileName);
  83. static BOOL ClearScript();
  84. static BOOL UninitScript();
  85. static BOOL LoadPrivateSetting(KIniFile* pFile);
  86. static int SavePrivateSetting(KIniFile* pFile);
  87. static BOOL ExcuteScript(const char * ScriptCommand);
  88. static int AddCommand(COMMAND_SETTING* pAdd); //复制Add数据并增加到Commands中,如果uKey!=0则覆盖原uKey,否则如szCommand[0]!=0则覆盖szCommand相同者
  89. static int RemoveCommand(int nIndex); //返回剩余Command的总数
  90. static int FindCommand(DWORD uKey);
  91. static int FindCommand(const char* szCommand);
  92. static int FindCommandByScript(const char* szScript);
  93. static DWORD GetCommandKey(int nIndex);
  94. static const char* GetKeyName(DWORD Key);
  95. static void Enable(bool b);
  96. static BOOL TranslateExcuteScript(const char * ScriptCommand);
  97. static BOOL RegisterFunctionAlias(const char * strFunAlias, const char * strFun, int nParam, const PARAMLIST& List);
  98. static void RemoveCommandAll();
  99. static BOOL ExcuteHWNDScript(const char * ScriptCommand);
  100. static SHORTFUNCMAP ms_FunsMap;
  101. static int ms_MouseX;
  102. static int ms_MouseY;
  103. static bool ms_bMouse;
  104. private:
  105. static KLuaScript ms_Script;
  106. static COMMAND_SETTING* ms_pCommands;
  107. static int ms_nCommands;
  108. static bool ms_Enable;
  109. };
  110. #define VK_LDBUTTON 0x0100
  111. #define VK_RDBUTTON 0x0101
  112. #define VK_MDBUTTON 0x0102