두 원이 있고 한가지 원을 키보드 화살표를 이동시켜
다른 한원에 부�치면 판정이 발생.
MyUtil.h는 아래 참고,
#include <stdio.h>
#include "stdafx.h"
#include "MyUtil.h"
#include<math.h>
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPTSTR lpCmdLine, int nCmdShow)
{
static char szAppName[] = "Test SDK_버전 1";
static char szTitle[]="Test SDK 윈도우즈 프로그램";
MSG msg;
HWND hWnd;
WNDCLASSEX wc;
wc.cbSize = sizeof(WNDCLASSEX);
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = (WNDPROC)WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL,IDC_ARROW);
//wc.hbrBackground = (HBRUSH)GetStockObject(GRAY_BRUSH);
wc.hbrBackground = GetSysColorBrush(COLOR_WINDOW);
wc.lpszMenuName = NULL;
wc.lpszClassName = szAppName;
wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
RegisterClassEx(&wc);
hWnd=CreateWindow(szAppName, szTitle, WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0,
NULL, NULL, hInstance, NULL);
if( !hWnd )
return (FALSE);
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (msg.wParam);
}
#include <stdio.h>
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
char temp[80];
char temp2[80];
PAINTSTRUCT ps;
HDC hdc;
POINT p,s,d;
RECT r;
//static int m_Alpha;
static int x,y;
static RECT m_Rect,m_Rect2,m_Bound;
static COLORREF m_Color,m_Color2;
//HPEN hPen,hOldPen;
// HBRUSH hBrush,hOldBrush;
switch(uMsg)
{
case WM_CREATE :
// GetClientRect(hWnd,&r);
//GetClientRect(hWnd,&m_Bound);
//d=CenterPoint(r);
//s=CenterPoint(m_Rect);
// d=CenterPoint(m_Rect2);
// SetRect(&m_Rect,s.x-50,s.y-50,s.x+50,s.y+50);
// SetRect(&m_Rect2,d.x-50,d.y-50,d.x+50,d.y+50);
OffsetRect(&m_Rect,400,400);
OffsetRect(&m_Rect2,200,200);
m_Color=RGB(0,255,0);
m_Color2=RGB(255,0,0);
SetTimer(hWnd,1,10,NULL);
SetTimer(hWnd,2,1000,NULL);
break;
case WM_PAINT :
hdc = BeginPaint(hWnd, &ps);
GetClientRect(hWnd,&r);
d=CenterPoint(m_Rect2);
s=CenterPoint(m_Rect);
SetRect(&m_Rect,s.x-50,s.y-50,s.x+50,s.y+50);
SetRect(&m_Rect2,d.x-100,d.y-100,d.x+100,d.y+100);
// DrawObject(hdc,m_Rect2,m_Color2,0);
// DrawObject(hdc,m_Rect,m_Color,1);
Ellipse(hdc,m_Rect.left,m_Rect.top,m_Rect.right,m_Rect.bottom);
Ellipse(hdc,m_Rect2.left,m_Rect2.top,m_Rect2.right,m_Rect2.bottom);
if(CheckBound2(s,d)==0)
{
TextOut(hdc,100,100,"부�침",4);
}
sprintf(temp,"%d %d",d.x,d.y);
TextOut(hdc,200,200,temp,strlen(temp));
sprintf(temp2,"%d %d",s.x,s.y);
TextOut(hdc,400,400,temp2,strlen(temp2));
EndPaint(hWnd, &ps);
break;
case WM_KEYDOWN:
switch(wParam)
{
case VK_LEFT:
x=-1;
y=0;
break;
case VK_RIGHT:
x=1;
y=0;
break;
case VK_UP:
x=0;
y=-1;
break;
case VK_DOWN:
x=0;
y=1;
break;
}
case WM_TIMER:
switch(wParam)
{
case 1:
OffsetRect(&m_Rect,x,y);
InvalidateRect(hWnd,NULL,TRUE);
break;
case 2:
OffsetRect(&m_Rect2,100,y);
InvalidateRect(hWnd,NULL,TRUE);
break;
}
break;
case WM_DESTROY :
KillTimer(hWnd,1);
PostQuitMessage(0);
break;
}
return DefWindowProc(hWnd, uMsg, wParam, lParam);
}
#include "stdafx.h"
#include "MyUtil.h"
#include<math.h>
POINT CenterPoint(RECT& r)
{
POINT p;
p.x = (r.left + r.right) /2;
p.y = (r.top + r.bottom) /2;
return p;
}
int CheckBound(RECT& r,RECT& bound)
{
if(r.left<=bound.left || r.right>=bound.right)
return 1;
if(r.top<=bound.top || r.bottom>=bound.bottom)
return 1;
else
return 0;
}
int CheckBound2(POINT& r,POINT& bound)
{
double xyz=0;
xyz=((bound.x-r.x)*(bound.x-r.x) + (bound.y-r.y)*(bound.y-r.y));
if(sqrt(xyz)<150)
return 0;
}
void DrawObject(HDC hdc, RECT& r,COLORREF color,int type)
{
DrawObject(hdc, r, color,color,type);
}
void DrawObject(HDC hdc, RECT& r,COLORREF penColor,COLORREF brColor, int type)
{
HPEN hPen,hOldPen;
HBRUSH hBrush,hOldBrush;
hPen=CreatePen(PS_SOLID,1,penColor);
hOldPen=(HPEN)SelectObject(hdc,hPen);
hBrush=CreateSolidBrush(brColor);
hOldBrush=(HBRUSH)SelectObject(hdc,hBrush);
switch(type)
{
case 0:
Rectangle(hdc,r.left,r.top,r.right,r.bottom);
break;
case 1:
Ellipse(hdc,r.left,r.top,r.right,r.bottom);
break;
}
SelectObject(hdc,hOldPen);
SelectObject(hdc,hOldBrush);
DeleteObject(hPen);
DeleteObject(hBrush);
}