home *** CD-ROM | disk | FTP | other *** search
/ Microsoft Programmer's Library 1.3 / Microsoft-Programers-Library-v1.3.iso / sampcode / win_lrn / string / atomics.c < prev    next >
C/C++ Source or Header  |  1988-08-10  |  4KB  |  127 lines

  1. /*
  2.  * Function (s) demonstrated in this program: AddAtom ()
  3.  *                                           GlobalAddAtom ()
  4.  *                                           FindAtom ()
  5.  *                                           GlobalFindAtom ()
  6.  *                                           GetAtomName ()
  7.  *                                           GlobalGetAtomName ()
  8.  *                                           GetAtomHandle ()
  9.  *                                           DeleteAtom ()
  10.  *                                           GlobalDeleteAtom ()
  11.  * Compiler version: MSC v5.10
  12.  * Description: This program demonstrates the various atom functions available
  13.  *              in the Windows 2.03 Software Development Kit.
  14.  */
  15.  
  16. #include <windows.h>
  17. #include "process.h"
  18. #include "atomics.h"
  19.  
  20. long    FAR PASCAL WndProc (HWND, unsigned, WORD, LONG);
  21.  
  22. int    PASCAL WinMain (hInstance, hPrevInstance, lpszCmdLine, nCmdShow)
  23. HANDLE      hInstance, hPrevInstance;
  24. LPSTR       lpszCmdLine;
  25. int    nCmdShow;
  26. {
  27.   static char    szAppName [] = "SampleWindow";
  28.   HWND        hWnd;
  29.   WNDCLASS    wndclass;
  30.   MSG msg;
  31.   HMENU hMenu;
  32.  
  33.   if (!hPrevInstance)
  34.   {
  35.     wndclass.style         = CS_HREDRAW | CS_VREDRAW;
  36.     wndclass.lpfnWndProc   = WndProc;
  37.     wndclass.cbClsExtra    = 0;
  38.     wndclass.cbWndExtra    = 0;
  39.     wndclass.hInstance     = hInstance;
  40.     wndclass.hIcon         = LoadIcon (NULL, IDI_APPLICATION);
  41.     wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW);
  42.     wndclass.hbrBackground = GetStockObject (WHITE_BRUSH);
  43.     wndclass.lpszMenuName  = NULL;
  44.     wndclass.lpszClassName = szAppName;
  45.     if (!RegisterClass (&wndclass))
  46.       return FALSE;
  47.   }
  48.  
  49.   hMenu = LoadMenu (hInstance, "MainMenu");
  50.   hWnd = CreateWindow (szAppName, "The wonders of atoms", WS_OVERLAPPEDWINDOW,
  51.       CW_USEDEFAULT, 0, CW_USEDEFAULT, 0,
  52.       NULL, hMenu, hInstance, NULL);
  53.  
  54.   ShowWindow (hWnd, nCmdShow);
  55.   UpdateWindow (hWnd);
  56.  
  57.   while (GetMessage (&msg, NULL, 0, 0))
  58.   {
  59.     TranslateMessage (&msg);
  60.     DispatchMessage (&msg);
  61.   }
  62.   return (msg.wParam);
  63. }
  64.  
  65.  
  66. long    FAR PASCAL WndProc (hWnd, iMessage, wParam, lParam)
  67. HWND     hWnd;
  68. unsigned    iMessage;
  69. WORD     wParam;
  70. LONG     lParam;
  71. {
  72.   int    IDForAtom, IDForAtom2, ActualAtomSize, AtomMaxSize = 20, MB_Return;
  73.   HANDLE   hToAtom;
  74.   BOOL     bTableAdded;
  75.   char    szbuff[20];
  76.  
  77.   switch (iMessage)
  78.   {
  79.   case WM_COMMAND:
  80.     switch (wParam)
  81.     {
  82.     case IDM_EXECUTE:
  83.       bTableAdded = InitAtomTable (101);
  84. /* Only neccessary if you want more
  85.                  than 37 entries in your atom table
  86.                  note: 101 is the number of possible
  87.                  entries and should be PRIME */
  88.  
  89.       IDForAtom = AddAtom ( (LPSTR)"String");
  90. /* Add the string "String" to the atom table */
  91.  
  92.       IDForAtom2 = GlobalAddAtom ( (LPSTR)"String2");
  93. /* Add the string "String2" to the Atom table,
  94.                  making it accessible to other applications. */
  95.  
  96.       IDForAtom = FindAtom ( (LPSTR)"String");
  97. /* Search through the atom table and return the atom
  98.                   corresponding to the character string pointed
  99.                   to by (LPSTR)"String". */
  100.       ActualAtomSize = GetAtomName (IDForAtom, (LPSTR)szbuff, AtomMaxSize);
  101. /* Retrieve a copy of the char string that corresponds to the
  102.                   atom specified by IDForAtom  */
  103.       hToAtom = GetAtomHandle (IDForAtom);
  104.       IDForAtom = DeleteAtom (IDForAtom);
  105.       MB_Return = MessageBox (NULL, (LPSTR)szbuff,
  106.           (LPSTR)"Atom Example", MB_OK);
  107.       IDForAtom = GlobalFindAtom ( (LPSTR)"String2");
  108.       ActualAtomSize = GlobalGetAtomName (IDForAtom, (LPSTR)szbuff,
  109.           AtomMaxSize);
  110.       MB_Return = MessageBox (NULL, (LPSTR)szbuff,
  111.           (LPSTR)"Global Atom Example", MB_OK);
  112.       IDForAtom2 = GlobalDeleteAtom (IDForAtom2);
  113.     }
  114.     break;
  115.  
  116.   case WM_DESTROY:
  117.     PostQuitMessage (0);
  118.     break;
  119.  
  120.   default:
  121.     return DefWindowProc (hWnd, iMessage, wParam, lParam);
  122.   }
  123.   return (0L);
  124. }
  125.  
  126.  
  127.