대충 코드는 다음과 같이 짜 봤는데,


#include

#include


using namespace std;


int main(){


POINT pos;

int R;

int G;

int B;

       HDC hDC=GetDC(NULL);  //데스크톱의 HDC


while (1) {

GetCursorPos(&pos);   // 마우스 커서의 x, y 위치.

COLORREF color=GetPixel(hDC, pos.x, pos.y);  // 마우스 좌표의 데스크톱의 rgb값 구하기.

R = GetRValue(color);

G = GetGValue(color);

B = GetBValue(color);

std::cout <<"R : "<< R <<", G : " <

Sleep(2000);

}


return 0;

}



이렇게 해 보면, rgb 값이 출력이 되긴 하는데,  마우스가 위치한 곳의 픽셀을 읽는 게 아니라 다른 곳의 픽셀을 읽어요.... 


분명히 마우스는 흰색 위에 위치해 있는데, 출력되는 값은 0, 0, 0이나 30, 30, 30이 출력되고 그래요. 

(마우스가 위치한 곳을 기준으로 흰색 영역이 넓게 있으면 255, 255, 255는 제대로 출력됩니다.)


그러니까, 마우스가 위치한 곳에서 좀 (많이) 벗어난 곳의 픽셀의 rgb 값을 출력해 주네요. 


왜 이러는 건지 모르겠네요. 


어떻게 해야 마우스가 가리키는 곳의 rgb값을 출력할 수 있을까요?