nie wsciekaj sie, ale wiekszosc odpowiedzi na Twoje pytaine jest
tu: SetPixelV -> http://msdn.microsoft.com/en-us/library/dd145079(v=vs.85).aspx
i tu: BitBlt -> http://msdn.microsoft.com/en-us/library/dd183370(v=vs.85).aspx
SetPixelV jedynie ustawia pixel na dana wartosc, kropka.
BitBlt jest zas funkcja istniejaca chyba juz od czasow windows 1.0, sluzaca do przewalania prostokatnych regionow z jednego "hdc" na drugie i posiadajaca "unikatowa" opcje dwRop ktora pozwala Ci w locie wykonac pewne calkiem sensowne podstawowe operacje na tym bloku.
W wielkim skrocie, BitBlt to zoptymalizowany kombajn, a SetPixelV to ustawiacz per pixel. Jesli chcesz przepisac blok 1000x1000 pikseli, przy BitBlt odpalisz raz jedna funkcje, a jeslibys chcial uzyc SetVectorV - musialbys jesli sie nie myle, odpalic ja "raptem" milion razy. Moze kompilator ja wy-optymalizuje, moze nie, nie wiem. Ale chyba strzelalbym ze jednak BitBlt bedzie szybszy. A i nie zdziwilbym sie gdyby BitBlt potrafil oddelegowywac przerzucanie blokow do samego GPU.. ale to juz strzelam, nie mam pojecia.
edit: a co do kodu BitBlt, to raczej poszukaj na google artykulu na temat tego jak tworzyli BitBlt i czemu sa z niej dumni. Kiedys to przegladalem, jest tam kilka niespodziewanych ficzerow jak np. mikrokompilator operacji rastrowych.. podobno. nie sprawdzalem. Kod w assemblerze zawsze mozesz wyswietlic wybierajac view->disassembly i robiac "step-into" danej funkcji, zakladajac ze nie masz jakiegos auto-step-over wlaczonego. Kod w C hmm.. mozesz sprawdzic w zrodlach ReactOS, oni zwykle maja implementacje dosc podobne do oryginalnych