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

  1. /*
  2.  *
  3.  *  SetClipboardData
  4.  *  
  5.  *  This program demonstrates the use of the SetClipboardData function.
  6.  *  This function sets a data handle into the clipboard for the data
  7.  *  specified by the second parameter. The data is assumed to have the
  8.  *  format specified by the frist parameter. After the clipboard data
  9.  *  handle has been assigned, this function frees the block indentified
  10.  *  by the second parameter.
  11.  *  
  12.  */
  13.  
  14. #include <windows.h>
  15.  
  16. long    FAR PASCAL WndProc (HWND, unsigned, WORD, LONG);
  17. int     strlen (char *);
  18.  
  19. LPSTR FAR PASCAL lstrcpy (LPSTR, LPSTR);
  20.  
  21. int     PASCAL WinMain (hInstance, hPrevInstance, lpszCmdLine, cmdShow)
  22. HANDLE     hInstance, hPrevInstance;
  23. LPSTR      lpszCmdLine;
  24. int        cmdShow;
  25.   {
  26.   HWND     hWnd;
  27.   WNDCLASS rClass;
  28.   MSG      msg;
  29.   HMENU    hMenu;
  30.  
  31.   if (!hPrevInstance)
  32.     {
  33.     rClass.style         = CS_HREDRAW | CS_VREDRAW;
  34.     rClass.lpfnWndProc   = WndProc;
  35.     rClass.cbClsExtra    = 0;
  36.     rClass.cbWndExtra    = 0;
  37.     rClass.hInstance     = hInstance;
  38.     rClass.hCursor       = LoadCursor (NULL, IDC_ARROW);
  39.     rClass.hIcon         = LoadIcon (hInstance, IDI_APPLICATION);
  40.     rClass.hbrBackground = GetStockObject (WHITE_BRUSH);
  41.     rClass.lpszMenuName  = NULL;
  42.     rClass.lpszClassName = "clipset";
  43.  
  44.     if (!RegisterClass (&rClass))
  45.       return FALSE;
  46.     }
  47.  
  48.   hMenu = CreateMenu ();
  49.   ChangeMenu (hMenu, NULL, (LPSTR)"Set Data", 100, MF_APPEND);
  50.  
  51.   hWnd = CreateWindow ("clipset",
  52.                       "SetClipboardData",
  53.                       WS_OVERLAPPEDWINDOW,
  54.                       CW_USEDEFAULT,
  55.                       0,
  56.                       CW_USEDEFAULT,
  57.                       0,
  58.                       NULL,
  59.                       hMenu,
  60.                       hInstance,
  61.                       NULL);
  62.  
  63.   ShowWindow (hWnd, cmdShow);
  64.   UpdateWindow (hWnd);
  65.  
  66.   while (GetMessage (&msg, NULL, 0, 0))
  67.     {
  68.     TranslateMessage (&msg);
  69.     DispatchMessage (&msg);
  70.     }
  71.   return (msg.wParam);
  72.   }
  73.  
  74. long    FAR PASCAL WndProc (hWnd, iMessage, wParam, lParam)
  75. HWND     hWnd;
  76. unsigned iMessage;
  77. WORD     wParam;
  78. LONG     lParam;
  79.   {
  80.   HANDLE hClipData;
  81.   HANDLE hMem;
  82.   LPSTR  lpText;
  83.  
  84.   switch (iMessage)
  85.     {
  86.     case WM_COMMAND:
  87.       if (wParam == 100)
  88.         {
  89.         OpenClipboard (hWnd);
  90.         hMem = GlobalAlloc (GMEM_MOVEABLE | GMEM_ZEROINIT,
  91.                            (long) strlen ("SetClipboardData"));
  92.         lpText = (LPSTR) GlobalLock (hMem);
  93.         lstrcpy (lpText, "SetClipboardData");
  94.         EmptyClipboard ();
  95.         MessageBox (hWnd, (LPSTR)"Setting handle to clipboard",
  96.                     (LPSTR)"SetClipboardData", MB_OK);
  97.         hClipData = SetClipboardData (CF_TEXT, hMem);
  98.         if (hClipData != NULL)
  99.           MessageBox (hWnd, (LPSTR)"Handle set", (LPSTR)"SetClipboardData",
  100.                       MB_OK);
  101.         else
  102.           MessageBox (hWnd, (LPSTR)"Handle not set", (LPSTR)"SetClipboardData",
  103.                       MB_OK);
  104.         CloseClipboard ();
  105.         GlobalUnlock (hMem);
  106.         }
  107.       break;
  108.  
  109.     case WM_DESTROY:
  110.       PostQuitMessage (0);
  111.       break;
  112.  
  113.     default:
  114.       return (DefWindowProc (hWnd, iMessage, wParam, lParam));
  115.     }
  116.   return (0L);
  117.   }
  118.