바람이 머문 언덕
마우스 커스의 특정 위치의 색을 반환하는 함수 본문
GetCursor 함수를 이용해서 커스 모양을 얻어 올 때 다이렉트 x와서와 같이 사용자가 만든 커스 일 경우 일정한 모양만
반환해서 마우스 커스가 변경 되었는지 알기 힘들 때 커스의 모양이 바뀌었는지 알기 위해서 만든 함수로 커스의 특정 위치의
색을 반환 합니다.
COLORREF GetCursorColor(int x, int y) // 색의 위치를 얻기 원하는 마우스 커스의 아이콘의 좌표를 전달
{
CURSORINFO ci;
ICONINFO ii;
COLORREF rgb = 0;
ci.cbSize = sizeof(CURSORINFO); // 커서 정보를 구하기 위해서 반드시 세팅해야 한다
if(GetCursorInfo(&ci))
{
GetIconInfo(ci.hCursor, &ii); // 커서에 해당하는 아이콘 정보를 읽어온다
if (ii.hbmColor)
{
CBitmap * pCBitmapOld;
CDC dcIcon;
CDC ScreenDC;
ScreenDC.CreateDC(L"DISPLAY", NULL, NULL, NULL);
dcIcon.CreateCompatibleDC(&ScreenDC);
pCBitmapOld = dcIcon.SelectObject( CBitmap::FromHandle(ii.hbmColor));
rgb = dcIcon.GetPixel(x, y);
DeleteObject(dcIcon.SelectObject(pCBitmapOld));
dcIcon.DeleteDC();
ScreenDC.DeleteDC();
}
// 사용후에는 ii.hbmColor, ii.hbmMask를 삭제해야 한다
if (ii.hbmColor != NULL) DeleteObject(ii.hbmColor);
if (ii.hbmMask != NULL) DeleteObject(ii.hbmMask);
}
return rgb;
}