OLE粘贴,当数据量稍微大一点,只能显示一部分

weixin_38059994 2018-06-05 08:58:32
我的应用程序是一个OLE容器,可以把Excel或者Word文档复制后粘贴进来。
但是发现一个奇怪的现象,就是当拷贝的内容比较多时,拷贝过来只能显示一部分。
在Excel中是这样的:

然后复制,粘贴到我的应用程序,就变成了这样:

然后我尝试拷贝到写字板和Word(Office2016)中,发现写字板也会出现这样的问题,但是word正常。
写字板中是这样的:

在word中就正常了:

代码大致如下:
CImage img;
img.Create(nActWidth, nActHeight, 32);
HDC temDC = img.GetDC();
CRect rcImage;
rcImage.left = rcImage.top = 0;
rcImage.right = nActWidth;
rcImage.bottom = nActHeight;

HBRUSH hBackBrush = ::CreateSolidBrush(RGB(255,255,255));
::FillRect(temDC, &rcImage, hBackBrush);
::DeleteObject(hBackBrush);

HRESULT hr = OleDraw(m_lpViewObject, DVASPECT_CONTENT, temDC, &rcImage);

不知道该如何解决这个问题,从哪里入手呢?
...全文
38 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38080355 2018-06-07
  • 打赏
  • 举报
回复
长宽都是正常的,值都在1200左右。他们通过这样的方式获得:
SIZE size; pItem->GetExtent(&size, DVASPECT_CONTENT);
在我的应用程序里,我就是创建了一个CImage(长*宽),然后绘制到CImage上。

当然,我也尝试过直接会知道我的目标DC上,结果都是一样的。
这个Size如果我把宽度*2,粘贴出来的效果就是按比例缩放而已,并不会显示出右侧的内容。


weixin_38065454 2018-06-07
  • 打赏
  • 举报
回复
Hi,
感谢在

476

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