⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 键盘响应.cpp

📁 简单的键盘响应程序,可以使文字随框移动
💻 CPP
字号:
#include<windows.h>
#include <commdlg.h>
#include "resource.h"
HINSTANCE hInstance;
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
BOOL CALLBACK DlgProc(HWND , UINT, WPARAM , LPARAM );
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInst,LPSTR lpszCmdLine,int nCmdShow)
{
	HWND hwnd;
	MSG Msg;                          
	WNDCLASS wndclass;
	char lpszClassName[]="键盘响应程序";
	char lpszTitle[]="键盘响应程序";
    wndclass.style=0;
	wndclass.lpfnWndProc=WndProc;
	wndclass.cbClsExtra=0;
	wndclass.cbWndExtra=0;
	wndclass.hInstance=hInstance;
	wndclass.hIcon=LoadIcon(hInstance,(LPCSTR)IDI_ICON1);
	wndclass.hCursor=LoadCursor(NULL,(LPCSTR)IDC_ARROW);
	wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
	wndclass.lpszMenuName=LPCSTR(IDR_MENU1);
	wndclass.lpszClassName=lpszClassName;
    if(!RegisterClass(&wndclass))
	{
		MessageBeep(0);
		return FALSE;
	}
	hwnd=CreateWindow(
		              lpszClassName,
					  lpszTitle,
					  WS_OVERLAPPEDWINDOW,//可以有或的并列
					  CW_USEDEFAULT,
					  CW_USEDEFAULT,
					  CW_USEDEFAULT,
					  CW_USEDEFAULT,
					  NULL,
	                  NULL,
					  hInstance,
					  NULL
					  );
	ShowWindow(hwnd,nCmdShow);
	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)
{HDC hdc;
PAINTSTRUCT ps;
HPEN hpen;
HBRUSH hbush;
TEXTMETRIC tm;
SIZE size;
char str[]="                         ";
static char charbuf[30];
static int num=0;
static int pos=0;
int i;
double hi;
 static int x=180,y=200;

	switch(message)
	{ 
			case WM_COMMAND:
	switch(LOWORD(wparam))
	{case IDM_EXIT:
     PostQuitMessage(0);
	//SendMessage(hwnd,WM_DESTROY,0,0);
	 break;
	case IDM_ABOUT:
		DialogBox(hInstance,(LPCSTR)IDD_DIALOG1,hwnd,(DLGPROC)DlgProc);
		break;	
	}
	break;
	
	
	case WM_CHAR:
	{
	charbuf[pos]=(unsigned char) wparam;
	pos++;
	num++;
	    
	InvalidateRect(hwnd,NULL,1);

	
	}
	break;
	//case WM_CREATE:
	//	hdc=GetDC(hwnd);
	  //   GetTextMetrics(hdc,&tm);
		 //x=200;
		 //y=200;
       //  ReleaseDC(hwnd,hdc);
		 
	//break;
	case WM_PAINT:
		hdc=BeginPaint(hwnd,&ps);
		hpen=(HPEN)GetStockObject(BLACK_PEN);
		SelectObject(hdc,hpen);	
		GetTextMetrics(hdc,&tm);
		GetTextExtentPoint32(hdc,charbuf,pos,&size);
		hi=tm.tmHeight;
		Rectangle(hdc,x,y,x+18*tm.tmAveCharWidth ,y+1.5*hi);

		SetTextColor(hdc,RGB(255,180,180));

		if(size.cx>=18*tm.tmAveCharWidth )
		{//TextOut(hdc,x,y,str ,20);
		num=0;pos=0;}
        else 
		TextOut(hdc,x+1,y+2,charbuf ,num);	

			//InvalidateRect(hwnd,NULL,1);

        //st=CreateFont(16,0,0,0,FW_HEAVY,0,0,0,GB2312_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,
		//DEFAULT_QUALITY,DEFAULT_PITCH|FF_DONTCARE,"宋体");
        //SelectObject(hdc,st);
		DeleteObject(hpen);
		EndPaint(hwnd,&ps);
		return 0;
	case WM_KEYDOWN:
		{switch(wparam)
		{case VK_UP:
		y=y-20;

		
	     break;
		
		case VK_DOWN:
		y=y+20;
	      break;

		case VK_LEFT:
	
		x=x-20;
		 break;
		case VK_RIGHT:
		
		x=x+20;
		 break;
		
		
		}
InvalidateRect(hwnd,NULL,1);
		}
		break;
	
	case WM_DESTROY:
	PostQuitMessage(0);
	break;
	default:
		return DefWindowProc(hwnd,message,wparam,lparam);}

return(0);

}

  BOOL CALLBACK DlgProc(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam)
{
	switch(message)
	{ case WM_INITDIALOG:
    	return 0;
	  case WM_COMMAND:
        switch(LOWORD(wParam))
		{case IDOK:
		  EndDialog(hdlg,0);
		 return 1;
		}
		break;
	   case WM_CLOSE:
	     EndDialog(hdlg,0);
		return 1;
	}
	return 0;
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -