Win32 - right click context menus for main window

This commit is contained in:
adelikat 2008-11-24 19:18:13 +00:00
parent a51aa36f29
commit fb876cbbc9
4 changed files with 212 additions and 38 deletions

View File

@ -1,4 +1,5 @@
---version 2.0.4 yet to be released---
24-nov-2008 - adelikat - win32 - right click context menus installed
24-nov-2008 - adelikat - win32 - added lots of mappable hotkey items as Menu items
23-nov-2008 - adelikat - Win32 - fixed some errors in my AVI directory override code
23-nov-2008 - shinydoofy - movie subs now have a toggle button in the SDL build (F10 by default)

View File

@ -312,6 +312,27 @@ BEGIN
END
END
FCEUCONTEXTMENUS MENU
BEGIN
POPUP "Game+Movie"
BEGIN
MENUITEM "Insert Subtitle", FCEU_CONTEXT_INSERTSUBTITLE, GRAYED
MENUITEM "Insert Comment", FCEU_CONTEXT_INSERTCOMMENT, GRAYED
MENUITEM SEPARATOR
MENUITEM "&Help....", FCEU_CONTEXT_MOVIEHELP
END
POPUP "Game+NoMovie"
BEGIN
MENUITEM "&Replay Movie", FCEUX_CONTEXT_REPLAYMOVIE
END
POPUP "NoGame"
BEGIN
MENUITEM "Open ROM", FCEU_CONTEXT_OPENROM
MENUITEM SEPARATOR
MENUITEM "&Help....", FCEU_CONTEXT_FCEUHELP
END
END
/////////////////////////////////////////////////////////////////////////////
//
@ -1578,6 +1599,17 @@ BEGIN
CONTROL "",IDC_LIST1,"SysListView32",LVS_REPORT | LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,7,7,311,214
END
INSERTCOMMENTSUBTITLE DIALOGEX 0, 0, 147, 82
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Insert Comment"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
DEFPUSHBUTTON "OK",INSERTCS_IDOK,7,55,50,14
PUSHBUTTON "Cancel",INSERTCS_IDCANCEL,84,55,50,14
EDITTEXT INSERTCS_MESSAGE,15,30,125,14,ES_AUTOHSCROLL
LTEXT "Insert:",IDC_STATIC,7,11,23,8
END
/////////////////////////////////////////////////////////////////////////////
//
@ -1594,6 +1626,14 @@ BEGIN
TOPMARGIN, 7
BOTTOMMARGIN, 243
END
INSERTCOMMENTSUBTITLE, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 140
TOPMARGIN, 7
BOTTOMMARGIN, 75
END
END
#endif // APSTUDIO_INVOKED

View File

@ -133,6 +133,8 @@
#define CHECK_SOUND_8BIT 122
#define IDD_DIALOG3 123
#define CHECK_SOUND_GLOBAL_FOCUS 124
#define IDD_DIALOG4 124
#define INSERTCOMMENTSUBTITLE 124
#define CHECK_SOUND_ENABLED 126
#define CTL_LATENCY_TRACKBAR 128
#define COMBO_SOUND_QUALITY 129
@ -373,8 +375,11 @@
#define MEMW_EDIT01RESET 1185
#define MEMW_EDIT02RESET 1186
#define MEMW_EDIT03RESET 1187
#define INSERTCS_MESSAGE 1187
#define MEMW_EDIT00RMADDRESS 1188
#define INSERTCS_IDOK 1188
#define MEMW_EDIT01RMADDRESS 1189
#define INSERTCS_IDCANCEL 1189
#define MEMW_EDIT02RMADDRESS 1190
#define MEMW_EDIT03RMADDRESS 1191
#define MEMW_EDIT04RMADDRESS 1192
@ -577,6 +582,20 @@
#define ID_FILE_SCREENSHOT 40272
#define ID_FILE_RESTARTMOVIE 40273
#define ID_FILE_PLAYMOVIEFROMBEGINNING 40274
#define ID_GAME_INSERTSUBTITLE 40275
#define ID_GAME_INSERTCOMMENT 40276
#define ID_GAME_HELP 40277
#define ID_GAME_REPLAYMOVIE 40278
#define ID_GAME_HELP40279 40279
#define FCEU_CONTEXT_INSERTSUBTITLE 40280
#define FCEU_CONTEXT_MOVIEHELP 40281
#define FCEUX_CONTEXT_REPLAYMOVIE 40282
#define FCEU_CONTEXT_ROMHELP 40283
#define ID_NOGAME_OPENROM 40284
#define ID_NOGAME_HELP 40285
#define FCEU_CONTEXT_OPENROM 40286
#define FCEU_CONTEXT_FCEUHELP 40287
#define FCEU_CONTEXT_INSERTCOMMENT 40288
#define IDC_DEBUGGER_ICONTRAY 55535
#define MW_ValueLabel2 65423
#define MW_ValueLabel1 65426
@ -585,9 +604,9 @@
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 124
#define _APS_NEXT_COMMAND_VALUE 40275
#define _APS_NEXT_CONTROL_VALUE 1187
#define _APS_NEXT_RESOURCE_VALUE 125
#define _APS_NEXT_COMMAND_VALUE 40289
#define _APS_NEXT_CONTROL_VALUE 1190
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif

