| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 
 |     //largeur de l'écran
    int resolution_x = GetSystemMetrics(SM_CXSCREEN);
    //hauteur de l'écran
    int resolution_y = GetSystemMetrics(SM_CYSCREEN);
 
    //le HDC de l'ecran
    HDC hdcEcran = GetDC(NULL);
    //le HDC mémoire
    HDC hdcMemoire = CreateCompatibleDC(hdcEcran);
    //le HBITMAP de l'image de l'écran
    HBITMAP hbitmap = CreateCompatibleBitmap(hdcEcran, resolution_x, resolution_y);
    //selection de l'objet
    SelectObject(hdcMemoire, hbitmap);
 
    //copie de la surface
    BitBlt(hdcMemoire, 0, 0, resolution_x, resolution_y, hdcEcran, 0, 0, SRCCOPY);
 
    //ici on a un hbitmap valide
 
    //création des variables pour getdiblits
    BITMAP bitmap;
    BITMAPINFO bitmapinfo;
    BYTE *lpBits = NULL;
 
    //initialisation des variables
    ZeroMemory(&bitmap,sizeof(BITMAP));
    ZeroMemory(&bitmapinfo,sizeof(BITMAPINFO));
 
    //
    GetObject(hbitmap, sizeof(BITMAP), (LPSTR)&bitmap);
 
    //initialisation de bitmapinfoheader
    bitmapinfo.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
    bitmapinfo.bmiHeader.biWidth = bitmap.bmWidth;
    bitmapinfo.bmiHeader.biHeight = bitmap.bmHeight;
    bitmapinfo.bmiHeader.biPlanes = 1;
    bitmapinfo.bmiHeader.biBitCount = 32;
    bitmapinfo.bmiHeader.biCompression = BI_RGB;
    bitmapinfo.bmiHeader.biSizeImage = 0;
    bitmapinfo.bmiHeader.biXPelsPerMeter = 0;
    bitmapinfo.bmiHeader.biYPelsPerMeter = 0;
    bitmapinfo.bmiHeader.biClrUsed = 0;
    bitmapinfo.bmiHeader.biClrImportant = 0;
 
    //allocation
    lpBits = new BYTE[bitmapinfo.bmiHeader.biWidth*bitmapinfo.bmiHeader.biHeight*4];
 
    //position du point de pixel
    bool chercher_encore = false;
 
    //on récupere ls données
    if(GetDIBits(hdcEcran, hbitmap, 0, (UINT)bitmapinfo.bmiHeader.biHeight, lpBits, &bitmapinfo, DIB_RGB_COLORS)){
 
        //si GetDIBits à fonctionné
 
        //on lit chaque coef du RGB
        int r = lpBits[4*((pixel.y*bitmapinfo.bmiHeader.biWidth)+pixel.x)+2];
        int g = lpBits[4*((pixel.y*bitmapinfo.bmiHeader.biWidth)+pixel.x)+1];
        int b = lpBits[4*((pixel.y*bitmapinfo.bmiHeader.biWidth)+pixel.x)];
 
        //si on ne trouve pas de pixel bleu
        if(!verifier_couleur_bleu(r,g,b)){
 
            //il faut continuer
            chercher_encore = true;
 
        }
 
    }
 
    //on libere
    delete(&lpBits);
 
    //on supprime le HBITMAP
    DeleteObject(hbitmap);
    //on libere le HDC mémoire
    DeleteDC(hdcMemoire);
    //on libere le HDC de l'ecran
    ReleaseDC(NULL, hdcEcran);
 
    return chercher_encore; | 
Partager