/*------------------------------------------------------------ ScrollBarsVertWsExLeft.C -- Displays "Hello, Windows 98!" in client area (c) Charles Petzold, 1998 ------------------------------------------------------------*/ #include LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ; HWND CreateAHorizontalScrollBar(HINSTANCE hInstance,HWND hwndParent, int sbHeight) { RECT rect; // Get the dimensions of the parent window's client area; if (!GetClientRect(hwndParent, &rect)) return NULL; // Create the scroll bar. return (CreateWindowEx( 0, // no extended styles L"SCROLLBAR", // scroll bar control class (PTSTR) NULL, // no window text WS_CHILD | WS_VISIBLE // window styles | SBS_HORZ, // horizontal scroll bar style rect.left, // horizontal position rect.bottom - sbHeight, // vertical position rect.right, // width of the scroll bar sbHeight, // height of the scroll bar hwndParent, // handle to main window NULL, // no menu hInstance, // instance owning this window NULL // pointer not needed )); } int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { static TCHAR szClassName[] = TEXT ("HelloWin") ; HWND hwnd ; HWND hwnd2 ; MSG msg ; WNDCLASS wndclass ; INT sbHeight = 20; //First Window. wndclass.style = CS_HREDRAW | CS_VREDRAW ; wndclass.lpfnWndProc = WndProc ; wndclass.cbClsExtra = 0 ; wndclass.cbWndExtra = 0 ; wndclass.hInstance = hInstance ; wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ; wndclass.hCursor = LoadCursor (NULL, IDC_ARROW); wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ; wndclass.lpszMenuName = NULL ; wndclass.lpszClassName = szClassName ; if (!RegisterClass (&wndclass)) { MessageBox (NULL, TEXT ("This program requires Windows NT!"), szClassName, MB_ICONERROR) ; return 0 ; } //Creating first windows based on First class hwnd = CreateWindowEx (0, szClassName, // window class name TEXT ("ParentWindow with child window:SBS_HORZ"), // window caption WS_OVERLAPPEDWINDOW, // window style CW_USEDEFAULT, // initial x position CW_USEDEFAULT, // initial y position CW_USEDEFAULT, // initial x size CW_USEDEFAULT, // initial y size NULL, // parent window handle NULL, // window menu handle hInstance, // program instance handle NULL) ; // creation parameters hwnd2 = CreateAHorizontalScrollBar(hInstance,hwnd, sbHeight); ShowWindow (hwnd, iCmdShow) ; ShowWindow (hwnd2, iCmdShow) ; UpdateWindow (hwnd) ; UpdateWindow (hwnd2) ; while (GetMessage (&msg, NULL, 0, 0)) { TranslateMessage (&msg) ; DispatchMessage (&msg) ; } return msg.wParam ; } LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc ; PAINTSTRUCT ps ; RECT rect ; switch (message) { case WM_PAINT: hdc = BeginPaint (hwnd, &ps) ; GetClientRect (hwnd, &rect) ; DrawText (hdc, TEXT ("Hello, Windows 98!"), -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER) ; EndPaint (hwnd, &ps) ; return 0 ; case WM_DESTROY: //CloseWindow(hwnd); //Just closes the Window from hwnd handle. PostQuitMessage (0) ; //This CLOSES all the App windows. Bye Bye. return 0 ; } return DefWindowProc (hwnd, message, wParam, lParam) ; }