WIN32汇编: 6.处理键盘消息[2]

[入库:2005年8月19日] [更新:2007年3月24日]

本文简介:选择自 goddragon 的 blog

        invoke postquitmessage,null
    .elseif umsg==wm_char
        push wparam
        pop  char
        invoke invalidaterect, hwnd,null,true
    .elseif umsg==wm_paint
        invoke beginpaint,hwnd, addr ps
        mov    hdc,eax
        invoke textout,hdc,0,0,addr char,1
        invoke endpaint,hwnd, addr ps
    .else
        invoke defwindowproc,hwnd,umsg,wparam,lparam
        ret
    .endif
    xor    eax,eax
    ret
wndproc endp
end start
 

分析:


char wparam 20h               ; the character the program receives from keyboard

这个变量将保存从键盘接收到的字符。因为它是在窗口过程中通过wparam型变量传送的,所以我们简单地把它定义为wparam型。由于我们的窗口在初次刷新时(也即刚被创建的那一次)是没有键盘输入的所以我们把他设成空格符(20h),这样显示时您就什么都看不见。

  .elseif umsg==wm_char
        push wparam
        pop  char
        invoke invalidaterect, hwnd,null,true

这一段是用来处理wm_char消息的。它把接收到的字符放入变量char中,接着调用invalidaterect,而invalidaterect使得窗口的客户区无效,这样它会发出wm_paint消息,而wm_paint消息迫使windows重新绘制它的客户区。该函数的语法如下:

invalidaterect proto hwnd:hwnd,\
                                 lprect:dword,\

本文关键:asm
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top