首页 > 代码库 > 剪贴板(clipboard)功能

剪贴板(clipboard)功能

一、 打开并清空剪贴板

 

二、 分配全局内存 

 

三、 向全局内存放入想要拷贝的内容

 

四、 把内容送到剪贴板

 

五、 关闭剪贴板,以使其它程序可以访问,释放掉全局内存

OpenClipboard

EmptyClipboard

GlobalAlloc

SetClipboardData

CloseClipboard

GlobalFree

 

 

 

void CMyWindowDlg::On32771()

{

         char stext[] ="QQ 150330575";

         HGLOBAL p=NULL;

         if(OpenClipboard())

         {  EmptyClipboard();

 

                  HGLOBAL hmem=GlobalAlloc(GHND,sizeof(stext));

                  char *pmem=(char*)GlobalLock(hmem);                 

                  memcpy(pmem,stext,sizeof(stext));

                  //GlobalUnlock(hmem);

                  SetClipboardData(CF_TEXT,hmem);

                  CloseClipboard();

        //memcpy(pmem,"000000",7);

                  p= GlobalFree(hmem); //释放内存空间

 

         }

 

}

 

 

/******************************************************************/

一、 判断剪贴数据格式是否是我们需要的

 

二、 打开剪贴板

 

三、 获取剪贴板句柄

 

四、 锁定全局内存获取缓冲区指针,取出数据

 

五、 关闭剪贴板,以使其它程序可以访问,释放掉内存锁

IsClipboardFormatAvailable

GetClipboardData

GlobalSize

 

 

 

void CMyWindowDlg::OnMenuPaste()

{

         // TODO: 在此添加命令处理程序代码

//一、判断剪贴数据格式是否是我们需要的

         HGLOBAL hmem=NULL;

   char s[256]="";

         if (IsClipboardFormatAvailable(CF_TEXT)) //CF_UNICODETEXT

         {

                  //二、打开剪贴板

                  if (OpenClipboard())

                  {

                           //三、获取剪贴板句柄

                   hmem=GetClipboardData(CF_TEXT);

                           if (hmem)

                           {

 

                           //四、锁定全局内存获取缓冲区指针,

                           char* ps=(char*) GlobalLock(hmem);

                           //取出数据

             memcpy(s,ps,GlobalSize(hmem));

                           }

                  }

 

         }

 

 

//五、关闭剪贴板,以使其它程序可以访问,释放掉内存锁

         CloseClipboard();

    GlobalUnlock(hmem);

         m_edt_cs=s;

         UpdateData(false);

}

 

 

//UniCode 版本

void CMyWindowDlg::OnMenuPaste()

{

         // TODO: 在此添加命令处理程序代码

         WCHAR  sc[256];    

         HGLOBAL hmem=NULL;

         if (OpenClipboard())//是否成功打开剪帖板

         {               

                           if ( IsClipboardFormatAvailable(CF_UNICODETEXT))

                           {

                                                                       

                          

                           //SetClipboardData()

                      hmem=GetClipboardData(CF_UNICODETEXT);//CF_UNICODETEXT

                           LPCTSTRpmem= (LPCTSTR)GlobalLock(hmem);

                           if (pmem)

                           {

                                    memcpy(sc,pmem,GlobalSize(hmem));

                    

                                    //关闭剪贴板

                                    CloseClipboard();

                                    GlobalUnlock(hmem);

                                    GlobalFree(hmem);//释放全局内存

                                    m_edt_cs=sc;

                                    UpdateData(false);

                           }

                          

                           }

 

                   

         }