#include <windows.h>
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
HINSTANCE g_hInst;
LPSTR lpszClass="GraphOut";
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance
,LPSTR lpszCmdParam,int nCmdShow)
{
HWND hWnd;
MSG Message;
WNDCLASS WndClass;
g_hInst=hInstance;
WndClass.cbClsExtra=0;
WndClass.cbWndExtra=0;
WndClass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);
WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
WndClass.hInstance=hInstance;
WndClass.lpfnWndProc=(WNDPROC)WndProc;
WndClass.lpszClassName=lpszClass;
WndClass.lpszMenuName=NULL;
WndClass.style=CS_HREDRAW | CS_VREDRAW;
RegisterClass(&WndClass);
hWnd=CreateWindow(lpszClass,lpszClass,WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
NULL,(HMENU)NULL,hInstance,NULL);
ShowWindow(hWnd,nCmdShow);
while(GetMessage(&Message,0,0,0)) {
TranslateMessage(&Message);
DispatchMessage(&Message);
}
return Message.wParam;
}
LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
HDC hdc; // DC 핸들을 저장할 변수 선언.
PAINTSTRUCT ps; // DC 정보를 담고 있는 구조체 선언.
switch(iMessage) {
case WM_DESTROY:
PostQuitMessage(0);
return 0;
case WM_PAINT:
hdc=BeginPaint(hWnd,&ps); // DC 핸들을 hdc 변수에 저장.
SetPixel(hdc,10,10,RGB(255,0,0)); // SetPixel 함수를 이용하여 (10,10) 지점에 빨간색 점을 찍음.
MoveToEx(hdc,50,50,NULL);
LineTo(hdc,300,90);
/* MoveToEx 함수와 LineTo 함수를 이용해 선을 그었음. */
Rectangle(hdc,50,100,200,180); // 사각형을 그림.
Ellipse(hdc,220,100,400,200); // 타원형을 그림.
EndPaint(hWnd,&ps);
return 0;
}
return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}
출력 결과:
이번에도 메시지를 처리하는 WndProc만 바꼈습니다 ㅎㅎ
위에 LPSTR lpszClass="GraphOut"; 이건 프로그램 제목을 표시하기 위해 예제와 똑같은 이름으로 계속 바꿔주는 것뿐 ㅋㅋ
'[+] Information > [-] ETC' 카테고리의 다른 글
[Tip] 메모리에 written, read 될 수 없습니다?? (2) | 2009.09.27 |
---|---|
API MessageBox 예제 (2) | 2009.07.20 |
API DrawText 예제 (0) | 2009.07.18 |
API TextOut 예제 (0) | 2009.07.18 |