Annotation of mstools/samples/spincube/spintest.c, revision 1.1

1.1     ! root        1: /******************************************************************************\
        !             2: *
        !             3: *  PROGRAM:     SPINTEST.C
        !             4: *
        !             5: *  PURPOSE:     Demonstrates the use of the SPINCUBE custom control.
        !             6: *
        !             7: *  FUNCTIONS:   WinMain        - standard stuff; also loads the
        !             8: *                                  SPINCUBE.DLL and creates a couple
        !             9: *                                  of spincube controls.
        !            10: *               MainWndProc    - generic window procedure.
        !            11: *               SpintestDlgProc- generic dialog procedure.
        !            12: *               AboutDlgProc   - processes about dialog messages
        !            13: *
        !            14: *                                  Dan Knudson
        !            15: *                           Microsoft Developer Support
        !            16: *                  Copyright (c) 1992, 1993 Microsoft Corporation
        !            17: *
        !            18: \******************************************************************************/
        !            19: 
        !            20: #include <windows.h>
        !            21: #include <stdio.h>
        !            22: #include "spintest.h"
        !            23: 
        !            24: //
        !            25: // The exported variables from SPINCUBE.C.
        !            26: //
        !            27: //   NOTE: Pointers to these vars are actually exported,
        !            28: //         *** NOT the variables themselves ***.
        !            29: //
        !            30: 
        !            31: extern int *giNumSpincubesThisProcess;
        !            32: extern int *giNumSpincubesAllProcesses;
        !            33: 
        !            34: 
        !            35: 
        !            36: /******************************************************************************\
        !            37: *
        !            38: *  FUNCTION:    WinMain (standard WinMain INPUTS/RETURNS)
        !            39: *
        !            40: \******************************************************************************/
        !            41: 
        !            42: int WINAPI WinMain (HANDLE hInstance,HANDLE hPrevInstance, LPSTR lpCmdLine,
        !            43:                    int     nCmdShow)
        !            44: {
        !            45:   WNDCLASS wc;
        !            46:   HWND   hwnd;
        !            47:   MSG    msg;
        !            48:   RECT   rect;
        !            49:   WORD   i;
        !            50: 
        !            51:   wc.style         = 0;
        !            52:   wc.lpfnWndProc   = (WNDPROC) MainWndProc;
        !            53:   wc.cbClsExtra    = 0;
        !            54:   wc.cbWndExtra    = 0;
        !            55:   wc.hInstance     = hInstance;
        !            56:   wc.hIcon         = LoadIcon (hInstance, "spintesticon");
        !            57:   wc.hCursor       = LoadCursor (NULL, IDC_ARROW);
        !            58:   wc.hbrBackground = GetStockObject (WHITE_BRUSH);
        !            59:   wc.lpszMenuName  = (LPSTR) "Menu";
        !            60:   wc.lpszClassName = (LPSTR) "Main";
        !            61: 
        !            62:   if (!RegisterClass (&wc))
        !            63:   {
        !            64:     MessageBox (NULL, "WinMain(): RegisterClass() failed",
        !            65:                 "Err! - SPINTEST", MB_OK | MB_ICONEXCLAMATION);
        !            66:     return(FALSE);
        !            67:   }
        !            68: 
        !            69:   ghInst = hInstance;
        !            70:   if (!(hwnd = CreateWindow ("Main", "spintest Sample Application",
        !            71:                              WS_OVERLAPPEDWINDOW,
        !            72:                              CW_USEDEFAULT, CW_USEDEFAULT,
        !            73:                              CW_USEDEFAULT, CW_USEDEFAULT,
        !            74:                              NULL, NULL, ghInst, NULL)))
        !            75:     return 0;
        !            76: 
        !            77: 
        !            78:   //
        !            79:   // Create a couple of SpinCube custom controls, we'll size them later in
        !            80:   //   the WM_SIZE message handler
        !            81:   //
        !            82: 
        !            83:   for (i = 0; i < 4; i++)
        !            84: 
        !            85:     gahwndSpin[i] = CreateWindow ("Spincube", "",
        !            86:                                   WS_VISIBLE | WS_CHILD |
        !            87:                                   SS_INMOTION | SS_ERASE,
        !            88:                                   0, 0, 0, 0, hwnd, NULL, NULL, NULL);
        !            89: 
        !            90: 
        !            91:   //
        !            92:   // Delete the SS_ERASE to the 1st & 4th controls so we get the
        !            93:   //   trailing cubes effect.
        !            94:   //
        !            95: 
        !            96:   SetWindowLong (gahwndSpin[0], GWL_STYLE,
        !            97:                  GetWindowLong (gahwndSpin[0], GWL_STYLE) & ~ SS_ERASE);
        !            98:   SetWindowLong (gahwndSpin[3], GWL_STYLE,
        !            99:                  GetWindowLong (gahwndSpin[3], GWL_STYLE) & ~ SS_ERASE);
        !           100: 
        !           101: 
        !           102:   //
        !           103:   // Send ourself a WM_SIZE so the controls will get sized appropriately
        !           104:   //
        !           105: 
        !           106:   GetClientRect (hwnd, &rect);
        !           107:   SendMessage (hwnd, WM_SIZE, 0,
        !           108:                MAKELONG((WORD)rect.right,(WORD)rect.bottom));
        !           109: 
        !           110:   ShowWindow (hwnd, nCmdShow);
        !           111: 
        !           112:   while (GetMessage (&msg, NULL, 0, 0))
        !           113:   {
        !           114:     TranslateMessage (&msg);
        !           115:     DispatchMessage  (&msg);
        !           116:   }
        !           117: 
        !           118:   return (msg.wParam);
        !           119: }
        !           120: 
        !           121: 
        !           122: 
        !           123: /******************************************************************************\
        !           124: *
        !           125: *  FUNCTION:    MainWndProc (standard window procedure INPUTS/RETURNS)
        !           126: *
        !           127: \******************************************************************************/
        !           128: 
        !           129: LRESULT CALLBACK MainWndProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
        !           130: {
        !           131:   switch (msg)
        !           132:   {
        !           133:     case WM_COMMAND:
        !           134: 
        !           135:       switch (LOWORD(wParam))
        !           136:       {
        !           137:         case IDM_DLGEDITDIALOG:
        !           138: 
        !           139:           DialogBox (ghInst, (LPCTSTR) "SpintestDlg", hwnd, (DLGPROC) DlgProc);
        !           140:           break;
        !           141: 
        !           142:         case IDM_SPINTESTSTATS:
        !           143: 
        !           144:           DialogBox (ghInst, (LPCTSTR) "Stats", hwnd, (DLGPROC) DlgProc);
        !           145:           break;
        !           146: 
        !           147:         case IDM_ABOUT:
        !           148: 
        !           149:           DialogBox (ghInst, (LPCTSTR)"About", hwnd, (DLGPROC) DlgProc);
        !           150:           break;
        !           151: 
        !           152:       }
        !           153:       break;
        !           154: 
        !           155:     case WM_SIZE:
        !           156:     {
        !           157:       //
        !           158:       // Resize the controls such that each cover half the client area
        !           159:       //   (plus a little border).
        !           160:       //
        !           161: 
        !           162:       int width  = (int) LOWORD(lParam);
        !           163:       int height = (int) HIWORD(lParam);
        !           164: 
        !           165:       SetWindowPos (gahwndSpin[0], NULL,
        !           166:                     BORDER, BORDER,
        !           167:                     width/2 - BORDER, height/2 - BORDER,
        !           168:                     SWP_SHOWWINDOW);
        !           169:       SetWindowPos (gahwndSpin[1], NULL,
        !           170:                     width/2 + BORDER, BORDER,
        !           171:                     width/2 - 2*BORDER, height/2 - BORDER,
        !           172:                     SWP_SHOWWINDOW);
        !           173:       SetWindowPos (gahwndSpin[2], NULL,
        !           174:                     BORDER, height/2 + BORDER,
        !           175:                     width/2 - BORDER, height/2 - 2*BORDER,
        !           176:                     SWP_SHOWWINDOW);
        !           177:       SetWindowPos (gahwndSpin[3], NULL,
        !           178:                     width/2 + BORDER, height/2 + BORDER,
        !           179:                     width/2 - 2*BORDER, height/2 - 2*BORDER,
        !           180:                     SWP_SHOWWINDOW);
        !           181:       break;
        !           182:     }
        !           183: 
        !           184:     case WM_DESTROY:
        !           185: 
        !           186:       PostQuitMessage (0);
        !           187:       break;
        !           188: 
        !           189:     default:
        !           190: 
        !           191:       return (DefWindowProc (hwnd, msg, wParam, lParam));
        !           192:   }
        !           193:   return 0;
        !           194: }
        !           195: 
        !           196: 
        !           197: 
        !           198: /******************************************************************************\
        !           199: *
        !           200: *  FUNCTION:    DlgProc (standard dialog procedure INPUTS/RETURNS)
        !           201: *
        !           202: *  COMMENTS:    Our common dlg proc (why have 3 that do the same thing???)
        !           203: *
        !           204: \******************************************************************************/
        !           205: 
        !           206: LRESULT CALLBACK DlgProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
        !           207: {
        !           208:   switch (message)
        !           209:   {
        !           210:     case WM_INITDIALOG:
        !           211: 
        !           212:       //
        !           213:       // If this dlg the "Stats" dlg fill in the appropriate fields.
        !           214:       //   If not these calls will just fail.
        !           215:       //
        !           216:       // If the references to the giNum* vars are commented out &
        !           217:       //   the program gets rebuilt don't be surprised if no spincubes
        !           218:       //   appear- since no references to spincube.lib the linker will
        !           219:       //   infer that it is not needed, & will not cause it to get
        !           220:       //   loaded. You'll need to make a call to LoadLibrary ("SPINCUBE.DLL")
        !           221:       //   prior to calling CreateWindow ("SPINCUBE"...).
        !           222:       //
        !           223: 
        !           224:       SetDlgItemInt (hwnd, 500, *giNumSpincubesThisProcess, TRUE);
        !           225:       SetDlgItemInt (hwnd, 501, *giNumSpincubesAllProcesses, TRUE);
        !           226:       return (TRUE);
        !           227: 
        !           228:     case WM_COMMAND:
        !           229: 
        !           230:       if (LOWORD(wParam) == IDOK)
        !           231: 
        !           232:         EndDialog (hwnd, TRUE);
        !           233: 
        !           234:       return (TRUE);
        !           235:   }
        !           236:   return (FALSE);
        !           237: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.