操作剪贴板

剪贴板:

一、将数据送到剪贴板

    <1>、内存配置

          HGLOBAL  hGlobal ;

          hGlobal = GlobalAlloc (GHND | GMEM_SHARE,(lstrlen (pText) + 1) * sizeof (TCHAR)) ;

         为什么不用malloc: 在Windows中执行的应用程序之间必须要共享剪贴簿所储存的内存块

    <2>、锁定刚分配的内存

          PTSTR    pGlobal ;

          pGlobal =  (TCHAR*)GlobalLock (hGlobal);

          为什么要锁定?Windows将固定虚拟内存中的地址,不再移动那块内存

    <3>、写入数据

          lstrcpy (pGlobal, pText) ;

    <4>、解锁定

          GlobalUnlock (hGlobal) ;
         
          这将使Windows可以在虚拟内存中移动内存块.(不要把锁定的内存句柄交给剪贴簿)

    <5>、打开剪贴簿并把它清空

         OpenClipboard () ;
       
         EmptyClipboard () ;

    <6>、利用CF_TEXT标识符把内存句柄交给剪贴簿,关闭剪贴簿:

         SetClipboardData (CF_TEXT, hGlobal) ;
       
         CloseClipboard () ;

二、从剪贴簿获取数据

   <1>、打开剪贴簿
  
             OpenClipboard () ;

   <2>、确定剪贴簿是否含有文字

            HGLOBAL  hGlobal ;

            if( hGlobal = GetClipboardData(CF_TEXT) )
     {

            }
            如果hGlobal为NULL则说明 剪贴簿中没有文字. 得到的句柄并不属于使用者程序-它属于剪贴簿

   <3>、锁定剪贴簿

            PTSTR    pGlobal ;

            pGlobal =  (TCHAR*)GlobalLock (hGlobal);

   <4>、配置一块与剪贴簿数据块大小相同的内存块,并配置一个指向该块的指标:
       
             PTSTR    pText;

             pText = (TCHAR*) malloc (GlobalSize (hGlobal)) ;


   <5>、读出数据
          
             lstrcpy (pText, pGlobal) ;

   <6>、解锁定

            GlobalUnlock (hGlobal) ;

   <7>、关闭剪贴簿

           CloseClipboard () ;

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值