GDI ¶
GDI(Graphics Device Interface)란 라 그리기를 는데 되는 다. 디 력과 린 그래 력 고 는 부다. 가 Windows로 는 로그램 GDI를 각 보를 력 뿐 라 Windows GDI를 메뉴, 롤 바, , 그리고 같 각 력 다.
DC ¶
DC(Device Context)는 GDI 내부로 관리되는 데 구며 그래 기 것다. 그림 그리고 때는 반드 먼 DC 대 들 다. 로그램 들 는 것로 Windows는 가 그 를 록 가 다. 그러면 들 GDI 로 그리고 는 를 Windows가 록 다.
- 들 : 들라는 말 말그대로 들다.
를 들면 동를 때 동들 /로 면 동를 듯 들 를 기 것다.
DC 들 기 ¶
WM_PAINT ¶
¶
~cpp
#include <windows.h>
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR lpCmdLine, int nCmdShow)
{
HWND hWnd;
WNDCLASS wc;
MSG mSg;
char szTitleName[]="Drawing Line";
char szClassName[]="it is a class";
wc.cbClsExtra=NULL;
wc.cbWndExtra=NULL;
wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wc.hCursor=LoadCursor(NULL,IDC_ARROW);
wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wc.hInstance=hInst;
wc.lpfnWndProc=WndProc;
wc.lpszClassName=szClassName;
wc.lpszMenuName=NULL;
wc.style=NULL;
RegisterClass(&wc);
hWnd=CreateWindow(szClassName,szTitleName, WS_OVERLAPPEDWINDOW,100,90,320,240,NULL,NULL,hInst,NULL);
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
while(GetMessage(&mSg,NULL,0,0))
{
TranslateMessage(&mSg);
DispatchMessage(&mSg);
}
return mSg.wParam;
}
LRESULT CALLBACK WndProc(
HWND hWnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
HDC hDC;
HPEN hPen;
PAINTSTRUCT ps;
static int nSX,nSY,nEX,nEY;
static POINT pt;
static BOOL bTF;
switch(uMsg)
{
case WM_LBUTTONDOWN:
{
bTF = TRUE;
nSX=LOWORD(lParam);
nSY=HIWORD(lParam);
}
return FALSE;
case WM_LBUTTONUP:
{
bTF=FALSE;
nEX=LOWORD(lParam);
nEY=HIWORD(lParam);
InvalidateRect(hWnd,NULL,FALSE);
}
return FALSE;
case WM_PAINT:
{
if(bTF==FALSE)
{
hPen=CreatePen(PS_SOLID,0,RGB(0,0,0));
hDC=BeginPaint(hWnd,&ps);
SelectObject(hDC,hPen);
SelectObject(hDC, GetStockObject(NULL_BRUSH));
MoveToEx(hDC,nSX,nSY,&pt);
LineTo(hDC,nEX,nEY);
DeleteObject(hPen);
EndPaint(hWnd,&ps);
}
}
return FALSE;
case WM_DESTROY:
PostQuitMessage(0);
return FALSE;
}
return DefWindowProc(hWnd,uMsg,wParam,lParam);
}










