Wenn du sowieso ein komplettes Rechteck auf den Schirm malen willst kannst du SetDIBitsToDevice verwenden.
Dazu "malst" du deine Pixel in ein normales Array im Speicher (DWORD Array, ein DWORD = 1 Pixel). Dann füllst du ne BITMAPINFO Struktur aus die das 32 Bit BGRA Format beschreibt, und rufst SetDIBitsToDevice auf.
void foo()
{
DWORD pixels[256*256];
// pixels anfüllen
HDC dc = ...; // woher auch immer
// BITMAPINFO ausfüllen
BITMAPINFO bi = {0};
bi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
bi.bmiHeader.biWidth = 256;
bi.bmiHeader.biHeight = 256;
bi.bmiHeader.biPlanes = 1;
bi.bmiHeader.biBitCount = 32;
bi.bmiHeader.biCompression = BI_RGB;
// auf den Bildschirm kopieren
SetDIBitsToDevice(
dc,
destX,
destY,
256, // width
256, // height
0, // source X
0, // source Y
0,
256,
pixels,
&bi,
0
);
}
Hab jetzt nicht versucht das zu compilieren, aber grundsätzlich geht das so.