// // FUNCTION: WndProc(HWND, UINT, WPARAM, LPARAM) // // PURPOSE: Processes messages for the main window. // // WM_COMMAND - process the application menu // WM_PAINT - Paint the main window // WM_DESTROY - post a quit message and return // // LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { int wmId, wmEvent; PAINTSTRUCT ps; HDC hdc; switch (message) { case WM_COMMAND: wmId = LOWORD(wParam); wmEvent = HIWORD(wParam); // Parse the menu selections: switch (wmId) { case IDM_ABOUT: DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About); break; case IDM_EXIT: DestroyWindow(hWnd); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } break; case WM_GETTITLEBARINFOEX: GetTitleBarInfo(hWnd, &title_info); break; case WM_SETTEXT: //SetWindowText(hWnd, fps_string.c_str()); DefWindowProc(hWnd, WM_SETTEXT, wParam, lParam); break; case WM_CLOSE: Running = false; DestroyWindow(hWnd); break; case WM_NULL: break; case WM_PAINT: hdc = BeginPaint(hWnd, &ps); //// TODO: Add any drawing code here... EndPaint(hWnd, &ps); break; case WM_QUIT: Running = false; SAFE_SHUTDOWN(pCoreApp); SendMessage(hWnd, WM_CLOSE, NULL, NULL); break; case WM_DESTROY: Running = false; PostQuitMessage(0); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0; }
// Taken from http://www.dfcd.net/projects/switcher/switcher.c BOOL IsAltTabWindow(HWND hwnd) { TITLEBARINFO ti; HWND hwndTry, hwndWalk = NULL; if (!IsWindowVisible(hwnd)) return FALSE; hwndTry = GetAncestor(hwnd, GA_ROOTOWNER); while (hwndTry != hwndWalk) { hwndWalk = hwndTry; hwndTry = GetLastActivePopup(hwndWalk); if (IsWindowVisible(hwndTry)) break; } if (hwndWalk != hwnd) return FALSE; // the following removes some task tray programs and "Program Manager" ti.cbSize = sizeof(ti); GetTitleBarInfo(hwnd, &ti); if (ti.rgstate[0] & STATE_SYSTEM_INVISIBLE) return FALSE; // Tool windows should not be displayed either, these do not appear in the // task bar. if (GetWindowLong(hwnd, GWL_EXSTYLE) & WS_EX_TOOLWINDOW) return FALSE; // Also remove all windows without a title if (GetWindowTextLength(hwnd) == 0) return FALSE; return TRUE; }