Guarda che secondo me anche solo semplicemente facendo così (come spiegato nel primo post)
codice:
HDC hdcScreen = GetDC(0);
for(int t=0;t<40000;t++)
{
    for(int X=0;X<1280;X++)
    {
        /* ... */
        for(int Y=0;Y<800;Y++)
        {
            COLORREF colore = GetPixel(hdcScreen, X, Y);
            /* ... */
        }
    }
    /* ... */
}
ReleaseDC(0, hdcScreen);
miglioreresti le prestazioni in maniera notevolissima, dal momento che in quel ciclo l'operazione di gran lunga più lenta è l'acquisizione e il rilascio del DC.
P.S. a chi ha inventato la funzione getpixel.....
Credo che questo risponderebbe
a chi non sa usare le funzioni GDI e acquisisce e rilascia 40000*1280*800=40960000000 (40 miliardi e 960 milioni) di volte un device context quando basterebbe acquisirlo all'inizio di tutto e rilasciarlo alla fine...
Tra l'altro comunque è più che normale che la GetPixel sia lenta... hai idea della complicazione che ci sta dietro alla GDI? Ogni singola chiamata a GetPixel deve passare da user mode a kernel mode (e solo il trapping nel kernel consuma centinaia di migliaia di cicli di CPU), e la GetPixel in questione deve essere in grado di darti il colore RGB di un pixel del dispositivo collegato a qualunque DC, che internamente potrebbe memorizzare il colore nella maniera più astrusa (tripletta RGB, COLORREF, indice in una tabella di colori RGB o in modi ancora più esotici).
La morale è: se ti sembra che il codice di libreria sia troppo lento, probabilmente lo stai usando in modo sbagliato.