我有一个程序可以通过BitBlt
. 我今天测试它,发现当屏幕区域包含 Windows Media Player 的部分时,这些部分是灰色的。该区域的其余部分成功复制到位图。
这是我用来捕获屏幕的一部分的代码片段:
HDC hdc = ::GetDC(NULL); // get the desktop device context
HDC hDest = CreateCompatibleDC(hdc); // create a device context to use
// set the height and width of the region
int height = 800;
int width = 600;
// create a bitmap
HBITMAP hbDesktop = CreateCompatibleBitmap(hdc, width, height);
// use the previously created device context with the bitmap
SelectObject(hDest, hbDesktop);
// copy from the desktop device context (x=100,y=100) to the bitmap device context
BitBlt(hDest, 0, 0, width, height, hdc, 100, 100, SRCCOPY);
此代码片段从屏幕点 (100, 100) 开始捕获尺寸为 800x600 的屏幕区域。
我把播放电影的媒体播放器放在这个区域的某个地方,当我进入输出位图时,它是一个灰色区域,而不是电影播放器的内容。
我想知道如果BitBlt
它包含电影播放器,是否有可能是一个屏幕区域?是因为媒体播放器在屏幕上显示的内容与其他 Windows 应用程序不同吗?