MFC怎样将客户区内容以图片格式写入到剪贴板 我做了个MFC单文档程序,在客户区显示文字和表格,我想通过鼠标选中窗口客户区的文字和表格,右键“复制”(或者“编辑”-“复制”),然后粘贴到Word中,该怎样实现?高手帮帮忙,最好能给出代码,谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 CDC *pDC = GetDC(); CBitmap bmpTemp; BITMAPINFO bitmapinfo = { 0 }; void *pbuffer = NULL; bitmapinfo.bmiHeader.biSize = sizeof(BITMAPINFOHEADER); bitmapinfo.bmiHeader.biWidth = rcOrg.Width(); bitmapinfo.bmiHeader.biHeight = rcOrg.Height(); bitmapinfo.bmiHeader.biPlanes = 1; bitmapinfo.bmiHeader.biBitCount = 24; HBITMAP bitmap = CreateDIBSection(pDC->GetSafeHdc(), &bitmapinfo, DIB_RGB_COLORS, (LPVOID *)&pbuffer, NULL, 0); if(bitmap == NULL || pbuffer == NULL) { TRACE("CreateDIBSection failed\n");; return; } bmpTemp.Attach(bitmap); 把下列代码放到按钮事件里: CClientDC dc(this); CDC cMemDC; CBitmap cBit,*pOldBP; RECT rect; cMemDC.CreateCompatibleDC(&dc); GetClientRect(&rect); cBit.CreateCompatibleBitmap(&dc,rect.right - rect.left,rect.bottom - rect.top); pOldBP = cMemDC.SelectObject(&cBit); cMemDC.BitBlt(0,0,rect.right - rect.left,rect.bottom - rect.top,&dc,0,0,SRCCOPY); cMemDC.SelectObject(pOldBP); //把兼容位图放到剪贴板 if (OpenClipboard() ) { EmptyClipboard(); SetClipboardData(CF_BITMAP,cBit.m_hObject); CloseClipboard(); } 这段代码要放到CXXXView::OnDraw()里面吗?我这样做,运行错误 “error C2065: “rcOrg”: 未声明的标识符”“error C2228: “.Width”的左边必须有类/结构/联合”是什么原因,我真的很菜,希望大家能多多指点,在此谢过了!十分感谢! 提升程序权限 删除函数问题 ActiveX控件事件响应的问题。请帮忙,谢谢啦! 程序中怎样调用外部程序的? 在下写的一个绚丽多彩的3D花篮,现在公布源代码,希望和大家共同切磋交流:) 如何在一个本来不支持MFC的SDK程序中加入对MFC的支持? ★★★我想用ATL做个ASP网页用的DLL,请问如何接收FORM传来的数据 vc编译中工程路径问题- 请高手相助 ========共享软件的注册机制?========= C++ 调用Matlab动态链接库画图出问题 安装了VS2010 express,VC里面找不到连接sqlce的头文件,这是什么问题? 能否让多个窗口同时响应鼠标消息
CDC *pDC = GetDC();
CBitmap bmpTemp;
BITMAPINFO bitmapinfo = { 0 };
void *pbuffer = NULL; bitmapinfo.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
bitmapinfo.bmiHeader.biWidth = rcOrg.Width();
bitmapinfo.bmiHeader.biHeight = rcOrg.Height();
bitmapinfo.bmiHeader.biPlanes = 1;
bitmapinfo.bmiHeader.biBitCount = 24;
HBITMAP bitmap = CreateDIBSection(pDC->GetSafeHdc(), &bitmapinfo,
DIB_RGB_COLORS, (LPVOID *)&pbuffer, NULL, 0);
if(bitmap == NULL || pbuffer == NULL)
{
TRACE("CreateDIBSection failed\n");;
return;
}
bmpTemp.Attach(bitmap);
CDC cMemDC;
CBitmap cBit,*pOldBP;
RECT rect; cMemDC.CreateCompatibleDC(&dc);
GetClientRect(&rect);
cBit.CreateCompatibleBitmap(&dc,rect.right - rect.left,rect.bottom - rect.top);
pOldBP = cMemDC.SelectObject(&cBit);
cMemDC.BitBlt(0,0,rect.right - rect.left,rect.bottom - rect.top,&dc,0,0,SRCCOPY);
cMemDC.SelectObject(pOldBP);
//把兼容位图放到剪贴板
if (OpenClipboard() )
{
EmptyClipboard();
SetClipboardData(CF_BITMAP,cBit.m_hObject);
CloseClipboard();
}
这段代码要放到CXXXView::OnDraw()里面吗?我这样做,运行错误 “error C2065: “rcOrg”: 未声明的标识符”“error C2228: “.Width”的左边必须有类/结构/联合”
是什么原因,我真的很菜,希望大家能多多指点,在此谢过了!
十分感谢!