본문 바로가기

[+] Information/[-] ETC

API GraphOut 예제

#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