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

  1. /*
  2.  *  SetProp
  3.  *  setprop.c
  4.  *
  5.  *  This program demonstrates the use of the function SetProp.
  6.  *  It copies the character string and a data handle to the property
  7.  *  list of the window. The string serves as a label for the data handle.
  8.  *  The data handle can be retrieved from the property list at any time
  9.  *  by using the GetProp function and specifying the string.
  10.  *
  11.  */
  12.  
  13. #include "windows.h"
  14. #include "stdio.h"
  15.  
  16. /* This is the structure that is used to put into the property list.
  17.  * It is just a sample structure.
  18.  */
  19. struct Data 
  20.   {  short nRow, nSeat;
  21.      char  szName[20];
  22.   } strSeatings = { 2, 4, "John Smith" };
  23.  
  24.  
  25.  
  26. /* Procedure called when the application is loaded for the first time */
  27. BOOL WinInit( hInstance )
  28. HANDLE hInstance;
  29. {
  30.     WNDCLASS   wcClass;
  31.  
  32.     /* registering the parent window class */
  33.     wcClass.hCursor        = LoadCursor( NULL, IDC_ARROW );
  34.     wcClass.hIcon          = LoadIcon (hInstance, (LPSTR)"WindowIcon");
  35.     wcClass.lpszMenuName   = (LPSTR)NULL;
  36.     wcClass.lpszClassName  = (LPSTR)"Setprop";
  37.     wcClass.hbrBackground  = (HBRUSH)GetStockObject( WHITE_BRUSH );
  38.     wcClass.hInstance      = hInstance;
  39.     wcClass.style          = CS_HREDRAW | CS_VREDRAW;
  40.     wcClass.lpfnWndProc    = DefWindowProc;
  41.     wcClass.cbClsExtra     = 0;
  42.     wcClass.cbWndExtra     = 0;
  43.  
  44.     RegisterClass( (LPWNDCLASS)&wcClass );
  45.     return TRUE;        /* Initialization succeeded */
  46. }
  47.  
  48.  
  49. int PASCAL WinMain( hInstance, hPrevInstance, lpszCmdLine, cmdShow )
  50. HANDLE hInstance, hPrevInstance;
  51. LPSTR lpszCmdLine;
  52. int cmdShow;
  53. {
  54.     HWND         hWnd;          /* Handle to the parent window    */
  55.     BOOL         bSet;          /* Boolean flag                   */
  56.     struct Data *hData;         /* Handle to the data in the      
  57.                                  * property list
  58.                                  */
  59.     char         szbuffer[50];  /* String buffer for output       */
  60.  
  61.     WinInit (hInstance);
  62.  
  63.     hWnd = CreateWindow((LPSTR)"Setprop",
  64.                         (LPSTR)"Setting the Property List",
  65.                         WS_OVERLAPPEDWINDOW,
  66.                         50,                /* x         */
  67.                         50,                /* y         */
  68.                         600,               /* width     */
  69.                         250,               /* height    */
  70.                         (HWND)NULL,        /* no parent */
  71.                         (HMENU)NULL,       /* use class menu */
  72.                         (HANDLE)hInstance, /* handle to window instance */
  73.                         (LPSTR)NULL        /* no params to pass on */
  74.                        );
  75.  
  76.     /* Make window visible according to the way the app is activated */
  77.     ShowWindow( hWnd, cmdShow );
  78.     UpdateWindow( hWnd );
  79.  
  80.     
  81.     /* Putting the structure into the property list of the window 
  82.      * If it is successful, retrieve it to check if the correct structure
  83.      * is put into the property list
  84.      */
  85.     bSet = SetProp (hWnd, (LPSTR)"Smith", (HANDLE) &strSeatings);
  86.     if (bSet)
  87.       {
  88.         MessageBox (hWnd, (LPSTR)"Property Set", (LPSTR)"OK", MB_OK);
  89.         hData = GetProp (hWnd, (LPSTR)"Smith");
  90.         sprintf (szbuffer, "%s at row %d, seat# %d", 
  91.                  hData->szName, hData->nRow, hData->nSeat);
  92.         MessageBox (hWnd, (LPSTR)szbuffer, (LPSTR)"Retrieved", MB_OK);
  93.       }
  94.     else 
  95.       MessageBox (hWnd, (LPSTR)"Property Not Set", (LPSTR)"FAIL", MB_OK);
  96.   
  97.     return 0;
  98. }
  99.