INIT.C
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:5k
源码类别:

Windows编程

开发平台:

Visual C++

  1. // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
  2. // ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
  3. // THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
  4. // PARTICULAR PURPOSE.
  5. //
  6. // Copyright (C) 1993-1997  Microsoft Corporation.  All Rights Reserved.
  7. //
  8. //  MODULE:   init.c
  9. //
  10. //  PURPOSE:   Performs application and instance specific initialization.
  11. //
  12. //  FUNCTIONS:
  13. //    InitApplication() - Initializes window data and registers window.
  14. //    InitInstance() - Saves instance handle and creates main window.
  15. //
  16. //  COMMENTS:
  17. //
  18. #include <windows.h>            // required for all Windows applications
  19. #ifdef WIN16
  20. #include "win16ext.h"           // required only for win16 applications
  21. #endif
  22. #include "globals.h"            // prototypes specific to this application
  23. HINSTANCE hInst;                // current instance
  24. char szAppName[9];              // The name of this application
  25. char szTitle[40];               // The title bar text
  26. //
  27. //  FUNCTION: InitApplication(HINSTANCE)
  28. //
  29. //  PURPOSE: Initializes window data and registers window class.
  30. //
  31. //  PARAMETERS:
  32. //    hInstance - The handle to the instance of this application that
  33. //          is currently being executed.
  34. //
  35. //  RETURN VALUE:
  36. //    TRUE - Success
  37. //    FALSE - Initialization failed
  38. //
  39. //  COMMENTS:
  40. //
  41. //    This function is called at initialization time only if no other
  42. //    instances of the application are running.  This function performs
  43. //    initialization tasks that can be done once for any number of running
  44. //    instances.
  45. //
  46. //    In this case, we initialize a window class by filling out a data
  47. //    structure of type WNDCLASS and calling the Windows RegisterClass()
  48. //    function.  Since all instances of this application use the same
  49. //    window class, we only need to do this when the first instance is
  50. //    initialized.
  51. //
  52. BOOL InitApplication(HINSTANCE hInstance)
  53. {
  54.     WNDCLASS  wc;
  55.     // Load the application name and description strings.
  56.     LoadString(hInstance, IDS_APPNAME, szAppName, sizeof(szAppName));
  57.     LoadString(hInstance, IDS_DESCRIPTION, szTitle, sizeof(szTitle));
  58.     // Fill in window class structure with parameters that describe the
  59.     // main window.
  60.     wc.style         = CS_HREDRAW | CS_VREDRAW; // Class style(s).
  61.     wc.lpfnWndProc   = (WNDPROC)WndProc;        // Window Procedure
  62.     wc.cbClsExtra    = 0;                       // No per-class extra data.
  63.     wc.cbWndExtra    = 0;                       // No per-window extra data.
  64.     wc.hInstance     = hInstance;               // Owner of this class
  65.     wc.hIcon         = LoadIcon(hInstance, szAppName); // Icon name from .RC
  66.     wc.hCursor       = LoadCursor(NULL, IDC_ARROW); // Cursor
  67.     wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); // Default color
  68.     wc.lpszMenuName  = szAppName;               // Menu name from .RC
  69.     wc.lpszClassName = szAppName;               // Name to register as
  70.     // Register the window class and return FALSE if unsuccesful.
  71.     if (!RegisterClass(&wc))
  72.     {
  73.         return FALSE;
  74.     }
  75.     //
  76.     // **TODO** Call module specific application initialization functions here.
  77.     //
  78.     return TRUE;
  79. }
  80. //
  81. //  FUNCTION:  InitInstance(HINSTANCE, int)
  82. //
  83. //  PURPOSE:  Saves instance handle and creates main window.
  84. //
  85. //  PARAMTERS:
  86. //    hInstance - The handle to the instance of this application that
  87. //          is currently being executed.
  88. //    nCmdShow - Specifies how the main window is to be diplayed.
  89. //
  90. //  RETURN VALUE:
  91. //    TRUE - Success
  92. //    FALSE - Initialization failed
  93. //
  94. //  COMMENTS:
  95. //    This function is called at initialization time for every instance of
  96. //    this application.  This function performs initialization tasks that
  97. //    cannot be shared by multiple instances.
  98. //
  99. //    In this case, we save the instance handle in a static variable and
  100. //    create and display the main program window.
  101. //
  102. BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
  103. {
  104.     HWND    hwnd; // Main window handle.
  105.     // Save the instance handle in static variable, which will be used in
  106.     // many subsequence calls from this application to Windows.
  107.     hInst = hInstance; // Store instance handle in our global variable
  108.     // Create a main window for this application instance.
  109.     hwnd = CreateWindow(szAppName,           // See RegisterClass() call.
  110.                         szTitle,             // Text for window title bar.
  111.                         WS_OVERLAPPEDWINDOW, // Window style.
  112.                         CW_USEDEFAULT, 0,    // Use default positioning
  113.                         CW_USEDEFAULT, 0,    // Use default size
  114.                         NULL,                // Overlapped has no parent.
  115.                         NULL,                // Use the window class menu.
  116.                         hInstance,           
  117.                         NULL);               
  118.     
  119.     // If window could not be created, return "failure"
  120.     if (!hwnd)
  121.         return FALSE;
  122.     //
  123.     // **TODO** Call module specific instance initialization functions here.
  124.     //
  125.     // Make the window visible; update its client area; and return "success"
  126.     ShowWindow(hwnd, nCmdShow); // Show the window
  127.     UpdateWindow(hwnd);         // Sends WM_PAINT message
  128.     return TRUE;                // We succeeded...
  129. }