当前位置:首页 > 网络编程 > 软件语言 > 汇编 > 处理键盘输入消息

处理键盘输入消息

点击次数:71 次 发布日期:2008-11-10 08:13:09 作者:源代码网
源代码网推荐
广告载入中
处理键盘输入消息:

源代码网整理以下  在本课中,我们将要学习WINDOWS程序是如何处理键盘消息的。

源代码网整理以下理论:

源代码网整理以下因为大多数的PC只有一个键盘,所以所有运行中的WINDOWS程序必须共用它。WINDOWS 将负责把击键消息送到具有输入焦点的那个应用程序中去。尽管屏幕上可能同时有几个应用程序窗口,但一个时刻仅有一个窗口有输入焦点。有输入焦点的那个应用程序的标题条总是高亮度显示的。 实际上您可以从两个角度来看键盘消息:一是您可以把它看成是一大堆的按键消息的集合,在这种情况下,当您按下一个键时,WINDOWS就会发送一个WM_KEYDOWN给有输入焦点的那个应用程序,提醒它有一个键被按下。当您释放键时,WINDOWS又会发送一个WM_KYEUP消息,告诉有一个键被释放。您把每一个键当成是一个按钮;另一种情况是:您可以把键盘看成是字符输入设备。当您按下“a”键时,WINDOWS发送一个WM_CHAR消息给有输入焦点的应用程序,告诉它“a”键被按下。实际上WINDOWS 内部发送WM_KEYDOWN和WWM_KEYUP消息给有输入焦点的应用程序,而这些消息将通过调用TranslateMessage翻译成WM_CHAR消息。WINDOWS窗口过程函数将决定是否处理所收到的消息,一般说来您不大会去处理WM_KEYDOWN、WM_KEYUP消息,在消息循环中TranslateMessage函数会把上述消息转换成WM_CHAR消息。在我们的课程中将只处理WM_CHAR。

源代码网整理以下例子:

源代码网整理以下.386
源代码网推荐 .model flat,stdcall
源代码网推荐 option casemap:none
源代码网推荐 WinMain proto :DWORD,:DWORD,:DWORD,:DWORD

源代码网整理以下include masm32includewindows.inc
源代码网推荐 include masm32includeuser32.inc
源代码网推荐 include masm32includekernel32.inc
源代码网推荐 include masm32includegdi32.inc
源代码网推荐 includelib masm32libuser32.lib
源代码网推荐 includelib masm32libkernel32.lib
源代码网推荐 includelib masm32libgdi32.lib

软件开发网 www.mscto.com

源代码网整理以下.data
源代码网推荐 ClassName db "SimpleWinClass",0
源代码网推荐 AppName db "Our First Window",0
源代码网推荐 char WPARAM 20h ; the character the program receives from keyboard

源代码网整理以下.data?
源代码网推荐 hInstance HINSTANCE ?
源代码网推荐 CommandLine LPSTR ?

源代码网整理以下.code
源代码网推荐 start:
源代码网推荐 invoke GetModuleHandle, NULL
源代码网推荐 mov hInstance,eax
源代码网推荐 invoke GetCommandLine
源代码网推荐 mov CommandLine,eax
源代码网推荐 invoke WinMain, hInstance,NULL,CommandLine, SW_SHOWDEFAULT
源代码网推荐 invoke ExitProcess,eax

源代码网整理以下WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD
源代码网推荐 LOCAL wc:WNDCLASSEX
源代码网推荐 LOCAL msg:MSG
源代码网推荐 LOCAL hwnd:HWND
源代码网推荐 mov wc.cbSize,SIZEOF WNDCLASSEX
源代码网推荐 mov wc.style, CS_HREDRAW or CS_VREDRAW
源代码网推荐 mov wc.lpfnWndProc, OFFSET WndProc
源代码网推荐 mov wc.cbClsExtra,NULL
源代码网推荐 mov wc.cbWndExtra,NULL
源代码网推荐 push hInst
源代码网推荐 pop wc.hInstance
源代码网推荐 mov wc.hbrBackground,COLOR_WINDOW 1
源代码网推荐 mov wc.lpszMenuName,NULL
源代码网推荐 mov wc.lpszClassName,OFFSET ClassName
源代码网推荐 invoke LoadIcon,NULL,IDI_APPLICATION
源代码网推荐 mov wc.hIcon,eax
源代码网推荐 mov wc.hIconSm,eax
源代码网推荐 invoke LoadCursor,NULL,IDC_ARROW
源代码网推荐 mov wc.hCursor,eax
源代码网推荐 invoke RegisterClassEx, addr wc
源代码网推荐 invoke CreateWindowEx,NULL,ADDR ClassName,ADDR AppName,
源代码网推荐 WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,
源代码网推荐 CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,
源代码网推荐 hInst,NULL
源代码网推荐 mov hwnd,eax
源代码网推荐 invoke ShowWindow, hwnd,SW_SHOWNORMAL
源代码网推荐 invoke UpdateWindow, hwnd


源代码网推荐

源代码网供稿.
上一篇: 绘制文本  下一篇: 菜单
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华