青菜

首页 » 常识 » 诊断 » 用helmchart将chripsta
TUhjnbcbe - 2021/4/9 19:36:00
程序开发求职招聘微信群 http://www.olandoweb.org/chaoliu/xinchao/1412.html

总有一天你会明白,能治愈你的,从来都不是时间,而是心理的那股释怀和淡然。。。。

----网易云热评

一、键盘消息

1、键盘消息

WM_KEYDOWN:按键被按下时产生WM_KEYUP:按键被放开时产生WM_SYSKEYDOWN:系统键按下时产生比如ALT、F10WM_SYSKEYUP:系统键放开时产生WM_CHAR:字符消息(TranslateMessage函数发送的)

2、消息参数

按键消息:

WPARAM:按键的VirtualKey

LPARAM:按键的参数,例如按下次数

WM_CHAR消息:

WPARAM:输入的字符的ASCII字符编码值

LPARAM:按键的相关参数

3、消息的使用

KEYDOWN可以重复出现,KEYUP只能在按键松开时出现1次

TranslateMessage在转换WM_KEYDOWN消息时,对于可见字符可以产生WM_CHAR,不可见字符无此消息。

WM_KEYDOWN/UP的wParam是表示的按键的虚拟键码值

WM_CHAR的wParam是表示输入的字符的ASCII编码值。

4、相关代码

#includewindows.h#includestdio.hHINSTANCEg_hInstance=0;//接收当前程序实例句柄HANDLEg_输出句柄=0;//接收标准输出句柄void按下键(HWNDhWnd,WPARAMwParam){wchar_ts[]={0};swprintf_s(s,L"按下:%08X\n",wParam);WriteConsole(g_输出句柄,s,wcslen(s),NULL,NULL);return;}void放开键(HWNDhWnd,WPARAMwParam){wchar_ts[]={0};swprintf_s(s,L"松开:%08X\n",wParam);WriteConsole(g_输出句柄,s,wcslen(s),NULL,NULL);return;}void字符消息(HWNDhWnd,WPARAMwParam){wchar_ts[]={0};swprintf_s(s,L"字符消息:%08X\n",wParam);WriteConsole(g_输出句柄,s,wcslen(s),NULL,NULL);return;}//2、窗口处理函数LRESULTCALLBACKWndProc(HWNDhWnd,UINTmsgID,WPARAMwParam,LPARAMlParam){//7、处理消息switch(msgID){caseWM_CHAR:字符消息(hWnd,wParam);break;caseWM_KEYUP:放开键(hWnd,wParam);break;caseWM_KEYDOWN:按下键(hWnd,wParam);break;caseWM_DESTROY:PostQuitMessage(0);//销毁窗口break;}returnDefWindowProc(hWnd,msgID,wParam,lParam);}//3、注册函数,第一个参数,窗口类名称,第二个参数,指向窗口处理函数的函数指针voidRegister(LPCWSTRlpClassName,WNDPROCwinProc){WNDCLASSEXwc={0};wc.cbSize=sizeof(wc);//结构体大小wc.cbClsExtra=0;//窗口类的申请缓存区,0表示不开启缓存wc.cbWndExtra=0;//窗口的申请缓存区,0表示不开启缓存wc.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);//背景颜色,一般白色wc.hCursor=NULL;//设置光标。null表示默认wc.hIcon=NULL;//默认左上角的图标wc.hInstance=g_hInstance;//第一个参数实例句柄,可以找到进程在那块内存wc.lpfnWndProc=winProc;//lp一般都是指针,处理函数名或指针wc.lpszClassName=lpClassName;//窗口类名称,比如公司名字wc.lpszMenuName=NULL;//没有菜单用nullwc.style=CS_HREDRAW

CS_VREDRAW;//窗口变化,会重绘,窗口类的一般风格RegisterClassEx(wc);}//4、创建窗口,(窗口类名称,窗口标题栏名称)HWNDCreateMain(LPCWSTRlpClassName,LPCWSTRlpWindowName){HWNDhWnd=CreateWindowExW(0,lpClassName,lpWindowName,WS_OVERLAPPEDWINDOW,,,,,NULL,NULL,g_hInstance,NULL);returnhWnd;}//5、显示窗口(窗口句柄)voidDisplay(HWNDhWnd){ShowWindow(hWnd,SW_SHOW);//句柄,显示方式UpdateWindow(hWnd);//调用一次刷新窗口}//6、消息循环voidMessage(){MSGnMsg={0};while(GetMessage(nMsg,nullptr,0,0)){TranslateMessage(nMsg);DispatchMessage(nMsg);}}//1、入口函数intCALLBACKWinMain(HINSTANCEhInstance,HINSTANCEhPrevIns,LPSTRlpCmdLine,intnCmdShow){AllocConsole();//显示dos窗口g_输出句柄=GetStdHandle(STD_OUTPUT_HANDLE);g_hInstance=hInstance;Register(L"主",WndProc);HWNDhWnd=CreateMain(L"主",L"主窗口");Display(hWnd);Message();return0;}

5、运行结果

欢迎

1
查看完整版本: 用helmchart将chripsta