/* * * MODULE : BlandIni.c * * PURPOSE : Contains initialization code for BlandMDI. * * FUNCTIONS: * * InitializeApplication() - Sets up Class data structure * and registers window class. * * InitializeInstance () - Does a per-instance initialization * of BlandMDI. Creates the "frame" * and MDI client. * * MakeNewChild () - Creates a new MDI child window * * Copyright 1991 Microsoft Corporation. All rights reserved. */ /*------------------------ #includes --------------------------------*/ #include "BlandMDI.h" /*------------------------ global variables -------------------------*/ char szFrame[] = "bland frame"; // Class name for "frame" window char szChild[] = "bland child"; // Class name for MDI window /*--------------------- InitializeApplication -------------------------*/ /* * * FUNCTION : InitializeApplication () * * PURPOSE : Sets up the class data structures and does a one-time * initialization of the app by registering the window classes * * RETURNS : TRUE - If RegisterClass() was successful for both classes. * FALSE - otherwise. * */ BOOL FAR PASCAL InitializeApplication() { WNDCLASS wc; // Register the frame class wc.style = 0; wc.lpfnWndProc = BlandFrameWndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInst; wc.hIcon = LoadIcon(hInst, IDBLANDFRAME); wc.hCursor = LoadCursor(NULL,IDC_ARROW); wc.hbrBackground = COLOR_APPWORKSPACE+1; wc.lpszMenuName = IDBLANDMENU; wc.lpszClassName = szFrame; if (RegisterClass (&wc)) { // Register the MDI child class wc.lpfnWndProc = BlandMDIChildWndProc; wc.hIcon = LoadIcon(hInst,IDBLANDCHILD); wc.lpszMenuName = NULL; wc.cbWndExtra = CBWNDEXTRA; wc.lpszClassName = szChild; if (RegisterClass(&wc)) return TRUE; } return FALSE; } /*---------------------- InitializeInstance --------------------------*/ /* * * FUNCTION : InitializeInstance () * * PURPOSE : Performs a per-instance initialization of BlandMDI. It * also creates the frame and one MDI child window. * * RETURNS : TRUE - If initialization was successful. * FALSE - otherwise. * */ BOOL FAR PASCAL InitializeInstance(LPSTR lpCmdLine, WORD nCmdShow) { extern HWND hwndMDIClient; char sz[80], *pCmdLine; HDC hdc; HMENU hmenu; // Get the base window title LoadString (hInst, IDS_APPNAME, sz, sizeof(sz)); // Create the frame // MDI Client window is created in frame's WM_CREATE case hwndFrame = CreateWindow (szFrame, sz, WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInst, NULL); if (hwndFrame && hwndMDIClient) { // Display the frame window ShowWindow (hwndFrame, nCmdShow); UpdateWindow (hwndFrame); // Make the first MDI child window MakeNewChild ("Initial Window"); return TRUE; } return FALSE; } /*---------------- MakeNewChild -----------------------------*/ /* * * FUNCTION : MakeNewChild (lpName) * * PURPOSE : Creates a new MDI child window. * * RETURNS : HWND - A handle to the new window. * */ HWND FAR PASCAL MakeNewChild(char *pName) { HWND hwnd; char sz[160]; MDICREATESTRUCT mcs; if (!pName) { // pName parameter is NULL -- load the "Untitled" string // from STRINGTABLE LoadString (hInst, IDS_UNTITLED, sz, sizeof(sz)); mcs.szTitle = (LPSTR)sz; } else { mcs.szTitle = (LPSTR)pName; /* Fully qualified pathname*/ } mcs.szClass = szChild; mcs.hOwner = hInst; mcs.x = mcs.cx = CW_USEDEFAULT; // Use the default size for the window mcs.y = mcs.cy = CW_USEDEFAULT; mcs.style = styleDefault; // Set the style DWORD of the window // to default // tell the MDI Client to create the child hwnd = (WORD)SendMessage (hwndMDIClient, WM_MDICREATE, 0, (LONG)(LPMDICREATESTRUCT)&mcs); ShowWindow(hwnd, SW_SHOW); return hwnd; }