为什么在这里需要这个花括号?谁能解释我为什么会这样?

KAoTI

我正在编写代码以制作屏幕截图并将其保存为JPEG文件类型。我找到了这段代码,但是我不明白为什么之后删除花括号时它给我一个错误GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);

完整代码:

void gdiscreen()
{
    using namespace Gdiplus;
    GdiplusStartupInput gdiplusStartupInput;
    ULONG_PTR gdiplusToken;
    GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
    {
        HDC scrdc, memdc;
        HBITMAP membit;
        scrdc = ::GetDC(0);
        int Height = GetSystemMetrics(SM_CYSCREEN);
        int Width = GetSystemMetrics(SM_CXSCREEN);
        memdc = CreateCompatibleDC(scrdc);
        membit = CreateCompatibleBitmap(scrdc, Width, Height);
        HBITMAP hOldBitmap = (HBITMAP)SelectObject(memdc, membit);
        BitBlt(memdc, 0, 0, Width, Height, scrdc, 0, 0, SRCCOPY);
        Gdiplus::Bitmap bitmap(membit, NULL);
        CLSID clsid;
        GetEncoderClsid(L"image/jpeg", &clsid);
        bitmap.Save(L"screen.jpeg", &clsid);
        SelectObject(memdc, hOldBitmap);
        DeleteObject(memdc);
        DeleteObject(membit);
        ::ReleaseDC(0, scrdc);
    }
    GdiplusShutdown(gdiplusToken);
}

有人可以向我解释为什么需要花括号吗?

当我移除花括号时,出现以下错误:

Exception produced in 0x661AF6B8 (GdiPlus.dll) in DebugScreenShotModule.exe: 0xC0000005: Access violation when reading location 0x029E12AC.
1201程序警报

Gdiplus::Bitmap bitmap在花括号内声明了一个变量它将在结束时被销毁}如果没有大括号,它不会被破坏,直到之后 GdiplusShutdown被调用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Java

谁能解释这个美元符号在这里意味着什么?

来自分类Dev

谁能解释我为什么在此代码中使用花括号“ {}”?

来自分类Dev

为什么红宝石在这里需要括号?

来自分类Dev

为什么在这里需要花括号?

来自分类Dev

为什么在这里需要锁?

来自分类Dev

为什么在这里需要静态?

来自分类Dev

为什么在这里需要分号?

来自分类Dev

为什么在这里需要'break;'?

来自分类Dev

为什么我在这里不需要SFINAE

来自分类Javascript

谁能解释为什么我在这个leetcode问题上得到未定义的输出?

来自分类Dev

谁能解释为什么这个递归函数会崩溃?

来自分类Dev

为什么括号符号在这里不起作用?

来自分类Dev

为什么在这里必须使用括号?

来自分类Dev

Objective-C,为什么我需要在这里而不是在这里放星号

来自分类Dev

为什么我的座标标高不对,谁能解释我

来自分类Dev

为什么在这里需要类型注释?

来自分类Dev

为什么在这里似乎需要分号?

来自分类Dev

为什么在这里需要类型注释?

来自分类Dev

为什么在这里需要立即执行?

来自分类Dev

为什么在这里需要显式强制转换

来自分类Dev

为什么在这里需要Queue.join()?

来自分类Dev

谁能解释,为什么我的分类不能正常工作?

来自分类Dev

谁能解释我为什么在SQLite数据库中需要此KEY_ID?

来自分类Dev

谁能解释为什么我们需要在SpriteKit中进行缩放?

来自分类Python

为什么我在这里得到零除错误?

来自分类Dev

为什么我在这里出现细分错误

来自分类Mysql

为什么我在这里通过使用组?

来自分类Dev

为什么我在这里得到ClassCastException?

来自分类Dev

为什么我在这里“因超时而被终止”?

Related 相关文章

热门标签

归档