2009년 11월 6일 금요일

바탕 화면에 그림 그리기

<바탕 화면에 그림 그리기>

바탕화면에 그림을 그리려 합니다. 그리고 일반 윈도우에 그리는 것과의 차이점도 알고 싶습니다.

우선 바탕화면도 하나의 윈도우이므로 바탕화면의 윈도우 핸들을 알아야 합니다. 즉 일반윈도우에 그리는 것과 전혀 다를게 없습니다 .바탕 호면에 직접 그림을 그리게 되면 화면에 떠 있는 모든 윈도우에 겹쳐져서 그려지므로 바탕 화면또는 일반 윈도우에만 그리고 싶다면 별도의 작업이 필요합니다.

 여기에서는 화면 왼쪽 위부터 빗금이 그어지는 예로 필요한 부분만 보이기 위해 윈도우를 만들지 않았습니다.

 

 

#include <windows.h>

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrev, LPSTR lpszArgs, int nWinMode)
{
        HWND hwnd = GetDesktopWindow();
        // 바탕화면의 윈도우 핸들 얻기
        HDC hdc = GetWindowDC(hwnd);
        // 바탕화면의 DC 핸들 얻기
        // GetWindowDC를 쓴다.
       
        HPEN hPen;
        register int i;
        for(i=0; i<=255; i++) {
                hPen = CreatePen(PS_SOLID, 0, RGB(i, i, i));
                // 원하는 색으로 펜 만들기
                HGDIOBJ hOldPen = SelectObject(hdc, hPen);
                // 펜을 현재 DC에서 선택
                // 펜 핸들 보관
                MoveToEx(hdc, i*3, 0, NULL);
                LineTo(hdc, 0, i*3);
                // 선택된 펜으로 선을 긋는다.
                SelectObject(hdc, hOldPen);
                // 원래대로 펜 돌려놓기
                DeleteObject(hPen);
                // 필요없는 펜 제거
        }
        ReleaseDC(hwnd, hdc);
        // DC를 반납하고 그리기 작업을 마친다.
}

댓글 없음:

댓글 쓰기