HPEN CreatePen(int fnPenStyle,int nWidth,COLORREF crColor);

fnPenStyle은 점선이냐 실선이냐, 실선은 얼마나 할꺼냐의문제. 단, nWidth!=1, PS_SOLID가 자동으로 선택된다.

PS_SOLID
PS_DASH
PS_DOT
PS_DASHDOT
PS_DASHDOTDOT


nWidth는 굵기.
1이 기본값이고
2,3으로 하면 두꺼워진다. 0으로 하면 무조건 1 pixel의 두께.

crColor
선의 색상을 정한다. COLORREF형. RGB매크로 함수를 사용하면 된다.

다음은 예제

#include <windows.h>

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
HINSTANCE g_hInst;
LPCTSTR lpszClass=TEXT("First");

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;
 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,NULL,0,0))
 {
  TranslateMessage(&Message);
  DispatchMessage(&Message);
 }

 return (int)Message.wParam;
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam)
{
 HDC hdc;
 PAINTSTRUCT ps;
 HPEN MyPen, OldPen;

 switch(iMessage)
 {
 case WM_PAINT:
  hdc=BeginPaint(hWnd,&ps);
  MyPen=(HPEN)CreatePen(PS_SOLID,5,RGB(0,0,255));
  (HBRUSH)SelectObject(hdc,GetStockObject(GRAY_BRUSH));
  SelectObject(hdc,MyPen);
  Rectangle(hdc,50,50,300,200);
  DeleteObject(MyPen);
  EndPaint(hWnd,&ps);
  return 0;
 case WM_DESTROY : PostQuitMessage(0);
  return 0;
 }
 return (DefWindowProc(hWnd,iMessage,wParam,lParam));
}

여기서 한가지. CreatePen을 한경우에는 메모리를 할당해준것이기 때문에 DeleteObject를 해주어야한다.

'Programming > Visual C++' 카테고리의 다른 글

그래픽4. Brush  (0) 2011.06.30
그래픽2. StockObject  (0) 2011.06.30
그래픽 1. GDI Object  (0) 2011.06.30
기타. SendMessage - Message 강제 호출  (0) 2011.06.30
타이머.  (0) 2011.06.29

+ Recent posts