바탕 화면에 그림 그리기
페이지 정보
본문
바탕화면에 그림을 그리려 합니다. 그리고 일반 윈도우에 그리는 것과의 차이점도 알고 싶습니다.
우선 바탕화면도 하나의 윈도우이므로 바탕화면의 윈도우 핸들을 알아야 합니다. 즉 일반윈도우에 그리는 것과 전혀 다를게 없습니다 .바탕 호면에 직접 그림을 그리게 되면 화면에 떠 있는 모든 윈도우에 겹쳐져서 그려지므로 바탕 화면또는 일반 윈도우에만 그리고 싶다면 별도의 작업이 필요합니다.
여기에서는 화면 왼쪽 위부터 빗금이 그어지는 예로 필요한 부분만 보이기 위해 윈도우를 만들지 않았습니다.
#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를 반납하고 그리기 작업을 마친다.
}
우선 바탕화면도 하나의 윈도우이므로 바탕화면의 윈도우 핸들을 알아야 합니다. 즉 일반윈도우에 그리는 것과 전혀 다를게 없습니다 .바탕 호면에 직접 그림을 그리게 되면 화면에 떠 있는 모든 윈도우에 겹쳐져서 그려지므로 바탕 화면또는 일반 윈도우에만 그리고 싶다면 별도의 작업이 필요합니다.
여기에서는 화면 왼쪽 위부터 빗금이 그어지는 예로 필요한 부분만 보이기 위해 윈도우를 만들지 않았습니다.
#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를 반납하고 그리기 작업을 마친다.
}
댓글목록
등록된 댓글이 없습니다.