#include <windows.h>
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
HINSTANCE g_hInst;
LPCTSTR lpszClass=TEXT("정훈승 자유주제3");
HINSTANCE g_hInst;
LPCTSTR lpszClass=TEXT("정훈승 자유주제3");
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdParam, int nCmdShow)
{
HWND hWnd;
MSG Message;
WNDCLASS WndClass;
g_hInst=hInstance;
{
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);
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);
ShowWindow(hWnd, nCmdShow);
while(GetMessage(&Message, NULL, 0, 0)) {
TranslateMessage(&Message);
DispatchMessage(&Message);
}
return (int)Message.wParam;
}
TranslateMessage(&Message);
DispatchMessage(&Message);
}
return (int)Message.wParam;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
int i, j;
static int sx, sy;
{
HDC hdc;
PAINTSTRUCT ps;
int i, j;
static int sx, sy;
switch(iMessage) {
case WM_PAINT:
hdc=BeginPaint(hWnd, &ps);
for(i=0; i<768; i=i+17)
{
MoveToEx(hdc,0,i,NULL);
LineTo(hdc,1024,i);
}
for(j=0; j<1024; j=j+17)
{
MoveToEx(hdc,j,0,NULL);
LineTo(hdc,j,768);
}
hdc=BeginPaint(hWnd, &ps);
for(i=0; i<768; i=i+17)
{
MoveToEx(hdc,0,i,NULL);
LineTo(hdc,1024,i);
}
for(j=0; j<1024; j=j+17)
{
MoveToEx(hdc,j,0,NULL);
LineTo(hdc,j,768);
}
EndPaint(hWnd, &ps);
return 0;
return 0;
case WM_LBUTTONDOWN:
hdc=GetDC(hWnd);
sx=LOWORD(lParam);
sy=HIWORD(lParam);
TextOut(hdc, sx, sy, TEXT("●"), 2);
ReleaseDC(hWnd, hdc);
return 0;
hdc=GetDC(hWnd);
sx=LOWORD(lParam);
sy=HIWORD(lParam);
TextOut(hdc, sx, sy, TEXT("●"), 2);
ReleaseDC(hWnd, hdc);
return 0;
case WM_RBUTTONDOWN:
hdc=GetDC(hWnd);
sx=LOWORD(lParam);
sy=HIWORD(lParam);
TextOut(hdc, sx, sy, TEXT("○"), 2);
ReleaseDC(hWnd, hdc);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return(DefWindowProc(hWnd, iMessage, wParam, lParam));
}
hdc=GetDC(hWnd);
sx=LOWORD(lParam);
sy=HIWORD(lParam);
TextOut(hdc, sx, sy, TEXT("○"), 2);
ReleaseDC(hWnd, hdc);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return(DefWindowProc(hWnd, iMessage, wParam, lParam));
}
이 소스는 아주 간단한 소스다.
내가 짰으면서도 너무 아이디어가 기발-_-해서 공유한다.
윈도우즈프로그래밍(API) 초반부 단계 숙제용으로 탁월한 예가 될 것이다.
화면에 바둑판을 그려놓고
왼쪽버튼 누르면 검정색돌, 오른쪽버튼 누르면 흰색돌
아주 기초적인 지식으로 이따구 것을 만들어서 숙제 제출하면
아마 담당 교수님이나 담당 강의선생생님께 칭찬을 들을것이라 예상된다.