@@ -18,7 +18,7 @@ static LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPara
1818 case WM_CREATE : {
1919 RECT rc ;
2020 int cbHeight ;
21- HMENU hMenu , hFile , hQuery ;
21+ HMENU hMenu , hFile , hQuery , hView ;
2222 TBBUTTON tbButtons [15 ];
2323
2424 g_hBrushWhite = CreateSolidBrush (RGB (255 , 255 , 255 ));
@@ -68,6 +68,13 @@ static LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPara
6868 AppendMenuW (hQuery , MF_STRING , IDM_FINDNEXT , L"Find &Next\tF3" );
6969 AppendMenuW (hMenu , MF_POPUP , (UINT )hQuery , L"&Query" );
7070
71+ hView = CreatePopupMenu ();
72+ AppendMenuW (hView , MF_STRING , IDM_VIEWQUERY , L"&Query\tCtrl+1, Esc" );
73+ AppendMenuW (hView , MF_STRING , IDM_VIEWRESULT , L"&Results\tCtrl+2, F6" );
74+ AppendMenuW (hView , MF_STRING , IDM_VIEWSCHEMA , L"&Schema\tCtrl+3, F7" );
75+ g_hViewMenu = hView ;
76+ AppendMenuW (hMenu , MF_POPUP , (UINT )hView , L"&View" );
77+
7178 {
7279 HMENU hHelp = CreatePopupMenu ();
7380 AppendMenuW (hHelp , MF_STRING , IDM_ABOUT , L"&About..." );
@@ -203,6 +210,7 @@ static LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPara
203210 UpdateResultFont ();
204211
205212 g_viewMode = 0 ;
213+ CheckMenuRadioItem (g_hViewMenu , IDM_VIEWQUERY , IDM_VIEWSCHEMA , IDM_VIEWQUERY , MF_BYCOMMAND );
206214 UpdateLineNumbers ();
207215 SendMessage (hwnd , WM_SIZE , 0 , 0 );
208216
@@ -263,18 +271,21 @@ static LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPara
263271 SendMessage (g_hwndCB , TB_CHECKBUTTON , IDM_VIEWQUERY , TRUE);
264272 SendMessage (g_hwndCB , TB_CHECKBUTTON , IDM_VIEWRESULT , FALSE);
265273 SendMessage (g_hwndCB , TB_CHECKBUTTON , IDM_VIEWSCHEMA , FALSE);
274+ CheckMenuRadioItem (g_hViewMenu , IDM_VIEWQUERY , IDM_VIEWSCHEMA , IDM_VIEWQUERY , MF_BYCOMMAND );
266275 break ;
267276 case IDM_VIEWRESULT :
268277 SwitchView (1 );
269278 SendMessage (g_hwndCB , TB_CHECKBUTTON , IDM_VIEWQUERY , FALSE);
270279 SendMessage (g_hwndCB , TB_CHECKBUTTON , IDM_VIEWRESULT , TRUE);
271280 SendMessage (g_hwndCB , TB_CHECKBUTTON , IDM_VIEWSCHEMA , FALSE);
281+ CheckMenuRadioItem (g_hViewMenu , IDM_VIEWQUERY , IDM_VIEWSCHEMA , IDM_VIEWRESULT , MF_BYCOMMAND );
272282 break ;
273283 case IDM_VIEWSCHEMA :
274284 SwitchView (2 );
275285 SendMessage (g_hwndCB , TB_CHECKBUTTON , IDM_VIEWQUERY , FALSE);
276286 SendMessage (g_hwndCB , TB_CHECKBUTTON , IDM_VIEWRESULT , FALSE);
277287 SendMessage (g_hwndCB , TB_CHECKBUTTON , IDM_VIEWSCHEMA , TRUE);
288+ CheckMenuRadioItem (g_hViewMenu , IDM_VIEWQUERY , IDM_VIEWSCHEMA , IDM_VIEWSCHEMA , MF_BYCOMMAND );
278289 break ;
279290 case IDM_FONTSIZE :
280291 CycleFontSize ();
@@ -343,6 +354,8 @@ static LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPara
343354 TV_KEYDOWN * pKey = (TV_KEYDOWN * )lParam ;
344355 if (pKey -> wVKey == VK_DELETE ) {
345356 OnSchemaDelete ();
357+ } else if (pKey -> wVKey == VK_ESCAPE ) {
358+ SendMessage (hwnd , WM_COMMAND , IDM_VIEWQUERY , 0 );
346359 } else if (GetKeyState (VK_CONTROL ) < 0 ) {
347360 if (pKey -> wVKey == '1' ) SendMessage (hwnd , WM_COMMAND , IDM_VIEWQUERY , 0 );
348361 else if (pKey -> wVKey == '2' ) SendMessage (hwnd , WM_COMMAND , IDM_VIEWRESULT , 0 );
0 commit comments