鼠标点击画矩形

#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;
}

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值