• 剪贴板(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

                               LPCTSTR pmem= (LPCTSTR)GlobalLock(hmem);

                               if (pmem)

                               {

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

                        

                                        //关闭剪贴板

                                        CloseClipboard();

                                        GlobalUnlock(hmem);

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

                                        m_edt_cs=sc;

                                        UpdateData(false);

                               }

                              

                               }

                       

             }

     

  • 相关阅读:
    velocity masterplate 第一个程序的运行
    java 关于集合框架
    java 关于>>>位运算
    QCA wifi驱动强制为HT40
    Linux内核调试方法的总结(转载)
    移动端利用webkitbox水平垂直居中
    Under Construction to Beta
    网站自动备份
    writely 邀请?
    Google Carlendar coming ?
  • 原文地址:https://www.cnblogs.com/15157737693zsp/p/3839941.html
Copyright © 2020-2023  润新知