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

  1. /*
  2.  *
  3.  *  EmptyClipboard ()
  4.  *
  5.  *  This program demonstrates the use of the EmptyClipboard () function.
  6.  *  This function empties the clipboard and frees handles to data in the
  7.  *  clipboard. It the assigns ownership of the clipboard to the window
  8.  *  that currently has the clipboard open. The clipboard must be open
  9.  *  when EmptyClipboard is called.
  10.  *  
  11.  */
  12.  
  13. #include <windows.h>
  14.  
  15. long    FAR PASCAL WndProc (HANDLE, unsigned, WORD, LONG);
  16.  
  17. int     PASCAL WinMain (hInstance, hPrevInstance, lpszCmdLine, cmdShow)
  18. HANDLE    hInstance, hPrevInstance;
  19. LPSTR     lpszCmdLine;
  20. int       cmdShow;
  21.   {
  22.   HWND     hWnd;
  23.   WNDCLASS rClass;
  24.   MSG      msg;
  25.  
  26.   if (!hPrevInstance)
  27.     {
  28.     rClass.style         = CS_HREDRAW | CS_VREDRAW;
  29.     rClass.lpfnWndProc   = WndProc;
  30.     rClass.cbClsExtra    = 0;
  31.     rClass.cbWndExtra    = 0;
  32.     rClass.hInstance     = hInstance;
  33.     rClass.hIcon         = LoadIcon  (hInstance, IDI_APPLICATION);
  34.     rClass.hCursor       = LoadCursor (NULL, IDC_ARROW);
  35.     rClass.hbrBackground = GetStockObject  (WHITE_BRUSH);
  36.     rClass.lpszMenuName  = NULL;
  37.     rClass.lpszClassName = "clipempt";
  38.  
  39.     if (!RegisterClass (&rClass))
  40.       return FALSE;
  41.     }
  42.  
  43.   hMenu = CreateMenu ();
  44.   ChangeMenu (hMenu, NULL, (LPSTR)"Clear Clipboard", 100, MF_APPEND);
  45.  
  46.   hWnd = CreateWindow ("clipempt",
  47.                       "EmptyClipboard",
  48.                       WS_OVERLAPPEDWINDOW,
  49.                       CW_USEDEFAULT,
  50.                       0,
  51.                       CW_USEDEFAULT,
  52.                       0,
  53.                       NULL,
  54.                       hMenu,
  55.                       hInstance,
  56.                       NULL);
  57.  
  58.   ShowWindow (hWnd, cmdShow);
  59.   UpdateWindow (hWnd);
  60.  
  61.   while (GetMessage (&msg, NULL, 0, 0))
  62.     {
  63.     TranslateMessage (&msg);
  64.     DispatchMessage (&msg);
  65.     }
  66.   return (msg.wParam);
  67.   }
  68.  
  69.  
  70. long    FAR PASCAL WndProc (hWnd, iMessage, wParam, lParam)
  71. HWND     hWnd;
  72. unsigned iMessage;
  73. WORD     wParam;
  74. LONG     lParam;
  75.   {
  76.   HMENU hMenu;
  77.  
  78.   switch (iMessage)
  79.     {
  80.     case WM_COMMAND:
  81.       if (wParam == 100)
  82.         {
  83.         OpenClipboard (hWnd);
  84.         MessageBox (hWnd, (LPSTR)"Emptying clipboard", (LPSTR)"EmptyClipboard",
  85.                     MB_OK);
  86.         if (EmptyClipboard ())  /*  Empty the clipboard  */
  87.           MessageBox (hWnd, (LPSTR)"Clipboard emptied", (LPSTR)"EmptyClipboard",
  88.                       MB_OK);
  89.         else
  90.           MessageBox (hWnd, (LPSTR)"Clipboard not emptied",
  91.                      (LPSTR)"EmptyClipboard", MB_OK);
  92.         CloseClipboard  ();
  93.         }
  94.       break;
  95.  
  96.     case WM_DESTROY:
  97.       PostQuitMessage  (0);
  98.       break;
  99.  
  100.     default:
  101.       return (DefWindowProc (hWnd, iMessage, wParam, lParam));
  102.     }
  103.   return  (0L);
  104.   }
  105.