Por que preciso dessas chaves aqui? Alguém pode me explicar por que isso acontece?

KAoTI

Estou criando um código para fazer uma captura de tela e salvá-la em um tipo de arquivo JPEG. Encontrei este trecho de código, mas não entendo por que me dá um erro quando removo as chaves depois GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);.

Código completo:

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);
}

Alguém pode me explicar porque eu preciso das chaves?

E quando removo as chaves, ocorre o seguinte erro:

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

Você tem uma variável Gdiplus::Bitmap bitmapdeclarada entre chaves. Ele será destruído no fechamento }. Sem as chaves, ele não será destruído até depois GdiplusShutdown é chamado.

Este artigo é coletado da Internet.

Se houver alguma infração, entre em [email protected] Delete.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

Alguém pode explicar por que isso não funciona?

Alguém pode me explicar por que usamos chaves "{}" neste código?

Alguém pode me explicar o que está acontecendo aqui? Chama D, B, C, A. Você pode fornecer como isso acontece

por que eu preciso das chaves aqui?

por que eu preciso das chaves aqui?

Javascript: objetos e funções ... Alguém pode explicar por que isso não funciona?

JavaScript: alguém pode fazer isso funcionar ou explicar por que não funciona?

Alguém pode explicar por que isso se mais em Python não estiver funcionando

alguém pode explicar por que isso retorna o valor "else" e não o valor "then"?

Alguém pode me explicar por que esse segundo método não atualiza totalmente a string?

Alguém pode explicar por que precisamos escalar no SpriteKit?

Por que essa afirmação é falsa? Alguém pode explicar

Alguém pode explicar por que recebo ConcurrentModificationException

Alguém pode explicar por que recebo essas saídas?

Alguém pode me explicar por que o sub () / gsub () do awk funciona assim?

Reatribuindo variável global em JavaScript - alguém pode me explicar por que currentAcc permanece indefinido

Alguém pode me explicar por que essa saída é dada?

alguém pode me explicar por que as seguintes funções de duas setas são equivalentes?

Por que a elevação está errada para minhas coordenadas, alguém pode me explicar

alguém pode me explicar por que 1 argumento posicional esperado, mas 0 encontrado

Alguém pode me explicar por que esse código não funciona?

Alguém pode me explicar por que esse código lisp não funciona?

Alguém pode me explicar por que não consigo retornar um ponteiro inteligente?

Alguém pode explicar por que isso funciona para contar bits definidos em um inteiro sem sinal?

Alguém pode me dizer por que isso não funciona? (seletor de nó javascript html)

RODBC-Alguém pode me dizer por que isso não funciona?

Alguém pode me dizer por que isso não está criando um quadrado?

Alguém pode me dizer por que isso ocorre erro de sintaxe do MySQL?

Eu sou novo no React, alguém pode me dizer por que isso está acontecendo ...?

TOP lista

quentelabel

Arquivo