Witamy na forum PC Format Zapraszamy do REJESTRACJI


Użytkownicy przeglądający ten wątek: 1 gości

WINAPI-Zrzut ekranu

#1
WINAPI-Zrzut ekranu
Witam!
Napisałem taki kod:
Kod:
RECT re;
    HWND window;
    HDC _dc;     
    int w, h;
    HDC dc;
    HBITMAP bm;
    HANDLE f;
    unsigned char *buf;
    HDC ddd,dc2;
    BITMAPINFO bi;
    BITMAPFILEHEADER bif;
    BITMAPINFOHEADER bii;
    DWORD r;
    window = GetDesktopWindow();
    _dc = GetWindowDC(window);
    GetWindowRect(window,&re);
    w = re.right, h = re.bottom;
    dc = CreateCompatibleDC(0);
    bm = CreateCompatibleBitmap(_dc,w,h);
    SelectObject(dc,bm);
    StretchBlt(dc,0,0,w,h,_dc,0,0,w,h,SRCCOPY);
    buf = malloc(w*h*4);
    GetObject(bm,84,buf);
    ddd = GetDC(0);
    dc2 = CreateCompatibleDC(ddd);

    //BITMAPINFO
    bi.bmiHeader.biSize = sizeof(bi.bmiHeader);
    bi.bmiHeader.biWidth = w;
    bi.bmiHeader.biHeight = h;
    bi.bmiHeader.biPlanes = 1;
    bi.bmiHeader.biBitCount = 32;
    bi.bmiHeader.biCompression = 0;
    bi.bmiHeader.biSizeImage = w*h*4;
    CreateDIBSection(dc,&bi,DIB_RGB_COLORS,&buf,0,0);
    GetDIBits(dc,bm,0,h,buf,&bi,DIB_RGB_COLORS);
    
    //BITMAPFILEHEADER
    bif.bfType = MAKEWORD('B','M');
    bif.bfSize = w*h*4+54;
    bif.bfOffBits = 54;

    //BITMAPINFOHEADER
    bii.biSize = 40;
    bii.biWidth = w;
    bii.biHeight = h;
    bii.biPlanes = 1;
    bii.biBitCount = 32;
    bii.biCompression = 0;
    bii.biSizeImage = w*h*4;

    f = CreateFileA("file.bmp",GENERIC_WRITE,0,NULL,CREATE_ALWAYS,0,0);
    WriteFile(f, &bif, sizeof(bif), &r, NULL);
    WriteFile(f, &bii, sizeof(bii), &r, NULL);
    WriteFile(f, buf, w*h*4, &r, NULL);
    CloseHandle(f);
    free(buf);

    ReleaseDC(window,_dc);
    DeleteDC(dc);
    DeleteDC(ddd);
    DeleteDC(dc2);
    return;
Gdy dodam funkcje free to w debugerze pokazuje się coś takiego:
First-chance exception at 0x102d12b4 in app.exe: 0xC0000005: Access violation reading location 0x00c6fffc
MS Visual C++ 2008 Express.
 System operacyjny: linux Przeglądarka: iceweasel
Programy: Polecane / Nowe / Inne




Podobne wątki (WINAPI-Zrzut ekranu)
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  [C++ WinAPI] Kompresja bitmapy kikiw 0 5255 25.12.2014, 16:15
Ostatni post: kikiw
  [c,winapi]-Access voliation reading location i problem z BITMAPFILEHEADER sfx 3 3516 12.08.2014, 16:11
Ostatni post: Darekg11
  winapi-taki sam tekst w kolejnych zakładkach sfx 0 3092 27.07.2014, 20:28
Ostatni post: sfx

Skocz do:


Wybrane wątki (WINAPI-Zrzut ekranu)
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Transfer plików via FTP Visual Basic FireBytes 3 6637 15.08.2019 07:41
Ostatni post: Szachista
  Menu wysuwane z boku patryk67 1 6124 07.08.2019 12:43
Ostatni post: aht
  Visual Basic Excel l.całkowitą przedstawić w postaci szesnastkowej fugaz 4 8055 18.06.2019 21:36
Ostatni post: fugaz
  Nauka do Olimpiady Informatycznej? piotr0905 1 7601 08.06.2019 16:50
Ostatni post: wlisik
Ściana Prosta gra w Builder C++ Kiranek1 1 7476 31.05.2019 15:20
Ostatni post: Szachista
  Menu (Nie widoczne długie opisy) wanhelsing 5 9610 28.04.2019 19:31
Ostatni post: koneton
  Skrypt usuwający pliki sylwiaa1 2 4171 28.04.2019 15:20
Ostatni post: sylwiaa1
  Środowisko do assemblera Physicist 4 8866 21.04.2019 14:04
Ostatni post: Ajgor
  VBA excel dmjs 6 8987 17.04.2019 10:20
Ostatni post: ptrick
  C++ - sens pogłębiania nauki gbr 5 8733 25.03.2019 12:53
Ostatni post: koneton
  Klasa wewnętrzna w C++ Physicist 4 8410 23.03.2019 18:28
Ostatni post: Physicist
  Ruby on Rails - tutoriale luciussulla 0 7545 23.03.2019 16:49
Ostatni post: luciussulla
Big Grin Czy dostane sie technikum informatycznego klaudiusz20046 6 10857 21.03.2019 01:28
Ostatni post: UnableToSee
  [C#] Program do moderacji czatów gier wiktrom12 0 7992 07.03.2019 15:33
Ostatni post: wiktrom12
  Mój pierwszy projekt - Pomoc rafal12999 1 8447 07.02.2019 22:01
Ostatni post: Szachista