Abstract:
A method for saving sections of a document ( 10 ) to random access memory without overwriting previously saved sections is disclosed. The method comprises the steps of selecting a first section ( 18 ) of the document at a first location in the document. The first section is copied to a clipboard ( 30 ). A second section ( 19 ) of the document at a second location in the document is selected and copied to the clipboard ( 30 ) wherein the second section ( 19 ) does not overwrite said first section on the clipboard. These saved sections are subsequently pasted to other locations in the document or to other documents.

Description:
FIELD OF THE INVENTION 
     The invention relates in general to processing of information in a computer and in particular to a method of saving sections of a document to random access memory without overwriting information previously saved. 
     BACKGROUND OF THE INVENTION 
     In processing information on a computer it is often necessary to save a section of the on-screen document and reproduce it at another location in the document. This function is know as a “copy” operation, is useful and saves retyping sections of a document. The section copied may vary in length from a few words to entire paragraphs. 
     Another commonly available function is used to remove, or “cut” a section from a document. The cut section may then be pasted at another location in the document. This function also saves processing time by eliminating the need to delete sections of a document and then retype them at a different location in the document. In both the copy operation, and the cut operation, the information is temporarily saved to a “clipboard.” 
     A limitation in both of these operations is that when a second section of the document is copied or cut, it overwrites the section currently saved on the clipboard. When a lengthy document is being revised it is often necessary to cut, copy, and paste different sections more than one time. If the section of the document on the clipboard is not what is needed at the current working location in the document, and a section that was previously copied to the clipboard is needed, the previously copied section will have to be found in the document, copied to the clipboard again, and then pasted in the appropriate section. If the section of the document that was previously on the clipboard, and which has now been overwritten, was cut from the document, it will have to be retyped. 
     A method of saving sections of a document to a clipboard without overwriting previously cut or copied sections is desirable. 
     SUMMARY OF THE INVENTION 
     An object of the present invention is to provide a method for saving sections of a document to random access memory without overwriting previously saved sections. 
     Another object of the invention is to provide a method for saving a first section of a first document to random access memory, and saving a first section of a second document to random access without overwriting previously saved sections 
     The present invention is directed to overcoming one or more of the problems set forth above. Briefly summarized, according to one aspect of the present invention, a method for saving sections of a document to random access memory without overwriting previously saved sections, comprising the steps of selecting a first section of the document at a first location in the document. The first section is copied to a clipboard. A second section of the document at a second location in the document is selected and copied to the clipboard wherein the second section does not overwrite said first section on the clipboard. These saved sections are subsequently pasted to other locations in the document or to other documents. 
     These and other aspects, objects, features, and advantages of the present invention will be more clearly understood and appreciated from a review of the following detailed description of the preferred embodiments and appended claims, and by reference to the accompanying drawings. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a schematic view of a document according to the present invention. 
     FIG. 2 is a schematic view a computer screen according to the present invention. 
     FIG. 3 is another schematic view a computer screen according to the present invention. 
     FIG. 4 is a schematic view of a computer screen according to the present inventor showing saved sections as thumbnails. 
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
     Referring to FIG. 1, a schematic view of a document  10  is shown. Document  10  is comprised of text  12 , spread sheet  14 , and image  16 . 
     A clipboard  20 , shown FIG. 3 as an icon, is the standard method of transferring data between a source and a destination in a Windows environment, a computer operating system sold by Microsoft Corporation. There are two clipboard mechanisms in Windows, the standard WIN3 clipboard API (Application Programming Interfaces), and OLE (Object Linking and Embedding) uniform data transfer (UDT) using Data Object and Data Sources. 
     When a data transfer is performed by using the clipboard, the data has a source and a destination. The source application provides the data for copying and the destination application accepts it for pasting. Applications on each side of the transfer must perform different operations on the same data for the transfer to succeed. 
     To transfer a section of a document to the clipboard, the section is selected. This is typically done by high lighting a section of text, first section  18 , as shown in FIG.  1 . Text images may be selected by using a pointing device, such as mouse, and dragging across the text with an appropriate mouse button depressed. Images may be selected by moving the on-screen pointer to the image and clicking the appropriated mouse button. The first section may be copied to the clipboard  30  by using the &lt;edit&gt; 20 , &lt;copy&gt; 22 , command, illustrated in FIG. 2, or the copy icon  32 , illustrated in FIG.  3 . 
     Currently, only one selection or cut/copy operation can be saved on the clipboard without overwriting sections previously saved. For example, if second section  19  is selected and copied, first section  18  is erased from the clipboard. To implement a method of saving sections of a document to the clipboard without overwriting previously cut/copy operations, a history of every cut/copy operation must be kept in a shared memory block. When a new cut/copy operation is made, the shared memory block will be accessed for every pre-existing cut/copy operation. The selected data will be rendered on the clipboard along with the current operation as single cut/copy operation but each of the previous operations will rendered as a different user-defined clipboard type. In one embodiment of the present invention, the following program components were used to implement a multiple cut and multiple copy feature, without overwriting previous sections saved to the clipboard. 
     1. Standard OLE Data Objects and Data Source 
     The Microsoft Foundation Class Library (MFC) provides three classes that represent each side of this transfer: 
     Data sources (as implemented by COleDataSource objects) represent the source side of the data transfer. They are created by the source application when data is to be copied to the clipboard, or when data is provided for a drag-and-drop operation. 
     Data objects (as implemented by COleDataObject objects) represent the destination side of the data transfer. They are created when the destination application has data dropped into it, or when it is asked to perform a paste operation from the clipboard. 
     COlePasteSpecialDialog class. The COlePasteSpecialDialog class is used for the OLE Paste Special  34  dialog box, shown in FIG.  3 . 
     2. Shared Memory Blocks that contains a history of every copy/copy operation performed during the application session referred to as the Clipboard Table of Contents. And shared Memory Blocks that contains data from each cut and copy operation referred to as the Clipboard Data Memory block as illustrated in FIG.  2 . 
     To copy or cut data on the clipboard the user selects the text. To put multiple selections on the clipboard the source application performs the following: 
     1. Register the selection as a new clipboard format using the RegisterClipboardFormat function and use its return value as the format ID. The name used in the RegisterClipboardFormat has the following format; N:&lt;text&gt; where n is a sequential number representing the number of times a cut or copy operation was selected, and &lt;text&gt; contains the first seventeen characters of the text selected or the word PICTURE if an image was selected. For example, if the text selected for copying was “Text to Paste” and this was the first time cut or copy was selected, the name would be “1:Text to Paste”. 
     2. Create the Clipboard Table of Contents shared memory block (created on the first cut or copy, the name of the shared memory block is CLIPTOC) or append an entry for the cut or copy operation. The table of contents shared memory block contains three elements for each entry as follows: 
     ClipboardFormatName-The name of the specified in step  1 . Length 20 Bytes 
     Format ID-The ID returned from RegisterClipboardFormat in Step  1 . Length 4 Bytes 
     ClipBoardFormat-The format of the data copied in the shared memory. For example if text was copied this entry would contain CF_TEXT. 
     3. Create the Clipboard Data Memory block that contains the selected data. The name of the Shared Memory block is the ClipboardFormatName as specified above. 
     
       
         
               
             
               
               
               
             
               
             
               
               
             
           
               
                   
               
             
             
               
                 Clipboard Table of Contents - Name CLIPTOC 
               
             
          
           
               
                   
                 Entry 1 
                   
               
               
                   
                 1:Text to Paste 
                 (ClipboardFormatName) 
               
               
                   
                 8001 
                 (User-defined clipboard format) 
               
               
                   
                 0001 
                 (Actual Clipboard Format of Data - CF_TEXT 
               
               
                   
                 Entry 2 
               
               
                   
                 . . . 
               
             
          
           
               
                 Clipboard Data Memory Block - Name 1:Text to Paste 
               
             
          
           
               
                   
                 Clipboard Data 
               
               
                   
                 Text to Paste 
               
               
                   
                   
               
             
          
         
       
     
     FIG.  2 -Shared Memory for Clipboard Operations 
     4. Call COleDataSource::DelayRenderData repeatedly for every clipboard format in which data is supplied. Pass the clipboard format specified above and a FORMATETC structure describing the data. When the data is requested, the framework will call COleDataSource::OnRenderData, which must be overridden to read the clipboard table of contents shared memory block, find the format, open the shared memory named block that contains the data, retrieve and render it. 
     To paste date into the application, the Paste Special Menu  36  option is used as illustrated in FIG. 3, which is used to paste OLE data using the OLE uniform data transfer (UDT), Data Objects, and Data Sources. 
     To display the Paste Special Dialog Box, create an object of class COlePasteSpecialDialog. After a COlePasteSpecialDialog object has been constructed, AddFormat method is used to add clipboard formats from the Clipboard Table of Contents shared memory block to the dialog box. Call this function to add the new formats created from the source application as specified above to the list of formats your application can support in a Paste Special operation. To add the formats created above access the table of contents shared memory block to get the name and clipboard type. 
     Before an application allows the user to paste data into it, all of the formats (renditions) on the clipboard must be specified. To do this the application performs the following: 
     1. Create a COleDataObject object and a FORMATETC structure. 
     2. Call the data object&#39;s AttachClipboard member function to associate the data object with the data on the clipboard. 
     3. Call the data object&#39;s BeginEnumFormats member function to start enumerating the formats available on the clipboard. Then call GetNextFormat to get all of the formats/renditions on the clipboard. 
     4. Call COleDataObject::GetData to get the selected format 
     In operation according to one embodiment of the invention shown in FIG. 4, a document  39  is shown on screen of monitor  40 . A section of the document  39  has been highlighted as described above and copied by clicking on the copy icon  32  to temporarily store the copied section in the computer clipboard  30 . In this embodiment the copied section is represented by an on-screen thumbnail  42  providing the first few words of the section copied. A second section of the document is highlighted and cut or removed from the document by clicking on the cut icon  31 . This information is represented by an onscreen thumbnail showing the first few words of the section cut from the document as thumbnail  44 . An onscreen pointer  46  is moved to a location in document  39  where text on the clipboard is to be saved. The pointer  46  is clicked at this location to establish the cursor at this document location. Onscreen pointer  46  is then moved to the appropriate thumbnail  42  or  44  and clicked on that thumbnail to add text at the appropriate location. 
     The invention has been described in detail with particular reference to certain preferred embodiments thereof, but it will be understood that variations and modifications can be effected within the spirit and scope of the invention. For example, even though the invention has been described with reference to a typewritten document, those skilled in the art will understand that document as claimed in the invention applies to images, spread sheets, databases, and other types of information handled by computers. 
     
       
         
               
             
               
               
               
             
           
               
                   
               
               
                 PARTS LIST 
               
               
                   
               
             
             
               
                   
               
             
          
           
               
                   
                 10 
                 Document 
               
               
                   
                 12 
                 Text 
               
               
                   
                 14 
                 Spread Sheet 
               
               
                   
                 16 
                 Image 
               
               
                   
                 18 
                 First Section 
               
               
                   
                 19 
                 Second Section 
               
               
                   
                 20 
                 &lt;edit&gt; 
               
               
                   
                 22 
                 &lt;copy&gt; 
               
               
                   
                 30 
                 Clipboard/Paste 
               
               
                   
                 32 
                 Copy Icon 
               
               
                   
                 33 
                 Cut Icon 
               
               
                   
                 34 
                 Paste Special 
               
               
                   
                 36 
                 Paste Special Menu 
               
               
                   
                 39 
                 Document 
               
               
                   
                 40 
                 Monitor 
               
               
                   
                 42 
                 Thumbnail 
               
               
                   
                 44 
                 Thumbnail 
               
               
                   
                 46 
                 Pointer