clipbrd.h
上传用户:hzhsqp
上传日期:2007-01-06
资源大小:1600k
文件大小:11k
源码类别:

IP电话/视频会议

开发平台:

Visual C++

  1. /*
  2.  * clipbrd.h
  3.  *
  4.  * Clipboard interface.
  5.  *
  6.  * Portable Windows Library
  7.  *
  8.  * Copyright (c) 1993-1998 Equivalence Pty. Ltd.
  9.  *
  10.  * The contents of this file are subject to the Mozilla Public License
  11.  * Version 1.0 (the "License"); you may not use this file except in
  12.  * compliance with the License. You may obtain a copy of the License at
  13.  * http://www.mozilla.org/MPL/
  14.  *
  15.  * Software distributed under the License is distributed on an "AS IS"
  16.  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
  17.  * the License for the specific language governing rights and limitations
  18.  * under the License.
  19.  *
  20.  * The Original Code is Portable Windows Library.
  21.  *
  22.  * The Initial Developer of the Original Code is Equivalence Pty. Ltd.
  23.  *
  24.  * Portions are Copyright (C) 1993 Free Software Foundation, Inc.
  25.  * All Rights Reserved.
  26.  *
  27.  * Contributor(s): ______________________________________.
  28.  *
  29.  * $Log: clipbrd.h,v $
  30.  * Revision 1.15  1999/03/10 03:49:51  robertj
  31.  * More documentation adjustments.
  32.  *
  33.  * Revision 1.14  1999/03/09 08:01:47  robertj
  34.  * Changed comments for doc++ support (more to come).
  35.  *
  36.  * Revision 1.13  1999/02/16 08:08:45  robertj
  37.  * MSVC 6.0 compatibility changes.
  38.  *
  39.  * Revision 1.12  1998/09/23 06:23:05  robertj
  40.  * Added open source copyright license.
  41.  *
  42.  * Revision 1.11  1996/01/28 02:51:58  robertj
  43.  * Added assert into all Compare functions to assure comparison between compatible objects.
  44.  *
  45.  * Revision 1.10  1995/04/22 00:37:42  robertj
  46.  * Changed interactor owner to const pointer.
  47.  *
  48.  * Revision 1.9  1995/03/14 12:41:07  robertj
  49.  * Updated documentation to use HTML codes.
  50.  *
  51.  * Revision 1.8  1994/12/05  11:34:05  robertj
  52.  * Major rewrite of images, pictures and pixmaps.
  53.  * Renamed PPict, PPixels and PImage to make sure all uses are found.
  54.  *
  55.  * Revision 1.7  1994/11/29  10:13:05  robertj
  56.  * Documentation.
  57.  *
  58.  * Revision 1.6  1994/10/23  04:39:18  robertj
  59.  * Changed PImage descendants to pointers for polymorphism.
  60.  *
  61.  * Revision 1.5  1994/08/23  11:32:52  robertj
  62.  * Oops
  63.  *
  64.  * Revision 1.4  1994/08/22  00:46:48  robertj
  65.  * Added pragma fro GNU C++ compiler.
  66.  *
  67.  * Revision 1.3  1994/01/03  04:42:23  robertj
  68.  * Mass changes to common container classes and interactors etc etc etc.
  69.  *
  70.  * Revision 1.2  1993/10/16  20:33:20  robertj
  71.  * Changed pixmap and metafile object names to new structure.
  72.  *
  73.  * Revision 1.1  1993/09/27  16:35:25  robertj
  74.  * Initial revision
  75.  *
  76.  */
  77. #define _PCLIPBOARD
  78. #ifdef __GNUC__
  79. #pragma interface
  80. #endif
  81. /**A class representing the system clipboard. This is a platform dependent
  82.    entity for temporary storage and/or transfering between applications of
  83.    user data in a set of possible formats.
  84.    There are only a few primitive data types supported, with all remaining
  85.    types supported through a generic mechanism. The types are simple text,
  86.    pixel images and picture images. All other types are represented by an
  87.    arbitrary string and the data is placed in a simple memory block. The
  88.    interpretation of that memory block is application dependent.
  89.    
  90.    The clipboard only ever contains one item of data, though this data may be
  91.    available in a number of different formats. For example, a string contained
  92.    in a drawing package may be placed in the clipboard in several ways: as a
  93.    simple ANSI character sequence, as a pixel image of the rendered font, as a
  94.    sequence of drawing commands that set the font, colours and a draw text
  95.    command, or, finally, as an internal format containing the raw data
  96.    structure used by the package.
  97.    When transferring data between applications, only those that recognise the
  98.    format name string will be able to use that format of data. Typically, an
  99.    application places data in the clipboard in multiple formats for maximum
  100.    portability across applications.
  101.  */
  102. class PClipboard : public PObject
  103. {
  104.   PCLASSINFO(PClipboard, PObject);
  105.   public:
  106.    /**Create a clipboard object to allow access to the system clipboard. As
  107.        the clipboard is a system resource, it can only be accessed by one
  108.        user at a time. This locking mechanism is made based on the interactor.
  109.        Only one interactor can "own" the clipboard at any given time. The
  110.        destruction of this object releases the lock.
  111.      */
  112.     PClipboard(
  113.       const PInteractor * owner  /// The interactor that "owns" the clipboard.
  114.     );
  115.    /**End access to the system clipboard deleting the clipboard object. It is
  116.        very important that the clipboard object is destroyed as this releases
  117.        the lock on the clipboard preventing access by any other user, even in
  118.        other applications.
  119.      */
  120.     ~PClipboard();
  121.   /**@name New functions for class */
  122.    /**Determine if the clipboard was already in use. If this returns TRUE
  123.        then all other clipboard functions will fail.
  124.        @return
  125.        TRUE if clipboard cannot be used.
  126.      */
  127.     BOOL InUse();
  128.    /**Pre-defined formats for data that may be stored or transferred in the
  129.        clipboard. There are individual functions available to access each type
  130.        of data in the correct format.
  131.      */
  132.     enum Format {
  133.       /// Simple lines of text
  134.       Text,    
  135.       /// Pixel image
  136.       Image,   
  137.       /// Picture image
  138.       Picture, 
  139.       NumFormats
  140.     };
  141.    /**Determine if there is data in the clipboard of the specified format.
  142.        @return
  143.        TRUE if data can be retrieved in the required format.
  144.      */
  145.     BOOL HasFormat(
  146.       Format fmt    /// Format type identifier to check for.
  147.     );
  148.    /**Determine if there is data in the clipboard of the specified format.
  149.        @return
  150.        TRUE if data can be retrieved in the required format.
  151.      */
  152.     BOOL HasFormat(
  153.       const PString & fmt    /// Format type name string to check for.
  154.     );
  155.    /**Get the size of the data in the clipboard for the specifed format. This
  156.        is for the generic data format as the pre-defined format data operations
  157.        inherently know the size of the data being transferred.
  158.        @return
  159.        size in bytes of the data.
  160.      */
  161.     DWORD GetSize(
  162.       const PString & fmt    /// Format type name string to check for.
  163.     );
  164.    /**Get the data from the clipboard to the specified memory block. The size
  165.        of the memory block must be greater than or equal to the length of the
  166.        data in the clipboard.
  167.        This function will fail if the clipboard was already in use when the
  168.        object was constructed.
  169.        @return
  170.        TRUE if the data was completely copied.
  171.      */
  172.         BOOL GetData(
  173.       const PString & fmt,   /// Format type name string to check for.
  174.       void * data,           /// Pointer to memory to receive the data.
  175.       DWORD max              /// Size of the block of memory.
  176.     );
  177.    /**Set the data in the clipboard to the data specified by the memory block
  178.        and length.
  179.        The previous contents of the clipboard is lost on the first call to
  180.        SetData for a particular clipboard object. Further calls to data setting
  181.        functions will add the new format to the clipboard and not lose the
  182.        previously set data. Once the PClipboard object is destroyed the next
  183.        construction resets this mechanism so that data is lost once more.
  184.        This function will fail if the clipboard was already in use when the
  185.        object was constructed.
  186.        @return
  187.        TRUE if the data was completely copied.
  188.      */
  189.     BOOL SetData(
  190.       const PString & fmt,   /// Format type name string to check for.
  191.       const void * data,     /// Pointer to memory block to transfer.
  192.       DWORD len              /// Number of bytes to transfer to clipboard.
  193.     );
  194.    /**Get the data from the clipboard as a string if it is available in the
  195.        {it Text} format.
  196.        This function will fail, returning an empty string, if the clipboard was
  197.        already in use when the object was constructed.
  198.        @return
  199.        String that was in the clipboard or empty string if the clipboard data
  200.        was not available in this format.
  201.      */
  202.          PString GetText();
  203.    /**Set the data in the clipboard to the text specified by the string in the
  204.        {it Text} format.
  205.        The previous contents of the clipboard is lost on the first call to
  206.        SetText for a particular clipboard object. Further calls to data setting
  207.        functions will add the new format to the clipboard and not lose the
  208.        previously set data. Once the PClipboard object is destroyed the next
  209.        construction resets this mechanism so that data is lost once more.
  210.        This function will fail if the clipboard was already in use when the
  211.        object was constructed.
  212.        @return
  213.        TRUE if the data was copied.
  214.      */
  215.     BOOL SetText(
  216.       const PString & str  /// New text to place in the clipboard.
  217.     );
  218.    /**Get the data from the clipboard as a pixel image if it is available in
  219.        the {it Pixels} format.
  220.        This function will fail, returning an empty image, if the clipboard was
  221.        already in use when the object was constructed.
  222.        @return
  223.        String that was in the clipboard or an empty (1 bit) image if the
  224.        clipboard data was not available in this format.
  225.      */
  226.     PPixelImage GetPixels();
  227.    /**Set the data in the clipboard to the pixel image specified in the
  228.        {it Pixels} format.
  229.        The previous contents of the clipboard is lost on the first call to
  230.        SetPixels for a particular clipboard object. Further calls to data
  231.        setting functions will add the new format to the clipboard and not lose
  232.        the previously set data. Once the PClipboard object is destroyed the
  233.        next construction resets this mechanism so that data is lost once more.
  234.        This function will fail if the clipboard was already in use when the
  235.        object was constructed.
  236.        @return
  237.        TRUE if the data was copied.
  238.      */
  239.     BOOL SetPixels(
  240.       const PPixelImage & img   /// Pixel image to place into the clipboard.
  241.     );
  242.    /**Get the data from the clipboard as a picture image if it is available in
  243.        the {it Picture} format.
  244.        This function will fail, returning an empty image, if the clipboard was
  245.        already in use when the object was constructed.
  246.        @return
  247.        String that was in the clipboard or an empty image if the clipboard
  248.        data was not available in this format.
  249.      */
  250.     PPictImage GetPict();
  251.    /**Set the data in the clipboard to the picture image specified in the
  252.        {it Picture} format.
  253.        The previous contents of the clipboard is lost on the first call to
  254.        SetPict for a particular clipboard object. Further calls to data setting
  255.        functions will add the new format to the clipboard and not lose the
  256.        previously set data. Once the PClipboard object is destroyed the next
  257.        construction resets this mechanism so that data is lost once more.
  258.        This function will fail if the clipboard was already in use when the
  259.        object was constructed.
  260.        @return
  261.        TRUE if the data was copied.
  262.      */
  263.     BOOL SetPict(
  264.       const PPictImage & pic  /// Picture image to place into the clipboard.
  265.     );
  266.   protected:
  267.     /** The interactor that "owns" the open clipboard. */
  268.     const PInteractor * owner;
  269. #ifdef DOC_PLUS_PLUS
  270. };
  271. #endif
  272. // Class declaration continued in platform specific header file ///////////////