7c 在7b的基础上 增加键盘操作

7c  在7b的基础上 增加键盘操作


#include<Windows.h>

#define DIVISIONS 5

LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine,int iCmdShow)
{
	static TCHAR szAppName[]=TEXT("checker2");

	HWND hwnd;
	MSG msg;
	WNDCLASS wndclass;

	wndclass.style=CS_HREDRAW | CS_VREDRAW;
	wndclass.lpfnWndProc=WndProc;
	wndclass.cbClsExtra=0;
	wndclass.cbWndExtra=0;
	wndclass.hInstance=hInstance;
	wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
	wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
	wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
	wndclass.lpszMenuName=NULL;
	wndclass.lpszClassName=szAppName;

	if(!RegisterClass(&wndclass))
	{
		MessageBox(NULL,TEXT("Program requires Windows NT !"),szAppName,MB_ICONERROR);
		return 0;
	}

	hwnd=CreateWindow(szAppName,TEXT("Checker1 Mouse Hit-Test Demo"),
		WS_OVERLAPPEDWINDOW,
		CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
		NULL,NULL,hInstance,NULL);

	ShowWindow(hwnd,iCmdShow);
	UpdateWindow(hwnd);

	while(GetMessage(&msg,NULL,0,0))
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}
	return msg.wParam;
}



LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
	static BOOL fState[DIVISIONS][DIVISIONS];
	static int cxBlock,cyBlock;
	HDC hdc;
	int x,y;
	PAINTSTRUCT ps;
	POINT point;
	RECT rect;

	switch(message)
	{
	case WM_SIZE:
		cxBlock=LOWORD(lParam)/DIVISIONS;
		cyBlock=HIWORD(lParam)/DIVISIONS;
		return 0;

	case WM_SETFOCUS:
		ShowCursor(TRUE);
		return 0;

	case WM_KILLFOCUS:
		ShowCursor(FALSE);
		return 0;

	case WM_KEYDOWN:
		GetCursorPos(&point);
		ScreenToClient(hwnd,&point);

		x=max(0,min(DIVISIONS-1,point.x/cxBlock));
		y=max(0,min(DIVISIONS-1,point.y/cyBlock));

		switch(wParam)
		{
		case VK_UP:
			y--;
			break;
		case VK_DOWN:
			y++;
			break;
		case VK_RIGHT:
			x++;
			break;
		case VK_LEFT:
			x--;
			break;
		case VK_HOME:
			x=y=0;
			break;
		case VK_END:
			x=y=DIVISIONS-1;
			break;
		case VK_RETURN:
		case VK_SPACE:
		  //SendMessage(HWND hWnd,UINT Msg,      WPARAM wParam,   LPARAM IParam                 )
			SendMessage(hwnd,      WM_LBUTTONDOWN,  MK_LBUTTON     ,MAKELONG(cxBlock*x,y*cyBlock));   ?
			break;

		}
		x=(x+DIVISIONS)%DIVISIONS;
		y=(y+DIVISIONS)%DIVISIONS;

		point.x=x*cxBlock+cxBlock/2;
		point.y=y*cyBlock+cyBlock/2;

		ClientToScreen(hwnd,&point);
		SetCursorPos(point.x,point.y);

		return 0;

	case WM_LBUTTONDOWN:
		x=LOWORD(lParam)/cxBlock;
		y=HIWORD(lParam)/cyBlock;

		if(x<DIVISIONS && y<DIVISIONS)
		{
			fState[x][y]^=1;
			rect.left=x*cxBlock;
			rect.top=y*cyBlock;
			rect.right=(x+1)*cxBlock;
			rect.bottom=(y+1)*cyBlock;

			InvalidateRect(hwnd,&rect,FALSE);
		}
		else
			MessageBeep(0);
		return 0;

	case WM_PAINT:
		hdc=BeginPaint(hwnd,&ps);

		for(x=0;x<DIVISIONS;x++)
			for(y=0;y<DIVISIONS;y++)
			{
				Rectangle(hdc,x*cxBlock,y*cyBlock,(x+1)*cxBlock,(y+1)*cyBlock);
				if(fState[x][y])
				{
				MoveToEx(hdc,x*cxBlock,y*cyBlock,NULL);
				LineTo(hdc,(x+1)*cxBlock,(y+1)*cyBlock);

				MoveToEx(hdc,(x+1)*cxBlock,y*cyBlock,NULL);
				LineTo(hdc,x*cxBlock,(y+1)*cyBlock);

				}
			}

		EndPaint(hwnd,&ps);
		return 0;
	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;
	}
	return DefWindowProc(hwnd,message,wParam,lParam);


}


