VC复制HTML格式到剪贴板 HTML Clipboard Format
来源:互联网 发布:中高级java面试题 编辑:程序博客网 时间:2024/06/11 03:43
本文作者:无幻
测试环境:Windows 7
开发环境:Visual Studio 2008 SP1
entry 1 entry 2
测试环境:Windows 7
开发环境:Visual Studio 2008 SP1
参照MSDN和帮助,在VC下测试代码如下:
C++语言:
BOOL CBaseDialogDlg::CopyHtmlToClip( const CString &strHtml )
{
// 1)转换成UTF-8
CW2A pszU8(CT2W(strHtml), CP_UTF8);
int nHtmlSrcLen = strlen(pszU8);
// 2)组成剪贴板片段
CStringA strHtmlClip;
strHtmlClip.Format("Version:0.9\r\n"
"StartHTML:%08u\r\n"
"EndHTML:%08u\r\n"
"StartFragment:%08u\r\n"
"EndFragment:%08u\r\n"
"<html><body>\r\n"
"<!--StartFragment -->\r\n"
"%s\r\n"
"<!--EndFragment-->\r\n"
"</body></html>",
97, 172 + nHtmlSrcLen, 111, 136 + nHtmlSrcLen, pszU8);
// 3)剪贴板操作
static int cfid = 0;
if(!cfid)
{
cfid = RegisterClipboardFormat(_T("HTML Format"));
}
if (!OpenClipboard())
{
return false;
}
if (!EmptyClipboard())
{
CloseClipboard();
return false;
}
HGLOBAL hClipBuffer = GlobalAlloc(GMEM_DDESHARE, strHtmlClip.GetLength() + 1);
if (hClipBuffer == NULL)
{
CloseClipboard();
return false;
}
char *lpExpBuffer = (char *)GlobalLock(hClipBuffer);
if (lpExpBuffer == NULL)
{
GlobalFree(hClipBuffer);
CloseClipboard();
return false;
}
memcpy(lpExpBuffer, strHtmlClip, strHtmlClip.GetLength());
lpExpBuffer[strHtmlClip.GetLength()] = '\0';
GlobalUnlock(hClipBuffer);
SetClipboardData(cfid, hClipBuffer);
CloseClipboard();
return TRUE;
}
调用方式:{
// 1)转换成UTF-8
CW2A pszU8(CT2W(strHtml), CP_UTF8);
int nHtmlSrcLen = strlen(pszU8);
// 2)组成剪贴板片段
CStringA strHtmlClip;
strHtmlClip.Format("Version:0.9\r\n"
"StartHTML:%08u\r\n"
"EndHTML:%08u\r\n"
"StartFragment:%08u\r\n"
"EndFragment:%08u\r\n"
"<html><body>\r\n"
"<!--StartFragment -->\r\n"
"%s\r\n"
"<!--EndFragment-->\r\n"
"</body></html>",
97, 172 + nHtmlSrcLen, 111, 136 + nHtmlSrcLen, pszU8);
// 3)剪贴板操作
static int cfid = 0;
if(!cfid)
{
cfid = RegisterClipboardFormat(_T("HTML Format"));
}
if (!OpenClipboard())
{
return false;
}
if (!EmptyClipboard())
{
CloseClipboard();
return false;
}
HGLOBAL hClipBuffer = GlobalAlloc(GMEM_DDESHARE, strHtmlClip.GetLength() + 1);
if (hClipBuffer == NULL)
{
CloseClipboard();
return false;
}
char *lpExpBuffer = (char *)GlobalLock(hClipBuffer);
if (lpExpBuffer == NULL)
{
GlobalFree(hClipBuffer);
CloseClipboard();
return false;
}
memcpy(lpExpBuffer, strHtmlClip, strHtmlClip.GetLength());
lpExpBuffer[strHtmlClip.GetLength()] = '\0';
GlobalUnlock(hClipBuffer);
SetClipboardData(cfid, hClipBuffer);
CloseClipboard();
return TRUE;
}
C++语言:
void CBaseDialogDlg::OnBnClickedButton1()
{
CString str = _T("<b>This is a test.这是一个测试。</b><hr><li>entry 1<li>entry 2");
CopyHtmlToClip(str);
}
利用个剪贴板查看器,可以查看此时剪贴板的内容:{
CString str = _T("<b>This is a test.这是一个测试。</b><hr><li>entry 1<li>entry 2");
CopyHtmlToClip(str);
}
然后,Ctrl + V粘贴到博客编辑器里面,效果如下所示:
This is a test.这是一个测试。
参考资料:
1.HTML Clipboard Format http://msdn.microsoft.com/en-us/library/aa767917.aspx
2.如何使用 Visual c + + 向剪贴板添加 HTML 代码 http://support.microsoft.com/kb/274308
- VC复制HTML格式到剪贴板 HTML Clipboard Format
- 关于复制HTML源文件到剪贴板格式
- html点击复制到剪贴板
- Zero Clipboard复制到剪贴板
- clipboard.js 复制到剪贴板
- clipboard.js实现内容复制到剪贴板
- clipboard: 实现复制到剪贴板功能
- Android Clipboard(复制/剪贴板)
- Android Clipboard(复制/剪贴板)
- Android Clipboard(复制/剪贴板)
- Android Clipboard(复制/剪贴板)
- Zero Clipboard - 跨浏览器兼容的“复制到剪贴板”功能
- 使用clipboard.js实现页面内容复制到剪贴板
- clipboard.js实现无flash复制内容到剪贴板
- 使用clipboard.js实现页面内容复制到剪贴板
- Clipboard.js实现复制文本到剪贴板功能
- 使用clipboard.js实现页面内容复制到剪贴板
- 浏览器实现复制内容到剪贴板 -- clipboard.js
- 车考:移车入库
- 复旦的NLP——fudanNLP
- 虚拟机中ssh和scp的使用
- 真话比好话更有价值——李彦宏的移动互联网七论(演讲全文)
- 如何批量删除WORD中的制表符
- VC复制HTML格式到剪贴板 HTML Clipboard Format
- Fedora17-64位-安装oracle.11g2
- C++学习路线
- 黑马程序员-Java语言基础 第3天
- 火星探险者机器人原型项目
- 修改WampServer的默认端口
- 求集合的幂集
- 今天对我自己做的事的总结
- javaIO流总结