Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/126.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在某些情况下,BitBlt仅复制部分数据_C++_Winapi_Gdi_Bitblt - Fatal编程技术网

C++ 在某些情况下,BitBlt仅复制部分数据

C++ 在某些情况下,BitBlt仅复制部分数据,c++,winapi,gdi,bitblt,C++,Winapi,Gdi,Bitblt,这是一个奇怪的问题,我已经阅读了BitBlt函数的文档,它在大多数情况下都可以正常工作,但是如果我尝试从偏移量远大于目标值的源矩形复制数据,它就会失败(只复制了一部分,甚至没有复制)。。。奇怪??以下是一些示例: 这是我使用的代码,结果取决于我传递的参数。 位图的宽度为m\u iTileAreaWidth+2*m\u iTileAreaMargin,高度为m\u iTileAreaHeight+2*m\u iTileAreaMargin BOOL bBltOk = ::BitBlt(_hdcDe

这是一个奇怪的问题,我已经阅读了BitBlt函数的文档,它在大多数情况下都可以正常工作,但是如果我尝试从偏移量远大于目标值的源矩形复制数据,它就会失败(只复制了一部分,甚至没有复制)。。。奇怪??以下是一些示例:

这是我使用的代码,结果取决于我传递的参数。 位图的宽度为
m\u iTileAreaWidth+2*m\u iTileAreaMargin
,高度为
m\u iTileAreaHeight+2*m\u iTileAreaMargin

BOOL bBltOk = ::BitBlt(_hdcDest, 0, 0, m_iTileAreaWidth, m_iTileAreaHeight,
                       hdcSource, m_iTileAreaMargin, m_iTileAreaMargin, SRCCOPY);
如果
m_-iTileAreaMargin
600
m_-iTileAreaWidth
m_-iTileAreaHeight
均为200,则复制源区域的130px

如果
m_-iTileAreaMargin
500
m_-iTileAreaWidth
m_-iTileAreaHeight
均为200,则复制完整的

如果
m_-iTileAreaMargin
800
m_-iTileAreaWidth
m_-iTileAreaHeight
均为200,则复制none源区域

嗯,我确信整个区域都是生成的-当我使用此代码时:

bBltOk = ::BitBlt(_hdcDest, 0, 0, rcScreen.Widht(), rcScreen.Height(),
                  _hdcSource, 0, 0,SRCCOPY);
然后我看到整个区域生成


有人知道为什么我在使用如此简单的函数时会遇到这样的问题吗?

问题已经解决,但仍然存在一些疑问。问题是源位图(或hdc,无法访问某些内部文件)未配置为保存所有必需的数据(大小太小)


错误在于我能够复制整个区域并获得有效数据,但当尝试仅复制部分(即使是已经在整个区域中的部分)时,我得到了空数据。

源位图有多大?源位图为1400x1400(或更大),具体取决于所述参数(宽度/高度)所以足够存储所有必需的数据…我认为您需要发布位图创建代码。也许您在源上下文上设置了一个剪切区域或其他什么?现在还没有剪切区域,但是发生了一些奇怪的事情,也许您可能很熟悉,或者告诉我在哪里搜索解决方案:当我复制整个源区域时,我甚至在中心部分也得到了有效的数据,但如果我尝试只复制中心部分(使用计算的dx,dy)只复制了其中的一部分。我无法访问源文件的整个位图/hdc创建,只有我的目标文件可以完全访问。