99101553@qq.com 发表于 2016-11-1 08:41:36

Windows 消息机制

请问为什么 窗口过程中 wParam 的 高16位和低16 不能用 AND wParam,0FFFFh来提取
EDIT_CONTORL 的消息只能用 ax == XXX 而不能用 eax == XXXXX 来判读 ,他们之间是什么关系。



                        .data?

wShow                        dw                        ?
wFree                        dw                        ?
dShow                        dd                        ?

;**************************************************
                        .code
_MainProc                proc        uses ebx edi esi hWnd,uMsg,wParam,lParam
                                mov                eax,uMsg
                                .if                eax == WM_CLOSE
                                                invoke        EndDialog,hWnd,NULL
                                               
                                .elseif        eax == WM_COMMAND
                                                mov         eax,wParam
                                               
                                                .if                eax == ID_INC
                                                                Call        _IncCounter
                                                                invoke        SetDlgItemInt,hWnd,IDC_COUNTER,eax,FALSE
                                                .elseif        eax == ID_DEC
                                                                Call        _DecCounter
                                                                invoke        SetDlgItemInt,hWnd,IDC_COUNTER,eax,FALSE
                                                .elseif        ax == IDC_NUM1 || ax == IDC_NUM2
                                                                push eax
                                                               
                                                                mov                wShow,ax
                                                                ;mov                dShow,eax
                                                                ;pop                dShow
                                                                invoke        SetDlgItemInt,hWnd,IDC_AX,dword ptr wShow,FALSE
                                                                pop                dShow
                                                                invoke        SetDlgItemInt,hWnd,IDC_wParam,dShow,FALSE
                                                               
                                                                invoke        GetDlgItemInt,hWnd,IDC_NUM1,NULL,FALSE
                                                                push        eax
                                                                invoke        GetDlgItemInt,hWnd,IDC_NUM2,NULL,FALSE
                                                                pop                ecx
                                                                invoke        _Mod,ecx,eax
                                                                invoke        SetDlgItemInt,hWnd,IDC_MOD,eax,FALSE
                                                               
                                                .endif
                               
                                .else
                                                mov                eax,FALSE
                                                ret
                                .endif
                                mov                eax,TRUE
                                ret

_MainProc                endp                               
       

零度C 发表于 2016-11-2 22:05:07

WM_COMMAND消息中有两个参 数,wparam、lparam,定义如下:

       wParam 高两个字节 通知码

       wParam 低两字节 命令ID

       lParam 发送命令消息的子窗体句柄。
页: [1]
查看完整版本: Windows 消息机制