windows剪贴板编程

windows剪贴板编程

ID:34727103

大小:58.18 KB

页数:3页

时间:2019-03-10

windows剪贴板编程_第1页
windows剪贴板编程_第2页
windows剪贴板编程_第3页
资源描述:

《windows剪贴板编程》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Windows剪贴板编程voidCSimpleTextTransferDlg::OnBnClickedButton1()//将数据文本复制到剪贴板{//在对GlobAlloc的内存进行操作时要锁定,结束后要用GlobalUnlock解除锁定if(UpdateData()){  CStringstrData;  m_edtToClipboard.GetWindowText(strData);  //计算转换为多字节字符所需缓冲区大小  DWORDdwCharLen=::WideCharToMultiByte(CP_OEMCP,0,s

2、trData,-1,NULL,0,NULL,FALSE);  if(::OpenClipboard(NULL))  {   EmptyClipboard();   HGLOBALhClipboardData=GlobalAlloc(0,sizeof(char)*dwCharLen);//分配全局内存   char*pchData=(char*)GlobalLock(hClipboardData);   //将宽字符转换为多字节字符后送入剪贴板   ::WideCharToMultiByte(CP_OEMCP,0,strData,-

3、1,pchData,dwCharLen,NULL,FALSE);   ::SetClipboardData(CF_OEMTEXT,hClipboardData);   GlobalUnlock(hClipboardData);   CloseClipboard();  }}}voidCSimpleTextTransferDlg::OnBnClickedButton3()//将剪贴板文本在unicode工程中显示{//TODO:在此添加控件通知处理程序代码if(OpenClipboard()){  HANDLEhClipboardD

4、ata=GetClipboardData(CF_OEMTEXT);//获取剪贴板文本  char*pchData=(char*)GlobalLock(hClipboardData);  DWORDdwWcharLen=::MultiByteToWideChar(CP_ACP,0,pchData,-1,NULL,0);  WCHAR*strFromClipboard=newWCHAR[dwWcharLen];  ::MultiByteToWideChar(CP_ACP,0,pchData,-1,strFromClipboard,dw

5、WcharLen);  m_edtFromClipboard.SetWindowText(strFromClipboard);  GlobalUnlock(hClipboardData);  CloseClipboard();  deletestrFromClipboard;}}另外,在执行粘贴操作时,可对剪贴板数据进行检查BOOLIsClipboardFormatAvailable(          UINTformat);对其他类似的数据类型处理方法类似。对于自定义的数据类型,可先使用UINTRegisterClipboar

6、dFormat(          LPCTSTRlpszFormat);函数进行注册。要截获剪贴板被修改的消息,可使用函数HWNDSetClipboardViewer(          HWNDhWndNewViewer);设定接受剪贴板被更改的窗口。在该窗口过程中响应WM_DRAWCLIPBOARD消息即可进行相应处理。从vs2005以后vc工程的默认字符是宽字符,而winxp则是多字节字符(个人使用剪贴板得出的结论,未经过权威验证。)所以,如果一味用宽字符集函数处理剪贴板,则无法和其他进程正常通信。通过操作复制到剪贴板的文

7、本在程序中粘贴是乱码,而在程序中复制的文本通过windows操作粘贴到word,记事本等程序中时则只能粘贴第一个字符。所以要使用WideCharToMultiByte与MultiByteToWideChar函数进行转换。下面是这二个函数的典型用法。API函数MultiByteToWideChar  第一个参数为代码页,用GetLocaleInfo函数获取当前系统的代码页,936:简体中文,950:繁体中文  第二个参数为选项,一般用0就可以了  第三个参数为ANSI字符串的地址,这个字符串是第一个参数指定的语言的ANSI字符串(A

8、nsiString)  第四个参数为ANSI字符串的长度,如果用-1,就表示是用0作为结束符的字符串  第五个参数为转化生成的unicode字符串(WideString)的地址,如果为NULL,就是代表计算生成的字符串的长度  第六个参数为转化生成

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。