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

  代码举例:
  .386
  .model flat,stdcall
  option casemap:none
  include \masm32\include\windows.inc
  include \masm32\include\user32.inc
  include \masm32\include\kernel32.inc
  include \masm32\include\comctl32.inc
  includelib \masm32\lib\comctl32.lib
  includelib \masm32\lib\user32.lib
  includelib \masm32\lib\kernel32.lib
  WinMain PROTO :DWORD,:DWORD,:DWORD,:DWORD
  EditWndProc PROTO :DWORD,:DWORD,:DWORD,:DWORD
  .data
  ClassName db "SubclassWinClass",0
  AppName db "Subclassing Demo",0
  EditClass db "EDIT",0
  Message db "You pressed Enter in the text box!",0
  .data?
  hInstance HINSTANCE ?
  hwndEdit dd ?
  OldWndProc dd ?
  .code
  start:
  invoke GetModuleHandle, NULL
  mov hInstance,eax
  invoke WinMain, hInstance,NULL,NULL, 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_APPWORKSPACE
  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,WS_EX_CLIENTEDGE,ADDR ClassName,ADDR AppName,\  WS_OVERLAPPED+WS_CAPTION+WS_SYSMENU+WS_MINIMIZEBOX+WS_MAXIMIZEBOX+WS_VISIBLE,CW_USEDEFAULT,\
  CW_USEDEFAULT,350,200,NULL,NULL,\
  hInst,NULL
  mov hwnd,eax
  .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
就业数据资源平台