@@ -112,6 +112,7 @@ void save_key_down(unsigned char kb_char, unsigned char OEMscan);
112112void raise_saved_keys (void );
113113void FunctionHelpBox (HWND );
114114void SetupClock (void );
115+ HMENU GetConfMenu ();
115116
116117// Globals
117118static HANDLE hEMUThread ;
@@ -123,6 +124,9 @@ static HANDLE hEMUQuit;
123124static char g_szAppName [MAX_LOADSTRING ] = "" ;
124125bool BinaryRunning ;
125126static unsigned char FlagEmuStop = TH_RUNNING ;
127+
128+ bool IsShiftKeyDown (void );
129+
126130//static CRITICAL_SECTION FrameRender;
127131/*--------------------------------------------------------------------------*/
128132int APIENTRY WinMain (HINSTANCE hInstance ,
@@ -528,13 +532,20 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
528532 break ;
529533
530534 case DIK_F10 :
531- if (!IsShiftKeyDown () && EmuState .FullScreen ) {
535+ {
536+ HMENU hMenu = NULL ;
537+ if ( IsShiftKeyDown () ) {
538+ hMenu = GetConfMenu ();
539+ } else {
540+ hMenu = RefreshDynamicMenu ();
541+ }
542+ if (hMenu && EmuState .FullScreen ) {
532543 RECT r ;
533- HMENU hMenu = RefreshDynamicMenu ();
534544 GetClientRect (hWnd ,& r );
535- TrackPopupMenu (hMenu , TPM_CENTERALIGN |TPM_VCENTERALIGN ,
536- r .right /2 , r .bottom /2 , 0 , hWnd , NULL );
545+ TrackPopupMenu (hMenu ,TPM_CENTERALIGN |TPM_VCENTERALIGN ,
546+ r .right /2 ,r .bottom /2 ,0 , hWnd ,NULL );
537547 }
548+ }
538549 break ;
539550
540551 case DIK_F11 :
@@ -558,7 +569,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
558569 break ;
559570
560571 default :
561- // send other keystrokes to the emulator if it is active
572+ // send shift and other keystrokes to the emulator if it is active
562573 if ( EmuState .EmulationRunning )
563574 {
564575 vccKeyboardHandleKey (kb_char , OEMscan , kEventKeyDown );
@@ -567,6 +578,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
567578 }
568579 break ;
569580 }
581+
570582 return 0 ;
571583 break ;
572584
@@ -813,13 +825,9 @@ BOOL CALLBACK FunctionKeys(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam
813825 SendDlgItemMessage (hDlg ,IDC_TITLE ,WM_SETTEXT ,0 ,(LPARAM )(LPCSTR )g_szAppName );
814826 return TRUE;
815827 case WM_CLOSE :
816- EndDialog (hDlg , LOWORD (wParam ));
817- return TRUE;
818828 case WM_COMMAND :
819- switch (LOWORD (wParam ))
820- case IDOK :
821- SendMessage (hDlg , WM_CLOSE , 0 , 0 );
822- break ;
829+ EndDialog (hDlg , wParam );
830+ return TRUE;
823831 }
824832 return FALSE;
825833}
@@ -1082,3 +1090,25 @@ void FunctionHelpBox(HWND hWnd)
10821090 DialogBox (EmuState .WindowInstance ,
10831091 MAKEINTRESOURCE (IDD_FUNCTION_KEYS ),hWnd ,FunctionKeys );
10841092}
1093+
1094+ HMENU GetConfMenu ()
1095+ {
1096+ static HMENU hMenu = NULL ;
1097+ if (hMenu == NULL ) {
1098+ hMenu = CreatePopupMenu ();
1099+ AppendMenu (hMenu ,MF_STRING ,ID_AUDIO_CONFIG ,"Audio" );
1100+ AppendMenu (hMenu ,MF_STRING ,ID_CPU_CONFIG ,"Cpu" );
1101+ AppendMenu (hMenu ,MF_STRING ,ID_DISPLAY_CONFIG ,"Display" );
1102+ AppendMenu (hMenu ,MF_STRING ,ID_KEYBOARD_CONFIG ,"Keyboard" );
1103+ AppendMenu (hMenu ,MF_STRING ,ID_JOYSTICKS_CONFIG ,"Joysticks" );
1104+ AppendMenu (hMenu ,MF_STRING ,ID_TAPE_CONFIG ,"Tape" );
1105+ AppendMenu (hMenu ,MF_STRING ,ID_BITBANGER_CONFIG ,"BitBanger" );
1106+ }
1107+ return hMenu ;
1108+ }
1109+
1110+ bool IsShiftKeyDown ()
1111+ {
1112+ return (GetKeyState (VK_SHIFT ) & 0x8000 ) != 0 ;
1113+ }
1114+
0 commit comments