现在的位置: 首页 > 综合 > 正文

Windows API一日一练(85)OpenClipboard函数

2013年10月24日 ⁄ 综合 ⁄ 共 1345字 ⁄ 字号 评论关闭
多个软件之间进行数据共享是非常重要的,难以想像编辑软件没有CTRL+CCTRL+V的功能,是多么的不方便。很多的操作,就是拷贝的动作,就是为了数据共享。剪贴板共享是Windows里比较重要的功能,比如很多采集数据的软件为了方便导数据到Excel里面,就可以使用剪贴板的功能。还有即见即所得的界面导到Word里面,也可以使用剪贴板的功能。
 
函数OpenClipboard声明如下:
 
WINUSERAPI
BOOL
WINAPI
OpenClipboard(
    __in_opt HWND hWndNewOwner);
hWndNewOwner是前贴板所属于的窗口。
 
调用函数的例子如下:
#001 //拷贝数据到剪贴板。
#002  //蔡军生 2007/12/09 QQ:9073204 深圳
#003  void TestClipBoard(void)
#004  {
#005         //打开剪贴板并清空。
#006        if (OpenClipboard(m_hWnd) &&
#007               EmptyClipboard())
#008         {
#009               //
#010               HGLOBAL hMem;
#011               std::wstring strText(_T("拷贝数据到剪贴板"));
#012              
#013               //分配全局内存。
#014               hMem = GlobalAlloc(GMEM_MOVEABLE,
#015                    (strText.length() + 1) * sizeof(TCHAR));
#016               if (hMem == NULL)
#017               {
#018                    CloseClipboard();
#019                    return;
#020               }   
#021 
#022               //拷贝数据到剪贴板内存。
#023               LPTSTR lpStr = (LPTSTR)GlobalLock(hMem);
#024               memcpy(lpStr, strText.c_str(),
#025                    strText.length() * sizeof(TCHAR));
#026               lpStr[strText.length()] = (TCHAR) 0;
#027               GlobalUnlock(hMem);
#028 
#029               //设置数据到剪贴板
#030               SetClipboardData(CF_UNICODETEXT, hMem);
#031 
#032               //关闭剪贴板。
#033               CloseClipboard();
#034         }
#035  }
#036 
 

 

抱歉!评论已关闭.