效果和7b一样 不过支持键盘   上下左右home  end  空格 enter等等

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
AES的S盒 0 1 2 3 4 5 6 7 8 9 A B C D E F 0 63 7C 77 7B F2 6B 6F C5 30 01 67 2B FE D7 AB 76 1 CA 82 C9 7D FA 59 47 F0 AD D4 A2 AF 9C A4 72 C0 2 B7 FD 93 26 36 3F F7 CC 34 A5 E5 F1 71 D8 31 15 3 04 C7 23 C3 18 96 05 9A 07 12 80 E2 EB 27 B2 75 4 09 83 2C 1A 1B 6E 5A A0 52 3B D6 B3 29 E3 2F 84 5 53 D1 00 ED 20 FC B1 5B 6A CB BE 39 4A 4C 58 CF 6 D0 EF AA FB 43 4D 33 85 45 F9 02 7F 50 3C 9F A8 7 51 A3 40 8F 92 9D 38 F5 BC B6 DA 21 10 FF F3 D2 8 CD 0C 13 EC 5F 97 44 17 C4 A7 7E 3D 64 5D 19 73 9 60 81 4F DC 22 2A 90 88 46 EE B8 14 DE 5E 0B DB A E0 32 3A 0A 49 06 24 5C C2 D3 AC 62 91 95 E4 79 B E7 C8 37 6D 8D D5 4E A9 6C 56 F4 EA 65 7A AE 08 C BA 78 25 2E 1C A6 B4 C6 E8 DD 74 1F 4B BD 8B 8A D 70 3E B5 66 48 03 F6 0E 61 35 57 B9 86 C1 1D 9E E E1 F8 98 11 69 D9 8E 94 9B 1E 87 E9 CE 55 28 DF F 8C A1 89 0D BF E6 42 68 41 99 2D 0F B0 54 BB 16 ################################################################################ 0 1 2 3 4 5 6 7 8 9 A B C D E F 0 52 09 6A D5 30 36 A5 38 BF 40 A3 9E 81 F3 D7 FB 1 7C E3 39 82 9B 2F FF 87 34 8E 43 44 C4 DE E9 CB 2 54 7B 94 32 A6 C2 23 3D EE 4C 95 0B 42 FA C3 4E 3 08 2E A1 66 28 D9 24 B2 76 5B A2 49 6D 8B D1 25 4 72 F8 F6 64 86 68 98 16 D4 A4 5C CC 5D 65 B6 92 5 6C 70 48 50 FD ED B9 DA 5E 15 46 57 A7 8D 9D 84 6 90 D8 AB 00 8C BC D3 0A F7 E4 58 05 B8 B3 45 06 7 D0 2C 1E 8F CA 3F 0F 02 C1 AF BD 03 01 13 8A 6B 8 3A 91 11 41 4F 67 DC EA 97 F2 CF CE F0 B4 E6 73 9 96 AC 74 22 E7 AD 35 85 E2 F9 37 E8 1C 75 DF 6E A 47 F1 1A 71 1D 29 C5 89 6F B7 62 0E AA 18 BE 1B B FC 56 3E 4B C6 D2 79 20 9A DB C0 FE 78 CD 5A F4 C 1F DD A8 33 88 07 C7 31 B1 12 10 59 27 80 EC 5F D 60 51 7F A9 19 B5 4A 0D 2D E5 7A 9F 93 C9 9C EF E A0 E0 3B 4D AE 2A F5 B0 C8 EB BB 3C 83 53 99 61 F 17 2B 04 7E BA 77 D6 26 E1 69 14 63 55 21 0C 7D
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值