home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 July / CMCD0704.ISO / Software / Freeware / Utilitare / VisualBoyAdvance-1.7.2 / src / win32 / Commands.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  2004-05-13  |  12.9 KB  |  258 lines

  1. // VisualBoyAdvance - Nintendo Gameboy/GameboyAdvance (TM) emulator.
  2. // Copyright (C) 1999-2003 Forgotten
  3. // Copyright (C) 2004 Forgotten and the VBA development team
  4.  
  5. // This program is free software; you can redistribute it and/or modify
  6. // it under the terms of the GNU General Public License as published by
  7. // the Free Software Foundation; either version 2, or(at your option)
  8. // any later version.
  9. //
  10. // This program is distributed in the hope that it will be useful,
  11. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13. // GNU General Public License for more details.
  14. //
  15. // You should have received a copy of the GNU General Public License
  16. // along with this program; if not, write to the Free Software Foundation,
  17. // Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  18.  
  19. #include "stdafx.h"
  20. #include "AcceleratorManager.h"
  21. #include "resource.h"
  22. #include <afxres.h>
  23.  
  24. #include <afxtempl.h>  // MFC Templates extension
  25. #ifndef CMapStringToWord
  26. typedef CMap< CString, LPCSTR, WORD, WORD& > CMapStringToWord;
  27. #endif
  28.  
  29. static CMapStringToWord winAccelStrings;
  30. static bool initialized = false;
  31.  
  32. struct {
  33.   const char *command;
  34.   WORD id;
  35. } winAccelCommands[] = {
  36.   { "FileOpen", ID_FILE_OPEN },
  37.   { "FileOpenGameboy", ID_FILE_OPENGAMEBOY },
  38.   { "FileLoad", ID_FILE_LOAD },
  39.   { "FileSave", ID_FILE_SAVE },
  40.   { "FileLoadGame01", ID_FILE_LOADGAME_SLOT1 },
  41.   { "FileLoadGame02", ID_FILE_LOADGAME_SLOT2 },
  42.   { "FileLoadGame03", ID_FILE_LOADGAME_SLOT3 },
  43.   { "FileLoadGame04", ID_FILE_LOADGAME_SLOT4 },
  44.   { "FileLoadGame05", ID_FILE_LOADGAME_SLOT5 },
  45.   { "FileLoadGame06", ID_FILE_LOADGAME_SLOT6 },
  46.   { "FileLoadGame07", ID_FILE_LOADGAME_SLOT7 },
  47.   { "FileLoadGame08", ID_FILE_LOADGAME_SLOT8 },
  48.   { "FileLoadGame09", ID_FILE_LOADGAME_SLOT9 },
  49.   { "FileLoadGame10", ID_FILE_LOADGAME_SLOT10 },
  50.   { "FileLoadGameAutoLoad", ID_FILE_LOADGAME_AUTOLOADMOSTRECENT },
  51.   { "FileLoadGameRecent", ID_FILE_LOADGAME_MOSTRECENT },
  52.   { "FileSaveGame01", ID_FILE_SAVEGAME_SLOT1 },
  53.   { "FileSaveGame02", ID_FILE_SAVEGAME_SLOT2 },
  54.   { "FileSaveGame03", ID_FILE_SAVEGAME_SLOT3 },
  55.   { "FileSaveGame04", ID_FILE_SAVEGAME_SLOT4 },
  56.   { "FileSaveGame05", ID_FILE_SAVEGAME_SLOT5 },
  57.   { "FileSaveGame06", ID_FILE_SAVEGAME_SLOT6 },
  58.   { "FileSaveGame07", ID_FILE_SAVEGAME_SLOT7 },
  59.   { "FileSaveGame08", ID_FILE_SAVEGAME_SLOT8 },
  60.   { "FileSaveGame09", ID_FILE_SAVEGAME_SLOT9 },
  61.   { "FileSaveGame10", ID_FILE_SAVEGAME_SLOT10 },
  62.   { "FileSaveGameOldest", ID_FILE_SAVEGAME_OLDESTSLOT },
  63.   { "FileRecentReset", ID_FILE_RECENT_RESET },
  64.   { "FileRecentFreeze", ID_FILE_RECENT_FREEZE },
  65.   { "FileRecent01", ID_FILE_MRU_FILE1 },
  66.   { "FileRecent02", ID_FILE_MRU_FILE2 },
  67.   { "FileRecent03", ID_FILE_MRU_FILE3 },
  68.   { "FileRecent04", ID_FILE_MRU_FILE4 },
  69.   { "FileRecent05", ID_FILE_MRU_FILE5 },
  70.   { "FileRecent06", ID_FILE_MRU_FILE6 },
  71.   { "FileRecent07", ID_FILE_MRU_FILE7 },
  72.   { "FileRecent08", ID_FILE_MRU_FILE8 },
  73.   { "FileRecent09", ID_FILE_MRU_FILE9 },
  74.   { "FileRecent10", ID_FILE_MRU_FILE10 },
  75.   { "FilePause", ID_FILE_PAUSE },
  76.   { "FileReset", ID_FILE_RESET },
  77.   { "FileImportBatteryFile", ID_FILE_IMPORT_BATTERYFILE },
  78.   { "FileImportGamesharkCodeFile", ID_FILE_IMPORT_GAMESHARKCODEFILE },
  79.   { "FileImportGamesharkSnapshot", ID_FILE_IMPORT_GAMESHARKSNAPSHOT },
  80.   { "FileExportBatteryFile", ID_FILE_EXPORT_BATTERYFILE },
  81.   { "FileExportGamesharkSnapshot", ID_FILE_EXPORT_GAMESHARKSNAPSHOT },
  82.   { "FileScreenCapture", ID_FILE_SCREENCAPTURE },
  83.   { "FileRomInformation", ID_FILE_ROMINFORMATION },
  84.   { "FileToggleMenu", ID_FILE_TOGGLEMENU },
  85.   { "FileClose", ID_FILE_CLOSE },
  86.   { "FileExit", ID_FILE_EXIT },
  87.   { "OptionsFrameSkip0", ID_OPTIONS_VIDEO_FRAMESKIP_0 },
  88.   { "OptionsFrameSkip1", ID_OPTIONS_VIDEO_FRAMESKIP_1 },
  89.   { "OptionsFrameSkip2", ID_OPTIONS_VIDEO_FRAMESKIP_2 },
  90.   { "OptionsFrameSkip3", ID_OPTIONS_VIDEO_FRAMESKIP_3 },
  91.   { "OptionsFrameSkip4", ID_OPTIONS_VIDEO_FRAMESKIP_4 },
  92.   { "OptionsFrameSkip5", ID_OPTIONS_VIDEO_FRAMESKIP_5 },
  93.   { "OptionsFrameSkip6", ID_OPTIONS_VIDEO_FRAMESKIP_6 },
  94.   { "OptionsFrameSkip7", ID_OPTIONS_VIDEO_FRAMESKIP_7 },
  95.   { "OptionsFrameSkip8", ID_OPTIONS_VIDEO_FRAMESKIP_8 },
  96.   { "OptionsFrameSkip9", ID_OPTIONS_VIDEO_FRAMESKIP_9 },
  97.   { "OptionsThrottleNone", ID_OPTIONS_FRAMESKIP_THROTTLE_NOTHROTTLE },
  98.   { "OptionsThrottle025%", ID_OPTIONS_FRAMESKIP_THROTTLE_25 },
  99.   { "OptionsThrottle050%", ID_OPTIONS_FRAMESKIP_THROTTLE_50 },
  100.   { "OptionsThrottle100%", ID_OPTIONS_FRAMESKIP_THROTTLE_100 },
  101.   { "OptionsThrottle150%", ID_OPTIONS_FRAMESKIP_THROTTLE_150 },
  102.   { "OptionsThrottle200%", ID_OPTIONS_FRAMESKIP_THROTTLE_200 },
  103.   { "OptionsThrottleOther", ID_OPTIONS_FRAMESKIP_THROTTLE_OTHER },
  104.   { "OptionsVideoRenderGDI", ID_OPTIONS_VIDEO_RENDERMETHOD_GDI },
  105.   { "OptionsVideoRenderDDRAW", ID_OPTIONS_VIDEO_RENDERMETHOD_DIRECTDRAW },
  106.   { "OptionsVideoRenderD3D", ID_OPTIONS_VIDEO_RENDERMETHOD_DIRECT3D },
  107.   { "OptionsVideoRenderOGL", ID_OPTIONS_VIDEO_RENDERMETHOD_OPENGL },
  108.   { "OptionsVideoRenderSelectSkin", ID_OPTIONS_VIDEO_RENDEROPTIONS_SELECTSKIN },
  109.   { "OptionsVideoRenderSkin", ID_OPTIONS_VIDEO_RENDEROPTIONS_SKIN },
  110.   { "OptionsVideoVsync", ID_OPTIONS_VIDEO_VSYNC },
  111.   { "OptionsVideoX1", ID_OPTIONS_VIDEO_X1 },
  112.   { "OptionsVideoX2", ID_OPTIONS_VIDEO_X2 },
  113.   { "OptionsVideoX3", ID_OPTIONS_VIDEO_X3 },
  114.   { "OptionsVideoX4", ID_OPTIONS_VIDEO_X4 },
  115.   { "OptionsVideo320x240", ID_OPTIONS_VIDEO_FULLSCREEN320X240 },
  116.   { "OptionsVideo640x480", ID_OPTIONS_VIDEO_FULLSCREEN640X480 },
  117.   { "OptionsVideo800x600", ID_OPTIONS_VIDEO_FULLSCREEN800X600 },
  118.   { "OptionsVideoFullscreen", ID_OPTIONS_VIDEO_FULLSCREEN },
  119.   { "OptionsVideoFullscreenMaxScale", ID_OPTIONS_VIDEO_FULLSCREENMAXSCALE },
  120.   { "OptionsVideoLayersBg0", ID_OPTIONS_VIDEO_LAYERS_BG0 },
  121.   { "OptionsVideoLayersBg1", ID_OPTIONS_VIDEO_LAYERS_BG1 },
  122.   { "OptionsVideoLayersBg2", ID_OPTIONS_VIDEO_LAYERS_BG2 },
  123.   { "OptionsVideoLayersBg3", ID_OPTIONS_VIDEO_LAYERS_BG3 },
  124.   { "OptionsVideoLayersOBJ", ID_OPTIONS_VIDEO_LAYERS_OBJ },
  125.   { "OptionsVideoLayersWIN0", ID_OPTIONS_VIDEO_LAYERS_WIN0 },
  126.   { "OptionsVideoLayersWIN1", ID_OPTIONS_VIDEO_LAYERS_WIN1 },
  127.   { "OptionsVideoLayersOBJWIN", ID_OPTIONS_VIDEO_LAYERS_OBJWIN },
  128.   { "OptionsEmulatorAssociate", ID_OPTIONS_EMULATOR_ASSOCIATE },
  129.   { "OptionsEmulatorDirectories", ID_OPTIONS_EMULATOR_DIRECTORIES },
  130.   { "OptionsEmulatorSelectBIOS", ID_OPTIONS_EMULATOR_SELECTBIOSFILE },
  131.   { "OptionsEmulatorUseBIOS", ID_OPTIONS_EMULATOR_USEBIOSFILE },
  132.   { "OptionsEmulatorSkipBIOS", ID_OPTIONS_EMULATOR_SKIPBIOS },
  133.   { "OptionsEmulatorShowSpeedNone", ID_OPTIONS_EMULATOR_SHOWSPEED_NONE },
  134.   { "OptionsEmulatorShowSpeedPercentage", ID_OPTIONS_EMULATOR_SHOWSPEED_PERCENTAGE },
  135.   { "OptionsEmulatorShowSpeedDetailed", ID_OPTIONS_EMULATOR_SHOWSPEED_DETAILED },
  136.   { "OptionsEmulatorShowSpeedTransparent", ID_OPTIONS_EMULATOR_SHOWSPEED_TRANSPARENT },
  137.   { "OptionsEmulatorSpeedupToggle", ID_OPTIONS_EMULATOR_SPEEDUPTOGGLE },
  138.   { "OptionsEmulatorRemoveIntros", ID_OPTIONS_EMULATOR_REMOVEINTROSGBA },
  139.   { "OptionsEmulatorAutoHideMenu", ID_OPTIONS_EMULATOR_AUTOHIDEMENU },
  140.   { "OptionsEmulatorSaveAuto", ID_OPTIONS_EMULATOR_SAVETYPE_AUTOMATIC },
  141.   { "OptionsEmulatorSaveEEPROM", ID_OPTIONS_EMULATOR_SAVETYPE_EEPROM },
  142.   { "OptionsEmulatorSaveSRAM", ID_OPTIONS_EMULATOR_SAVETYPE_SRAM },
  143.   { "OptionsEmulatorSaveFLASH", ID_OPTIONS_EMULATOR_SAVETYPE_FLASH },
  144.   { "OptionsEmulatorSaveEEPROMSensor", ID_OPTIONS_EMULATOR_SAVETYPE_EEPROMSENSOR },
  145.   { "OptionsEmulatorSaveFlash64K", ID_OPTIONS_EMULATOR_SAVETYPE_FLASH512K },
  146.   { "OptionsEmulatorSaveFlash128K", ID_OPTIONS_EMULATOR_SAVETYPE_FLASH1M },
  147.   { "OptionsEmulatorAutoIPSPatch", ID_OPTIONS_EMULATOR_AUTOMATICALLYIPSPATCH },
  148.   { "OptionsEmulatorAGBPrint", ID_OPTIONS_EMULATOR_AGBPRINT },
  149.   { "OptionsEmulatorRTC", ID_OPTIONS_EMULATOR_REALTIMECLOCK },
  150.   { "OptionsEmulatorRewindInterval", ID_OPTIONS_EMULATOR_REWINDINTERVAL },
  151.   { "OptionsSoundOff", ID_OPTIONS_SOUND_OFF },
  152.   { "OptionsSoundMute", ID_OPTIONS_SOUND_MUTE },
  153.   { "OptionsSoundOn", ID_OPTIONS_SOUND_ON },
  154.   { "OptionsSoundChannel1", ID_OPTIONS_SOUND_CHANNEL1 },
  155.   { "OptionsSoundChannel2", ID_OPTIONS_SOUND_CHANNEL2 },
  156.   { "OptionsSoundChannel3", ID_OPTIONS_SOUND_CHANNEL3 },
  157.   { "OptionsSoundChannel4", ID_OPTIONS_SOUND_CHANNEL4 },
  158.   { "OptionsSoundDirectSoundA", ID_OPTIONS_SOUND_DIRECTSOUNDA },
  159.   { "OptionsSoundDirectSoundB", ID_OPTIONS_SOUND_DIRECTSOUNDB },
  160.   { "OptionsSound11Khz", ID_OPTIONS_SOUND_11KHZ },
  161.   { "OptionsSound22Khz", ID_OPTIONS_SOUND_22KHZ },
  162.   { "OptionsSound44Khz", ID_OPTIONS_SOUND_44KHZ },
  163.   { "OptionsSoundEcho", ID_OPTIONS_SOUND_ECHO },
  164.   { "OptionsSoundLowPassFilter", ID_OPTIONS_SOUND_LOWPASSFILTER },
  165.   { "OptionsSoundReverseStereo", ID_OPTIONS_SOUND_REVERSESTEREO },
  166.   { "OptionsSoundVolume1x", ID_OPTIONS_SOUND_VOLUME_1X },
  167.   { "OptionsSoundVolume2x", ID_OPTIONS_SOUND_VOLUME_2X },
  168.   { "OptionsSoundVolume3x", ID_OPTIONS_SOUND_VOLUME_3X },
  169.   { "OptionsSoundVolume4x", ID_OPTIONS_SOUND_VOLUME_4X },  
  170.   { "OptionsGameboyBorder", ID_OPTIONS_GAMEBOY_BORDER },
  171.   { "OptionsGameboyBorderAutomatic", ID_OPTIONS_GAMEBOY_BORDERAUTOMATIC },
  172.   { "OptionsGameboyColors", ID_OPTIONS_GAMEBOY_COLORS },
  173.   { "OptionsFilterNormal", ID_OPTIONS_FILTER_NORMAL },
  174.   { "OptionsFilterTVMode", ID_OPTIONS_FILTER_TVMODE },
  175.   { "OptionsFilter2xSaI", ID_OPTIONS_FILTER_2XSAI },
  176.   { "OptionsFilterSuper2xSaI", ID_OPTIONS_FILTER_SUPER2XSAI },
  177.   { "OptionsFilterSuperEagle", ID_OPTIONS_FILTER_SUPEREAGLE },
  178.   { "OptionsFilterPixelate", ID_OPTIONS_FILTER16BIT_PIXELATEEXPERIMENTAL },
  179.   { "OptionsFilterMotionBlur", ID_OPTIONS_FILTER16BIT_MOTIONBLUREXPERIMENTAL },
  180.   { "OptionsFilterAdMameScale2x", ID_OPTIONS_FILTER16BIT_ADVANCEMAMESCALE2X },
  181.   { "OptionsFilterSimple2x", ID_OPTIONS_FILTER16BIT_SIMPLE2X },
  182.   { "OptionsFilterBilinear", ID_OPTIONS_FILTER_BILINEAR },
  183.   { "OptionsFilterBilinearPlus", ID_OPTIONS_FILTER_BILINEARPLUS },
  184.   { "OptionsFilterScanlines", ID_OPTIONS_FILTER_SCANLINES },
  185.   { "OptionsFilterHq2x", ID_OPTIONS_FILTER_HQ2X },
  186.   { "OptionsFilterLq2x", ID_OPTIONS_FILTER_LQ2X },
  187.   { "OptionsFilterIFBNone", ID_OPTIONS_FILTER_INTERFRAMEBLENDING_NONE },
  188.   { "OptionsFilterIFBMotionBlur", ID_OPTIONS_FILTER_INTERFRAMEBLENDING_MOTIONBLUR },
  189.   { "OptionsFilterIFBSmart", ID_OPTIONS_FILTER_INTERFRAMEBLENDING_SMART },
  190.   { "OptionsFilterDisableMMX", ID_OPTIONS_FILTER_DISABLEMMX },
  191.   { "OptionsJoypadConfigure1", ID_OPTIONS_JOYPAD_CONFIGURE_1 },
  192.   { "OptionsJoypadConfigure2", ID_OPTIONS_JOYPAD_CONFIGURE_2 },
  193.   { "OptionsJoypadConfigure3", ID_OPTIONS_JOYPAD_CONFIGURE_3 },
  194.   { "OptionsJoypadConfigure4", ID_OPTIONS_JOYPAD_CONFIGURE_4 },
  195.   { "OptionsJoypadMotionConfigure", ID_OPTIONS_JOYPAD_MOTIONCONFIGURE },
  196.   { "OptionsJoypadAutofireA", ID_OPTIONS_JOYPAD_AUTOFIRE_A },
  197.   { "OptionsJoypadAutofireB", ID_OPTIONS_JOYPAD_AUTOFIRE_B },
  198.   { "OptionsJoypadAutofireL", ID_OPTIONS_JOYPAD_AUTOFIRE_L },
  199.   { "OptionsJoypadAutofireR", ID_OPTIONS_JOYPAD_AUTOFIRE_R },
  200.   { "CheatsSearch", ID_CHEATS_SEARCHFORCHEATS },
  201.   { "CheatsList", ID_CHEATS_CHEATLIST },
  202.   { "CheatsLoad", ID_CHEATS_LOADCHEATLIST },
  203.   { "CheatsSave", ID_CHEATS_SAVECHEATLIST },
  204.   { "CheatsDisable", ID_CHEATS_DISABLECHEATS },
  205.   { "ToolsDebugGDB", ID_TOOLS_DEBUG_GDB },
  206.   { "ToolsDebugGDBLoad", ID_TOOLS_DEBUG_LOADANDWAIT },
  207.   { "ToolsDebugGDBBreak", ID_TOOLS_DEBUG_BREAK },
  208.   { "ToolsDebugGDBDisconnect", ID_TOOLS_DEBUG_DISCONNECT },
  209.   { "ToolsDisassemble", ID_TOOLS_DISASSEMBLE },
  210.   { "ToolsIOViewer", ID_TOOLS_IOVIEWER },
  211.   { "ToolsLogging", ID_TOOLS_LOGGING },
  212.   { "ToolsMapViewer", ID_TOOLS_MAPVIEW },
  213.   { "ToolsMemoryViewer", ID_TOOLS_MEMORYVIEWER },
  214.   { "ToolsOAMViewer", ID_TOOLS_OAMVIEWER },
  215.   { "ToolsPaletteViewer", ID_TOOLS_PALETTEVIEW },
  216.   { "ToolsTileViewer", ID_TOOLS_TILEVIEWER },
  217.   { "ToolsNextFrame", ID_DEBUG_NEXTFRAME },
  218.   { "ToolsRecordSoundStartRecording", ID_OPTIONS_SOUND_STARTRECORDING },
  219.   { "ToolsRecordSoundStopRecording", ID_OPTIONS_SOUND_STOPRECORDING },
  220.   { "ToolsRecordAVIStartRecording", ID_TOOLS_RECORD_STARTAVIRECORDING },
  221.   { "ToolsRecordAVIStopRecording", ID_TOOLS_RECORD_STOPAVIRECORDING },
  222.   { "ToolsRecordMovieStartRecording", ID_TOOLS_RECORD_STARTMOVIERECORDING },
  223.   { "ToolsRecordMovieStopRecording", ID_TOOLS_RECORD_STOPMOVIERECORDING },
  224.   { "ToolsPlayMovieStartPlaying", ID_TOOLS_PLAY_STARTMOVIEPLAYING },
  225.   { "ToolsPlayMovieStopPlaying", ID_TOOLS_PLAY_STOPMOVIEPLAYING },
  226.   { "ToolsRewind", ID_TOOLS_REWIND },
  227.   { "ToolsCustomize", ID_TOOLS_CUSTOMIZE },
  228.   { "HelpBugReport", ID_HELP_BUGREPORT },
  229.   { "HelpFAQ", ID_HELP_FAQ },
  230.   { "HelpAbout", ID_HELP_ABOUT },
  231.   { "SystemMinimize", ID_SYSTEM_MINIMIZE }
  232. };
  233.  
  234. bool winAccelGetID(const char *command, WORD& id)
  235. {
  236.   if(!initialized) {
  237.     int count = sizeof(winAccelCommands)/sizeof(winAccelCommands[0]);
  238.     
  239.     for(int i = 0; i < count; i++) {
  240.       winAccelStrings.SetAt(winAccelCommands[i].command, winAccelCommands[i].id);      
  241.     }
  242.     initialized = true;
  243.   }
  244.   
  245.   return winAccelStrings.Lookup(command, id) ? true : false;
  246. }
  247.  
  248. void winAccelAddCommands(CAcceleratorManager& mgr)
  249. {
  250.   int count = sizeof(winAccelCommands)/sizeof(winAccelCommands[0]);
  251.  
  252.   for(int i = 0; i < count; i++) {
  253.     if(!mgr.AddCommandAccel(winAccelCommands[i].id, winAccelCommands[i].command, false))
  254.       mgr.CreateEntry(winAccelCommands[i].id, winAccelCommands[i].command);
  255.   }
  256.  
  257. }
  258.