Win32 - right click context menus for main window
This commit is contained in:
parent
a51aa36f29
commit
fb876cbbc9
|
@ -1,4 +1,5 @@
|
||||||
---version 2.0.4 yet to be released---
|
---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
|
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 - 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)
|
23-nov-2008 - shinydoofy - movie subs now have a toggle button in the SDL build (F10 by default)
|
||||||
|
|
|
@ -312,6 +312,27 @@ BEGIN
|
||||||
END
|
END
|
||||||
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
|
CONTROL "",IDC_LIST1,"SysListView32",LVS_REPORT | LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,7,7,311,214
|
||||||
END
|
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
|
TOPMARGIN, 7
|
||||||
BOTTOMMARGIN, 243
|
BOTTOMMARGIN, 243
|
||||||
END
|
END
|
||||||
|
|
||||||
|
INSERTCOMMENTSUBTITLE, DIALOG
|
||||||
|
BEGIN
|
||||||
|
LEFTMARGIN, 7
|
||||||
|
RIGHTMARGIN, 140
|
||||||
|
TOPMARGIN, 7
|
||||||
|
BOTTOMMARGIN, 75
|
||||||
|
END
|
||||||
END
|
END
|
||||||
#endif // APSTUDIO_INVOKED
|
#endif // APSTUDIO_INVOKED
|
||||||
|
|
||||||
|
|
|
@ -133,6 +133,8 @@
|
||||||
#define CHECK_SOUND_8BIT 122
|
#define CHECK_SOUND_8BIT 122
|
||||||
#define IDD_DIALOG3 123
|
#define IDD_DIALOG3 123
|
||||||
#define CHECK_SOUND_GLOBAL_FOCUS 124
|
#define CHECK_SOUND_GLOBAL_FOCUS 124
|
||||||
|
#define IDD_DIALOG4 124
|
||||||
|
#define INSERTCOMMENTSUBTITLE 124
|
||||||
#define CHECK_SOUND_ENABLED 126
|
#define CHECK_SOUND_ENABLED 126
|
||||||
#define CTL_LATENCY_TRACKBAR 128
|
#define CTL_LATENCY_TRACKBAR 128
|
||||||
#define COMBO_SOUND_QUALITY 129
|
#define COMBO_SOUND_QUALITY 129
|
||||||
|
@ -373,8 +375,11 @@
|
||||||
#define MEMW_EDIT01RESET 1185
|
#define MEMW_EDIT01RESET 1185
|
||||||
#define MEMW_EDIT02RESET 1186
|
#define MEMW_EDIT02RESET 1186
|
||||||
#define MEMW_EDIT03RESET 1187
|
#define MEMW_EDIT03RESET 1187
|
||||||
|
#define INSERTCS_MESSAGE 1187
|
||||||
#define MEMW_EDIT00RMADDRESS 1188
|
#define MEMW_EDIT00RMADDRESS 1188
|
||||||
|
#define INSERTCS_IDOK 1188
|
||||||
#define MEMW_EDIT01RMADDRESS 1189
|
#define MEMW_EDIT01RMADDRESS 1189
|
||||||
|
#define INSERTCS_IDCANCEL 1189
|
||||||
#define MEMW_EDIT02RMADDRESS 1190
|
#define MEMW_EDIT02RMADDRESS 1190
|
||||||
#define MEMW_EDIT03RMADDRESS 1191
|
#define MEMW_EDIT03RMADDRESS 1191
|
||||||
#define MEMW_EDIT04RMADDRESS 1192
|
#define MEMW_EDIT04RMADDRESS 1192
|
||||||
|
@ -577,6 +582,20 @@
|
||||||
#define ID_FILE_SCREENSHOT 40272
|
#define ID_FILE_SCREENSHOT 40272
|
||||||
#define ID_FILE_RESTARTMOVIE 40273
|
#define ID_FILE_RESTARTMOVIE 40273
|
||||||
#define ID_FILE_PLAYMOVIEFROMBEGINNING 40274
|
#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 IDC_DEBUGGER_ICONTRAY 55535
|
||||||
#define MW_ValueLabel2 65423
|
#define MW_ValueLabel2 65423
|
||||||
#define MW_ValueLabel1 65426
|
#define MW_ValueLabel1 65426
|
||||||
|
@ -585,9 +604,9 @@
|
||||||
//
|
//
|
||||||
#ifdef APSTUDIO_INVOKED
|
#ifdef APSTUDIO_INVOKED
|
||||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||||
#define _APS_NEXT_RESOURCE_VALUE 124
|
#define _APS_NEXT_RESOURCE_VALUE 125
|
||||||
#define _APS_NEXT_COMMAND_VALUE 40275
|
#define _APS_NEXT_COMMAND_VALUE 40289
|
||||||
#define _APS_NEXT_CONTROL_VALUE 1187
|
#define _APS_NEXT_CONTROL_VALUE 1190
|
||||||
#define _APS_NEXT_SYMED_VALUE 101
|
#define _APS_NEXT_SYMED_VALUE 101
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -65,8 +65,18 @@
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
|
||||||
using namespace std;
|
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 FCEUGI *GameInfo;
|
||||||
extern int EnableAutosave;
|
extern int EnableAutosave;
|
||||||
|
@ -77,49 +87,48 @@ extern bool turbo;
|
||||||
// Extern functions
|
// Extern functions
|
||||||
|
|
||||||
char *md5_asciistr(uint8 digest[16]);
|
char *md5_asciistr(uint8 digest[16]);
|
||||||
|
|
||||||
void SetAutoFirePattern(int onframes, int offframes);
|
void SetAutoFirePattern(int onframes, int offframes);
|
||||||
void SetAutoFireOffset(int offset);
|
void SetAutoFireOffset(int offset);
|
||||||
|
|
||||||
void ShowNetplayConsole(void); //mbg merge 7/17/06 YECH had to add
|
void ShowNetplayConsole(void); //mbg merge 7/17/06 YECH had to add
|
||||||
|
|
||||||
void MapInput(void);
|
void MapInput(void);
|
||||||
|
|
||||||
// Internal variables
|
//AutoFire-----------------------------------------------
|
||||||
int pauseAfterPlayback = 0;
|
|
||||||
|
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 int winwidth, winheight;
|
||||||
static volatile int nofocus = 0;
|
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 };
|
char *recent_files[] = { 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 };
|
||||||
|
|
||||||
const unsigned int MENU_FIRST_RECENT_FILE = 600;
|
const unsigned int MENU_FIRST_RECENT_FILE = 600;
|
||||||
const unsigned int MAX_NUMBER_OF_RECENT_FILES = sizeof(recent_files)/sizeof(*recent_files);
|
const unsigned int MAX_NUMBER_OF_RECENT_FILES = sizeof(recent_files)/sizeof(*recent_files);
|
||||||
|
|
||||||
// Exported variables
|
//Exported variables ------------------------------------
|
||||||
HWND pwindow;
|
|
||||||
int EnableBackgroundInput = 0;
|
int EnableBackgroundInput = 0;
|
||||||
int ismaximized = 0;
|
int ismaximized = 0;
|
||||||
|
|
||||||
//Menu handle of the main menu.
|
//Subtitles/Comments
|
||||||
static HMENU fceumenu = 0;
|
void InsertSubtitle(HWND main);
|
||||||
|
void InsertComment(HWND main);
|
||||||
|
|
||||||
static int tog = 0;
|
//Help Menu subtopics
|
||||||
static int CheckedAutoFirePattern = MENU_AUTOFIRE_PATTERN_1;
|
string moviehelp = "{695C964E-B83F-4A6E-9BA2-1A975387DB55}"; //Movie Recording
|
||||||
static int CheckedAutoFireOffset = MENU_AUTOFIRE_OFFSET_1;
|
string gettingstartedhelp = "{C76AEBD9-1E27-4045-8A37-69E5A52D0F9A}";//Getting Started
|
||||||
static bool loggingSound = false;
|
|
||||||
|
|
||||||
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()
|
int GetCheckedAutoFirePattern()
|
||||||
{
|
{
|
||||||
|
@ -717,11 +726,30 @@ LRESULT FAR PASCAL AppWndProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
|
||||||
case WM_LBUTTONDOWN:
|
case WM_LBUTTONDOWN:
|
||||||
case WM_LBUTTONUP:
|
case WM_LBUTTONUP:
|
||||||
case WM_RBUTTONDOWN:
|
case WM_RBUTTONDOWN:
|
||||||
case WM_RBUTTONUP:
|
|
||||||
mouseb=wParam;
|
mouseb=wParam;
|
||||||
goto proco;
|
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;
|
RECT wrect;
|
||||||
GetWindowRect(hWnd,&wrect);
|
GetWindowRect(hWnd,&wrect);
|
||||||
MainWindow_wndx = wrect.left;
|
MainWindow_wndx = wrect.left;
|
||||||
|
@ -735,6 +763,7 @@ LRESULT FAR PASCAL AppWndProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
|
||||||
}
|
}
|
||||||
goto proco;
|
goto proco;
|
||||||
|
|
||||||
|
|
||||||
case WM_ERASEBKGND:
|
case WM_ERASEBKGND:
|
||||||
if(xbsave)
|
if(xbsave)
|
||||||
return(0);
|
return(0);
|
||||||
|
@ -1161,6 +1190,7 @@ LRESULT FAR PASCAL AppWndProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
|
||||||
CreateMemWatch();
|
CreateMemWatch();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case FCEU_CONTEXT_OPENROM:
|
||||||
case MENU_OPEN_FILE:
|
case MENU_OPEN_FILE:
|
||||||
// User selected the Open File menu => Show the file selection dialog
|
// User selected the Open File menu => Show the file selection dialog
|
||||||
LoadNewGamey(hWnd, 0);
|
LoadNewGamey(hWnd, 0);
|
||||||
|
@ -1206,6 +1236,7 @@ LRESULT FAR PASCAL AppWndProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
|
||||||
FCEUD_MovieRecordTo();
|
FCEUD_MovieRecordTo();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case FCEUX_CONTEXT_REPLAYMOVIE:
|
||||||
case MENU_REPLAY_MOVIE:
|
case MENU_REPLAY_MOVIE:
|
||||||
// Replay movie menu was selected
|
// Replay movie menu was selected
|
||||||
FCEUD_MovieReplayFrom();
|
FCEUD_MovieReplayFrom();
|
||||||
|
@ -1314,6 +1345,24 @@ LRESULT FAR PASCAL AppWndProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
|
||||||
FCEUD_TurboToggle();
|
FCEUD_TurboToggle();
|
||||||
break;
|
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;
|
goto proco;
|
||||||
|
|
||||||
case WM_CLOSE:
|
case WM_CLOSE:
|
||||||
case WM_DESTROY:
|
case WM_DESTROY:
|
||||||
case WM_QUIT:
|
case WM_QUIT:
|
||||||
|
@ -2030,3 +2080,67 @@ void UpdateMenuHotkeys()
|
||||||
combined = "Code/Data Logger...\t" + combo;
|
combined = "Code/Data Logger...\t" + combo;
|
||||||
ChangeMenuItemText(MENU_CDLOGGER, combined);
|
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);
|
||||||
|
}
|
Loading…
Reference in New Issue