为什么我在这里需要这个花括号?谁能解释我为什么会这样?
Why do i need this curly braces here? Can anybody explain me why does this happens?
我正在编写代码来制作屏幕截图并将其保存为 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.
您在大括号内声明了一个变量 Gdiplus::Bitmap bitmap
。它将在结束时销毁 }
。如果没有花括号,它不会被销毁,直到 after GdiplusShutdown
被调用。
我正在编写代码来制作屏幕截图并将其保存为 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.
您在大括号内声明了一个变量 Gdiplus::Bitmap bitmap
。它将在结束时销毁 }
。如果没有花括号,它不会被销毁,直到 after GdiplusShutdown
被调用。