就业数据资源平台
当前位置:首页 > 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\shell32.inc
  includelib \masm32\lib\user32.lib
  includelib \masm32\lib\kernel32.lib
  includelib \masm32\lib\shell32.lib
  WM_SHELLNOTIFY equ WM_USER+5
  IDI_TRAY equ 0
  IDM_RESTORE equ 1000
  IDM_EXIT equ 1010
  WinMain PROTO :DWORD,:DWORD,:DWORD,:DWORD
  .data
  ClassName db "TrayIconWinClass",0
  AppName db "TrayIcon Demo",0
  RestoreString db "&Restore",0
  ExitString db "E&xit Program",0
  .data?
  hInstance dd ?
  note NOTIFYICONDATA <>
  hPopupMenu 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 or CS_DBLCLKS
  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
就业数据资源平台