View File

@ -65,8 +65,18 @@
#include <fstream>
using namespace std;
//********************************************************************************
//Globals
//********************************************************************************
// Extern variables
//Handles---------------------------------------------
static HMENU fceumenu = 0; //Main menu.
HWND pwindow; //Client Area
static HMENU recentmenu; //Recent Menu
HMENU hfceuxcontext; //Handle to context menu
HMENU hfceuxcontextsub; //Handle to context sub menu
//Extern variables------------------------------------
extern FCEUGI *GameInfo;
extern int EnableAutosave;
@ -77,49 +87,48 @@ extern bool turbo;
// Extern functions
char *md5_asciistr(uint8 digest[16]);
void SetAutoFirePattern(int onframes, int offframes);
void SetAutoFireOffset(int offset);
void ShowNetplayConsole(void); //mbg merge 7/17/06 YECH had to add
void MapInput(void);
// Internal variables
int pauseAfterPlayback = 0;
//AutoFire-----------------------------------------------
static int CheckedAutoFirePattern = MENU_AUTOFIRE_PATTERN_1;
static int CheckedAutoFireOffset = MENU_AUTOFIRE_OFFSET_1;
int GetCheckedAutoFirePattern();
int GetCheckedAutoFireOffset();
//Internal variables-------------------------------------
int pauseAfterPlayback = 0; //Flag for pausing emulator when movie is finished
static int winwidth, winheight;
static volatile int nofocus = 0;
static int tog = 0; //Toggle for Hide Menu
static bool loggingSound = false;
static LONG WindowXC=1<<30,WindowYC;
int MainWindow_wndx, MainWindow_wndy;
static uint32 mousex,mousey,mouseb;
static int vchanged = 0;
// Contains recent file strings
//Recent Menu Strings ------------------------------------
char *recent_files[] = { 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 };
const unsigned int MENU_FIRST_RECENT_FILE = 600;
const unsigned int MAX_NUMBER_OF_RECENT_FILES = sizeof(recent_files)/sizeof(*recent_files);
// Exported variables
HWND pwindow;
//Exported variables ------------------------------------
int EnableBackgroundInput = 0;
int ismaximized = 0;
//Menu handle of the main menu.
static HMENU fceumenu = 0;
//Subtitles/Comments
void InsertSubtitle(HWND main);
void InsertComment(HWND main);
static int tog = 0;
static int CheckedAutoFirePattern = MENU_AUTOFIRE_PATTERN_1;
static int CheckedAutoFireOffset = MENU_AUTOFIRE_OFFSET_1;
static bool loggingSound = false;
//Help Menu subtopics
string moviehelp = "{695C964E-B83F-4A6E-9BA2-1A975387DB55}"; //Movie Recording
string gettingstartedhelp = "{C76AEBD9-1E27-4045-8A37-69E5A52D0F9A}";//Getting Started
static HMENU recentmenu;
static LONG WindowXC=1<<30,WindowYC;
int MainWindow_wndx, MainWindow_wndy;
static uint32 mousex,mousey,mouseb;
static int vchanged = 0;
int GetCheckedAutoFirePattern();
int GetCheckedAutoFireOffset();
//********************************************************************************
int GetCheckedAutoFirePattern()
{
@ -717,24 +726,44 @@ LRESULT FAR PASCAL AppWndProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
case WM_LBUTTONDOWN:
case WM_LBUTTONUP:
case WM_RBUTTONDOWN:
case WM_RBUTTONUP:
mouseb=wParam;
goto proco;
case WM_MOVE: {
case WM_RBUTTONUP:
{
hfceuxcontext = LoadMenu(fceu_hInstance,"FCEUCONTEXTMENUS");
//If There is a movie loaded
if (GameInfo && FCEUMOV_Mode(MOVIEMODE_PLAY|MOVIEMODE_RECORD))
hfceuxcontextsub = GetSubMenu(hfceuxcontext,0);
//If there is a ROM loaded but no movie
else if (GameInfo)
hfceuxcontextsub = GetSubMenu(hfceuxcontext,1);
//Else no ROM
else
hfceuxcontextsub = GetSubMenu(hfceuxcontext,2);
TrackPopupMenu(hfceuxcontextsub,0,mousex,mousey,TPM_RIGHTBUTTON,hWnd,0);
}
case WM_MOVE:
{
RECT wrect;
GetWindowRect(hWnd,&wrect);
MainWindow_wndx = wrect.left;
MainWindow_wndy = wrect.top;
}
}
case WM_MOUSEMOVE:
{
mousex=LOWORD(lParam);
mousey=HIWORD(lParam);
}
{
mousex=LOWORD(lParam);
mousey=HIWORD(lParam);
}
goto proco;
case WM_ERASEBKGND:
if(xbsave)
return(0);
@ -1160,7 +1189,8 @@ LRESULT FAR PASCAL AppWndProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
case MENU_MEMORY_WATCH:
CreateMemWatch();
break;
case FCEU_CONTEXT_OPENROM:
case MENU_OPEN_FILE:
// User selected the Open File menu => Show the file selection dialog
LoadNewGamey(hWnd, 0);
@ -1206,6 +1236,7 @@ LRESULT FAR PASCAL AppWndProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
FCEUD_MovieRecordTo();
break;
case FCEUX_CONTEXT_REPLAYMOVIE:
case MENU_REPLAY_MOVIE:
// Replay movie menu was selected
FCEUD_MovieReplayFrom();
@ -1313,6 +1344,24 @@ LRESULT FAR PASCAL AppWndProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
case ID_NES_TURBO:
FCEUD_TurboToggle();
break;
//Context Menus------------------------------------------------------
//Game+Movie
case FCEU_CONTEXT_INSERTSUBTITLE:
InsertSubtitle(hWnd);
break;
case FCEU_CONTEXT_INSERTCOMMENT:
InsertComment(hWnd);
break;
case FCEU_CONTEXT_MOVIEHELP:
OpenHelpWindow(moviehelp);
break;
//No Game
case FCEU_CONTEXT_FCEUHELP:
OpenHelpWindow(gettingstartedhelp);
break;
}
@ -1371,6 +1420,7 @@ LRESULT FAR PASCAL AppWndProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
}
}
goto proco;
case WM_CLOSE:
case WM_DESTROY:
case WM_QUIT:
@ -2029,4 +2079,68 @@ void UpdateMenuHotkeys()
combo = GetKeyComboName(FCEUD_CommandMapping[EMUCMD_TOOL_OPENCDLOGGER]);
combined = "Code/Data Logger...\t" + combo;
ChangeMenuItemText(MENU_CDLOGGER, combined);
}
LRESULT CALLBACK InsertCommentSubtitleProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
static int *success;
//string message;
char message[128];
stringstream frame;
frame << currFrameCounter;
string Subtitle;
switch (uMsg)
{
case WM_INITDIALOG:
{
// Nothing very useful to do
success = (int*)lParam;
return true;
}
break;
case WM_CLOSE:
case WM_DESTROY:
case WM_QUIT:
{
EndDialog(hDlg, 0);
return true;
}
case WM_COMMAND:
switch (LOWORD(wParam))
{
case INSERTCS_IDOK:
{
GetDlgItemText(hDlg, INSERTCS_MESSAGE, message, 128);
Subtitle = frame.str() + " " + message;
FCEU_printf("%s",Subtitle.c_str());
currMovieData.subtitles.push_back(Subtitle);
EndDialog(hDlg, 0);
return true;
break;
}
case INSERTCS_IDCANCEL:
{
EndDialog(hDlg, 0);
return true;
break;
}
}
}
return 0;
}
void InsertSubtitle(HWND main)
{
//DialogBoxParam(fceu_hInstance, MAKEINTRESOURCE(INSERTCOMMENTSUBTITLE), main, (DLGPROC) InsertCommentSubtitleProc,(LPARAM) 0);
string Subtitle = "1000 Poop";
currMovieData.subtitles.push_back(Subtitle);
}
void InsertComment(HWND main)
{
wstring adelikat = mbstowcs("adelikat");
currMovieData.comments.push_back(L"author " + adelikat);
}