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

📄 课程设计2.cpp

📁 用API函数编写一个键盘处理程序
💻 CPP
字号:
#include<windows.h>
#include <commdlg.h>
#include"resource.h"
HINSTANCE hinst;
BOOL CALLBACK DlgProc(HWND,UINT,WPARAM,LPARAM);

LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE hinstance,HINSTANCE hprevlnst,LPSTR lpszcmdline,int ncmdshow)
{HWND hwnd;
MSG msg;
WNDCLASS wndclass;
char classname[]="窗口实例";
char classtitle[]="我的窗口";


wndclass.style =0;
wndclass.lpfnWndProc=WndProc;
wndclass.cbClsExtra =0;
wndclass.cbWndExtra=0;
wndclass.hInstance=hinstance;
wndclass.hIcon=LoadIcon(NULL,(LPCSTR)IDI_ICON1);
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName=(LPCSTR)IDR_MENU1;
wndclass.lpszClassName=classname;


if(!RegisterClass(&wndclass))
{MessageBeep(0);
return FALSE;
}

hwnd=CreateWindow(classname,classtitle,WS_OVERLAPPEDWINDOW|WS_HSCROLL|WS_VSCROLL,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hinstance,NULL);
ShowWindow(hwnd,ncmdshow);
UpdateWindow(hwnd);
hinst=hinstance;

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,hi;
 static int x=200,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(hinst,(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+2*hi);

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

		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 1;
     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 + -