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

  • 问题

  • 我的应用程序是一个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);

    不知道该如何解决这个问题,从哪里入手呢?

    2018年6月5日 8:58

全部回复

  • Hi,

    感谢在MSDN论坛发帖。

    >>我的应用程序是一个OLE容器,可以把Excel或者Word文档复制后粘贴进来。
    但是发现一个奇怪的现象,就是当拷贝的内容比较多时,拷贝过来只能显示一部分。

    你有没有检查过你的长款属性是否正确,以及你的写字板或者应用程序的DC长宽是否足够?

    Best Regards,

    Baron Bi


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2018年6月7日 6:13
  • 长宽都是正常的,值都在1200左右。他们通过这样的方式获得:

    SIZE size;
    pItem->GetExtent(&size,  DVASPECT_CONTENT);

    在我的应用程序里,我就是创建了一个CImage(长*宽),然后绘制到CImage上。

    当然,我也尝试过直接会知道我的目标DC上,结果都是一样的。

    这个Size如果我把宽度*2,粘贴出来的效果就是按比例缩放而已,并不会显示出右侧的内容。


    2018年6月7日 8:42