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

  1. /*
  2.  *  This program demonstrates the use of CloseClipboard function.
  3.  *  This function close the clipboard. ClipClipboard should be called when
  4.  *  a window has finished examining or changing the clipboard. It lets
  5.  *  other application access the clipboard.
  6.  */
  7.  
  8. #include <windows.h>
  9.  
  10. static char    szAppName[] = "clipclos";
  11. static char    szFuncName[] = "CloseClipboard";
  12.  
  13. long    FAR PASCAL WndProc (HANDLE, unsigned, WORD, LONG);
  14.  
  15. int     PASCAL WinMain (hInstance, hPrevInstance, lpszCmdLine, cmdShow)
  16. HANDLE hInstance;
  17. HANDLE hPrevInstance;
  18. LPSTR  lpszCmdLine;
  19. int    cmdShow;
  20.   {
  21.   HWND      hWnd;
  22.   WNDCLASS  rClass;
  23.   MSG       msg;
  24.   HMENU     hMenu;
  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  = (LPSTR) NULL;
  37.     rClass.lpszClassName = (LPSTR) szAppName;
  38.  
  39.     if (!RegisterClass (&rClass))
  40.       return FALSE;
  41.     }
  42.  
  43.   hMenu = CreateMenu ();  /*  Add a Menu Item  */
  44.   ChangeMenu (hMenu, NULL, (LPSTR)"Close Clipboard", 100, MF_APPEND);
  45.  
  46.   hWnd = CreateWindow (szAppName,          /* window class name       */
  47.                       szFuncName,          /* window caption          */
  48.                       WS_OVERLAPPEDWINDOW, /* window style            */
  49.                       CW_USEDEFAULT,       /* initial x position      */
  50.                       0,                   /* initial y position      */
  51.                       CW_USEDEFAULT,       /* initial x size          */
  52.                       0,                   /* initial y size          */
  53.                       NULL,                /* parent window handle    */
  54.                       hMenu,               /* window menu handle      */
  55.                       hInstance,           /* program instance handle */
  56.                       NULL);               /* create parameters       */
  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.   BOOL   bClosed;
  78.  
  79.   switch (iMessage)
  80.     {
  81.     case WM_COMMAND:
  82.       if (wParam == 100)
  83.         {
  84.         OpenClipboard (hWnd);
  85.         MessageBox (NULL, (LPSTR)"Closing clipboard", (LPSTR)szFuncName,
  86.             MB_OK);
  87.         bClosed = CloseClipboard ();
  88.         if (bClosed != 0)
  89.           MessageBox (NULL, (LPSTR)"Clipboard closed", (LPSTR)szFuncName,
  90.                MB_OK);
  91.         else
  92.           MessageBox (NULL, (LPSTR)"Clipboard not closed", (LPSTR)szFuncName,
  93.               MB_OK);
  94.         }
  95.       break;
  96.  
  97.     case WM_DESTROY:
  98.       PostQuitMessage (0);
  99.       break;
  100.  
  101.     default:
  102.       return (DefWindowProc (hWnd, iMessage, wParam, lParam));
  103.     }
  104.   return (0L);
  105.   }
  106.