#include <Windows.h>
#include <stdio.h>
#define DIV 3
LRESULT CALLBACK WindowProc(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
)
{
static BOOL f[DIV][DIV];
static int cx,cy;
HDC hdc;
int x,y;
PAINTSTRUCT ps;
RECT rect;
switch(uMsg)
{
case WM_SIZE:
{
cx = LOWORD(lParam)/DIV;
cy = HIWORD(lParam)/DIV;
/*
char s[10]={0};
sprintf(s,"%d",cx);
MessageBox(hwnd,s,"界面宽度",MB_OK);
*/
}break;
case WM_LBUTTONDOWN:
{
x = LOWORD(lParam)/cx;
y = HIWORD(lParam)/cy;
/*
char s[10]={0};
sprintf(s,"%d",x);
char s1[10]={0};
sprintf(s1,"%d",LOWORD(lParam));
MessageBox(hwnd,s,s1,MB_OK);
*/
if(x<DIV && y<DIV)
{
f[x][y]^=1;
rect.left = x*cx;
rect.top = y*cy;
rect.right = (x+1)*cx;
rect.bottom = (y+1)*cy;
InvalidateRect(hwnd,&rect,FALSE);
}
else
{
MessageBeep(0);
}
}break;
case WM_PAINT:
{
hdc = BeginPaint(hwnd,&ps);
for(x = 0;x<DIV;x++)
{
for(y =0;y<DIV;y++)
{
Rectangle(hdc,x*cx,y*cy,(x+1)*cx,(y+1)*cy);
if(f[x][y])
{
MoveToEx(hdc,x*cx,y*cy,NULL);
LineTo(hdc,(x+1)*cx,(y+1)*cy);
MoveToEx(hdc,x*cx,(y+1)*cy,NULL);
LineTo(hdc,(x+1)*cx,y*cy);
}
}
}
EndPaint(hwnd,&ps);
}break;
case WM_CHAR:
{
}break;
case WM_DESTROY:
{
PostQuitMessage(0);
}break;
default:
return DefWindowProc(hwnd,uMsg,wParam,lParam);
}
return 0;
}
int WINAPI WinMain(
HINSTANCE hInstance, // handle to current instance
HINSTANCE hPrevInstance, // handle to previous instance
LPSTR lpCmdLine, // command line
int nCmdShow // show state
)
{
WNDCLASS wndclass;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.hCursor = LoadCursor(NULL,IDC_HAND);
wndclass.hIcon = LoadIcon(NULL,IDI_HAND);
wndclass.hInstance = hInstance;
wndclass.lpfnWndProc = WindowProc;
wndclass.lpszClassName = "2011_11_26_demo";
wndclass.lpszMenuName = NULL;
wndclass.style = CS_HREDRAW;
RegisterClass(&wndclass);
HWND hwnd;
hwnd = CreateWindow( "2011_11_26_demo", "demo模板", WS_OVERLAPPEDWINDOW|WS_VISIBLE, 0, 0,500,500,NULL,NULL,hInstance,NULL);
ShowWindow(hwnd,SW_SHOW);
UpdateWindow(hwnd);
BOOL flag;
MSG msg;
while((flag = GetMessage(&msg,hwnd,0,0))!=0)
{
if(flag==-1)
{
PostQuitMessage(0);
}
else
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return 0;
}