home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c480 / 19.ddi / SAMPLES / MAKEAPP / MAKEWC.C_ / MAKEWC.C
Encoding:
C/C++ Source or Header  |  1993-02-08  |  2.8 KB  |  113 lines

  1. #include "makeapp.h"
  2.  
  3. BOOL MakeWc_Initialize(APP* papp)
  4. {
  5.     if (!papp->hinstPrev)
  6.     {
  7.         WNDCLASS cls;
  8.  
  9.         cls.hCursor         = LoadCursor(NULL, IDC_ARROW);
  10.         cls.hIcon           = NULL;
  11.         cls.lpszMenuName    = NULL;
  12.         cls.hInstance       = papp->hinst;
  13.         cls.lpszClassName   = "MakeApp_MakeWc";
  14.         cls.hbrBackground   = (HBRUSH)(COLOR_WINDOW+1);
  15.         cls.lpfnWndProc     = MakeWc_WndProc;
  16.         cls.style           = CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW;
  17.         cls.cbWndExtra      = sizeof(MAKEWC*);
  18.         cls.cbClsExtra      = 0;
  19.  
  20.         if (!RegisterClass(&cls))
  21.             return FALSE;
  22.     }
  23.  
  24.     return TRUE;
  25. }
  26.  
  27. void MakeWc_Terminate(APP* papp)
  28. {
  29. }
  30.  
  31. LRESULT CALLBACK _export MakeWc_WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
  32. {
  33.     MAKEWC* pmwc = MakeWc_GetPtr(hwnd);
  34.  
  35.     if (pmwc == NULL)
  36.     {
  37.         if (msg == WM_NCCREATE)
  38.         {
  39.             pmwc = (MAKEWC*)LocalAlloc(LMEM_FIXED | LMEM_ZEROINIT, sizeof(MAKEWC));
  40.  
  41.             if (pmwc == NULL)
  42.                 return 0L;
  43.  
  44.             pmwc->hwnd = hwnd;
  45.             MakeWc_SetPtr(hwnd, pmwc);
  46.         }
  47.         else
  48.         {
  49.             return MakeWc_DefProc(hwnd, msg, wParam, lParam);
  50.         }
  51.     }
  52.  
  53.     if (msg == WM_NCDESTROY)
  54.     {
  55.         //DWORD result = HANDLE_MSG(hwnd, WM_NCDESTROY, MakeWc_OnNCDestroy);
  56.  
  57.         LocalFree((HLOCAL)pmwc);
  58.         pmwc = NULL;
  59.         MakeWc_SetPtr(hwnd, NULL);
  60.  
  61.         //return result;
  62.     }
  63.  
  64.     switch (msg)
  65.     {
  66.         HANDLE_MSG(pmwc, WM_CREATE, MakeWc_OnCreate);
  67.         HANDLE_MSG(pmwc, WM_DESTROY, MakeWc_OnDestroy);
  68.  
  69.         HANDLE_MSG(pmwc, WM_PAINT, MakeWc_OnPaint);
  70.         HANDLE_MSG(pmwc, WM_ERASEBKGND, MakeWc_OnEraseBkgnd);
  71.  
  72.     default:
  73.         return MakeWc_DefProc(hwnd, msg, wParam, lParam);
  74.     }
  75. }
  76.  
  77. HWND MakeWc_CreateWindow(HWND hwndParent, int x, int y, int cx, int cy, BOOL fVisible)
  78. {
  79.     return CreateWindowEx(
  80.         0L,                 // extendedStyle
  81.             "MakeApp_MakeWc",               // class name
  82.             NULL,                           // text
  83.             (fVisible ? (WS_CHILD | WS_VISIBLE) : WS_CHILD),
  84.             x, y, cx, cy,                   // x, y, cx, cy
  85.             hwndParent,                     // hwndParent
  86.         NULL,                // hmenu
  87.             g_app.hinst,                    // hInstance
  88.             NULL);                          // lpCreateParams
  89. }
  90.  
  91. BOOL MakeWc_OnCreate(MAKEWC* pmwc, CREATESTRUCT FAR* lpCreateStruct)
  92. {
  93.     return TRUE;
  94. }
  95.  
  96. void MakeWc_OnDestroy(MAKEWC* pmwc)
  97. {
  98. }
  99.  
  100. void MakeWc_OnPaint(MAKEWC* pmwc)
  101. {
  102.     PAINTSTRUCT ps;
  103.     HDC hdc;
  104.  
  105.     hdc = BeginPaint(pmwc->hwnd, &ps);
  106.     EndPaint(pmwc->hwnd, &ps);
  107. }
  108.  
  109. BOOL MakeWc_OnEraseBkgnd(MAKEWC* pmwc, HDC hdc)
  110. {
  111.     return FORWARD_WM_ERASEBKGND(pmwc->hwnd, hdc, MakeWc_DefProc);
  112. }
  113.