// // FUNCTION: InitInstance(HINSTANCE, int) // // PURPOSE: Saves instance handle and creates main window // // COMMENTS: // // In this function, we save the instance handle in a global variable and // create and display the main program window. // BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) { HWND hWnd; hInst = hInstance; // Store instance handle in our global variable // TODO: test this cases: // - window in secondary monitor when shutdown, disconnect secondary monitor, restart int left = CW_USEDEFAULT; int top = CW_USEDEFAULT; int width = CW_USEDEFAULT; int height = CW_USEDEFAULT; int showCmd = SW_SHOW; RestoreWindowRect(left, top, width, height, showCmd); DWORD styles = WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN; if (showCmd == SW_MAXIMIZE) styles |= WS_MAXIMIZE; hWnd = CreateWindow(szWindowClass, szTitle, styles, left, top, width, height, NULL, NULL, hInstance, NULL); if (!hWnd) return FALSE; RestoreWindowPlacement(hWnd, showCmd); UpdateWindow(hWnd); return TRUE; }
// Create Method. Call this to create a cef_main_window instance BOOL cef_main_window::Create() { RegisterWndClass(); int left = CW_USEDEFAULT; int top = CW_USEDEFAULT; int width = CW_USEDEFAULT; int height = CW_USEDEFAULT; int showCmd = SW_SHOW; LoadWindowRestoreRect(left, top, width, height, showCmd); DWORD styles = WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN | WS_EX_COMPOSITED; if (showCmd == SW_MAXIMIZE) styles |= WS_MAXIMIZE; if (!cef_host_window::Create(::kWindowClassname, GetBracketsWindowTitleText(), styles, left, top, width, height)) { return FALSE; } RestoreWindowPlacement(showCmd); UpdateWindow(); return TRUE; }
// Note: Once the eval graph is opened, this window-proc lives forever; een closing the // eval-graph window merely hides it. On opening we re-initialize it, though, so it could // as well hae been destroyed. While it is open it processes the REFRESH_GRAPH commands. LRESULT CALLBACK EvalGraphProc( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam ) { static SnapData sd; PAINTSTRUCT stPS; HDC hDC; switch (message) { case WM_INITDIALOG: Translate(hDlg, DLG_EvalGraph); if( evalGraphDialog == NULL ) { evalGraphDialog = hDlg; RestoreWindowPlacement( hDlg, &wpEvalGraph ); /* Restore window placement */ } return FALSE; case WM_COMMAND: switch (LOWORD(wParam)) { case IDOK: EndDialog(hDlg, TRUE); return TRUE; case IDCANCEL: EndDialog(hDlg, FALSE); return TRUE; default: break; } break; case WM_ERASEBKGND: return TRUE; case WM_PAINT: hDC = BeginPaint( hDlg, &stPS ); DisplayEvalGraph( hDlg, hDC ); EndPaint( hDlg, &stPS ); break; case WM_REFRESH_GRAPH: hDC = GetDC( hDlg ); DisplayEvalGraph( hDlg, hDC ); ReleaseDC( hDlg, hDC ); break; case WM_LBUTTONDOWN: if( wParam == 0 || wParam == MK_LBUTTON ) { int index = GetMoveIndexFromPoint( LOWORD(lParam), HIWORD(lParam) ); if( index >= 0 && index < currLast ) { ToNrEvent( index + 1 ); } } return TRUE; case WM_SIZE: InvalidateRect( hDlg, NULL, FALSE ); break; case WM_GETMINMAXINFO: { MINMAXINFO * mmi = (MINMAXINFO *) lParam; mmi->ptMinTrackSize.x = 100; mmi->ptMinTrackSize.y = 100; } break; /* Support for captionless window */ case WM_CLOSE: EvalGraphPopDown(); break; case WM_ENTERSIZEMOVE: return OnEnterSizeMove( &sd, hDlg, wParam, lParam ); case WM_SIZING: return OnSizing( &sd, hDlg, wParam, lParam ); case WM_MOVING: return OnMoving( &sd, hDlg, wParam, lParam ); case WM_EXITSIZEMOVE: return OnExitSizeMove( &sd, hDlg, wParam, lParam ); } return FALSE; }
// This seems pure front end LRESULT CALLBACK EngineOutputProc( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam ) { static SnapData sd; switch (message) { case WM_INITDIALOG: if( engineOutputDialog == NULL ) { engineOutputDialog = hDlg; Translate(hDlg, DLG_EngineOutput); RestoreWindowPlacement( hDlg, &wpEngineOutput ); /* Restore window placement */ ResizeWindowControls( windowMode ); SendDlgItemMessage( hDlg, IDC_EngineMemo1, EM_SETEVENTMASK, 0, ENM_MOUSEEVENTS ); SendDlgItemMessage( hDlg, IDC_EngineMemo2, EM_SETEVENTMASK, 0, ENM_MOUSEEVENTS ); /* Set font */ SendDlgItemMessage( engineOutputDialog, IDC_EngineMemo1, WM_SETFONT, (WPARAM)font[boardSize][MOVEHISTORY_FONT]->hf, MAKELPARAM(TRUE, 0 )); SendDlgItemMessage( engineOutputDialog, IDC_EngineMemo2, WM_SETFONT, (WPARAM)font[boardSize][MOVEHISTORY_FONT]->hf, MAKELPARAM(TRUE, 0 )); SetEngineState( 0, STATE_IDLE, "" ); SetEngineState( 1, STATE_IDLE, "" ); } return FALSE; case WM_COMMAND: switch (LOWORD(wParam)) { case IDOK: EndDialog(hDlg, TRUE); return TRUE; case IDCANCEL: EndDialog(hDlg, FALSE); return TRUE; default: break; } break; case WM_MOUSEMOVE: MovePV(LOWORD(lParam) - boardRect.left, HIWORD(lParam) - boardRect.top, boardRect.bottom - boardRect.top); break; case WM_RBUTTONUP: ReleaseCapture(); SendMessage( outputField[currentPV][nMemo], EM_SETSEL, 0, 0 ); highTextStart[currentPV] = highTextEnd[currentPV] = 0; UnLoadPV(); break; case WM_NOTIFY: if( wParam == IDC_EngineMemo1 || wParam == IDC_EngineMemo2 ) { MSGFILTER * lpMF = (MSGFILTER *) lParam; if( lpMF->msg == WM_RBUTTONDOWN && (lpMF->wParam & (MK_CONTROL | MK_SHIFT)) == 0 ) { currentPV = (wParam == IDC_EngineMemo2); GetMemoLine(hDlg, LOWORD(lpMF->lParam), HIWORD(lpMF->lParam)); } } break; case WM_GETMINMAXINFO: { MINMAXINFO * mmi = (MINMAXINFO *) lParam; mmi->ptMinTrackSize.x = 100; mmi->ptMinTrackSize.y = 160; } break; case WM_CLOSE: EngineOutputPopDown(); break; case WM_SIZE: ResizeWindowControls( windowMode ); break; case WM_ENTERSIZEMOVE: return OnEnterSizeMove( &sd, hDlg, wParam, lParam ); case WM_SIZING: return OnSizing( &sd, hDlg, wParam, lParam ); case WM_MOVING: return OnMoving( &sd, hDlg, wParam, lParam ); case WM_EXITSIZEMOVE: return OnExitSizeMove( &sd, hDlg, wParam, lParam ); } return FALSE; }