就业数据资源平台
当前位置:首页 > PC技术
三级PC辅导:超类化(2)

  .while TRUE
  invoke GetMessage, ADDR msg,NULL,0,0
  .BREAK .IF (!eax)
  invoke TranslateMessage, ADDR msg
  invoke DispatchMessage, ADDR msg
  .endw
  mov eax,msg.wParam
  ret
  WinMain endp
  WndProc proc uses ebx edi hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
  LOCAL wc:WNDCLASSEX
  .if uMsg==WM_CREATE
  mov wc.cbSize,sizeof WNDCLASSEX
  invoke GetClassInfoEx,NULL,addr EditClass,addr wc
  push wc.lpfnWndProc
  pop OldWndProc
  mov wc.lpfnWndProc, OFFSET EditWndProc
  push hInstance
  pop wc.hInstance
  mov wc.lpszClassName,OFFSET OurClass
  invoke RegisterClassEx, addr wc
  xor ebx,ebx
  mov edi,20
  .while ebx<6
  invoke CreateWindowEx,WS_EX_CLIENTEDGE,ADDR OurClass,NULL,\
  WS_CHILD+WS_VISIBLE+WS_BORDER,20,\
  edi,300,25,hWnd,ebx,\
  hInstance,NULL
  mov dword ptr [hwndEdit+4*ebx],eax
  add edi,25
  inc ebx
  .endw
  invoke SetFocus,hwndEdit
  .elseif uMsg==WM_DESTROY
  invoke PostQuitMessage,NULL
  .else
  invoke DefWindowProc,hWnd,uMsg,wParam,lParam
  ret
  .endif
  xor eax,eax
  ret
  WndProc endp
  EditWndProc PROC hEdit:DWORD,uMsg:DWORD,wParam:DWORD,lParam:DWORD
  .if uMsg==WM_CHAR
  mov eax,wParam
  .if (al>="0" && al<="9") || (al>="A" && al<="F") || (al>="a" && al<="f") || al==VK_BACK
  ;处理字符0~9,A~F,a~f,这几个十六进制数
  .if al>="a" && al<="f"
  sub al,20h
  如果是字符a~f,则把它们变为大写
  .endif
  invoke CallWindowProc,OldWndProc,hEdit,uMsg,eax,lParam
  ret
  .endif
  .elseif uMsg==WM_KEYDOWN
  mov eax,wParam
  .if al==VK_RETURN
  invoke MessageBox,hEdit,addr Message,addr AppName,MB_OK+MB_ICONINFORMATION
  invoke SetFocus,hEdit
  .elseif al==VK_TAB
  invoke GetKeyState,VK_SHIFT
  test eax,80000000
  .if ZERO?
  invoke GetWindow,hEdit,GW_HWNDNEXT
  .if eax==NULL
  invoke GetWindow,hEdit,GW_HWNDFIRST
  .endif
  .else
  invoke GetWindow,hEdit,GW_HWNDPREV
  .if eax==NULL
  invoke GetWindow,hEdit,GW_HWNDLAST
  .endif
  .endif
  invoke SetFocus,eax
  xor eax,eax
  ret
  .else
  invoke CallWindowProc,OldWndProc,hEdit,uMsg,wParam,lParam
  ret
  .endif
  .else
  invoke CallWindowProc,OldWndProc,hEdit,uMsg,wParam,lParam
  ret
  .endif
  xor eax,eax
  ret
  EditWndProc endp
  end start
就业数据资源平台