/*++ Copyright (c) 1994 Microsoft Corporation Module Name: mainwnd.c Abstract: Main Window procedure for ShowPerf app Author: Bob Watson (a-robw) Revision History: 23 Nov 94 --*/ #include #include "resource.h" #include "SHOWPERF.h" // // GLOBAL functions // LRESULT CALLBACK MainWndProc( HWND hWnd, // window handle UINT message, // type of message WPARAM wParam, // additional information LPARAM lParam // additional information ) /*++ Routine Description: Windows Message processing routine for restkeys application. Arguments: Standard WNDPROC api arguments ReturnValue: 0 or value returned by DefWindowProc --*/ { LRESULT lResult = ERROR_SUCCESS; switch (message) { case WM_CLOSE: DestroyWindow(hWnd); break; case WM_DESTROY: PostQuitMessage(ERROR_SUCCESS); break; default: lResult = DefWindowProc(hWnd, message, wParam, lParam); break; } return lResult; } BOOL RegisterMainWindowClass( HINSTANCE hInstance ) /*++ Routine Description: Registers the main window class for this application Arguments: hInstance application instance handle Return Value: Return value of RegisterClass function --*/ { WNDCLASSW wc; // Fill in window class structure with parameters that describe the // main window. wc.style = CS_HREDRAW | CS_VREDRAW; // Class style(s). wc.lpfnWndProc = MainWndProc; // Window Procedure wc.cbClsExtra = 0; // No per-class extra data. wc.cbWndExtra = 0; // no extra data bytes. wc.hInstance = hInstance; // Owner of this class wc.hIcon = NULL; // No Icon wc.hCursor = LoadCursor(NULL, IDC_ARROW); // Cursor wc.hbrBackground = (HBRUSH) (COLOR_WINDOW + 1); // Default color wc.lpszMenuName = NULL; // No Menu wc.lpszClassName = GetStringResource(hInstance, IDS_APP_WINDOW_CLASS); // Name to register as // Register the window class and return success/failure code. return (BOOL) RegisterClassW(& wc); } HWND CreateMainWindow( HINSTANCE hInstance ) { HWND hWnd; // return value RECT rDesktop; // desktop window GetWindowRect(GetDesktopWindow(), & rDesktop); // Create a main window for this application instance. hWnd = CreateWindowExW( 0L, // make this window normal so debugger isn't covered GetStringResource(hInstance, IDS_APP_WINDOW_CLASS), // See RegisterClass() call. GetStringResource(hInstance, IDS_APP_TITLE), // Text for window title bar. (DWORD) (WS_OVERLAPPEDWINDOW), // Window style. rDesktop.right + 1, // position window off desktop rDesktop.bottom + 1, 1, 1, (HWND) NULL, // Overlapped windows have no parent. (HMENU) NULL, // use class menu hInstance, // This instance owns this window. NULL // not used ); // If window could not be created, return "failure" if (hWnd != NULL) { DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAIN), hWnd, MainDlgProc); PostMessage(hWnd, WM_CLOSE, 0, 0); // pack up and leave } return hWnd; }