相关疑难解决方法(0)

使用GetLastError()== 6重复调用CreateCompatibleBitmap()最终失败

我有一个程序,每秒拍摄一次屏幕截图并计算屏幕的平均颜色.但是,经过约45分钟的跑步,我的支票 if ((OffscrBmp = CreateCompatibleBitmap(bitmapDC, nScreenWith, nScreenHeight)) == NULL)

开始回来了true.一个GetLastError()回复的电话6,虽然我似乎无法找到任何关于这意味着什么的文件.

为什么数千次调用此函数的工作正常,然后突然每次调用失败?

这是我的整个功能:

COLORREF ScreenColourCapture::getScreenColour() {
    // Most of this is adapted from http://www.cplusplus.com/forum/beginner/25138/
    LPBITMAPINFO lpbi = NULL;
    HBITMAP OffscrBmp = NULL;
    HDC OffscrDC = NULL;
    int nScreenWidth = GetSystemMetrics(SM_CXSCREEN);
    int nScreenHeight = GetSystemMetrics(SM_CYSCREEN);
    HDC bitmapDC = CreateCompatibleDC(0);
    HBITMAP hBmp = CreateCompatibleBitmap(GetDC(0), nScreenWidth, nScreenHeight);
    SelectObject(bitmapDC, hBmp);
    BitBlt(bitmapDC, 0, 0, nScreenWidth, nScreenHeight, GetDC(0), 0, 0, SRCCOPY);
    if ((OffscrBmp = CreateCompatibleBitmap(bitmapDC, nScreenWidth, nScreenHeight)) == NULL) {
        int …
Run Code Online (Sandbox Code Playgroud)

c++ winapi

3
推荐指数
1
解决办法
700
查看次数

标签 统计

c++ ×1

winapi ×1