HTSpy (HitTester)

v.2008-01-19 (: v.2007-07-06)

by kero <geocities.com/xmemor>

http://geocities.com/xmemor/2lz/tinyasm.html   ("Tiny apps + sources (masm32)")

------
   -     WM_NCHITTEST...   .
------
 .
------
  XP-pro-sp2.
------

[ ] :

 1:
  hw    - / 
  id=hm - ID ( hw - )  hMenu ( hw - top-level )
  p/tid - PID/TID
 2:
  "ClassName"/"RealWindowClass" ("RealWindowClass"    != "ClassName")
   exe ( )
 3:
  "WindowText"
 4:
  "+"  RectVisible(GetWindowRect)!=0,  "-"  // .   WS_EX_LAYERED
  rt [...] - WindowRect [left,top,width*height]
  w-cl [...] -   WindowRect  ClientRect [d(left),d(top),d(right),d(bottom)]
  [* region] -   
 5:
  "+"      (PtVisible!=0),  "-"
  "+"        (PtInRect(GetWindowRect)!=0),  "-"
  "+"        (PtInRegion(GetWindowRgn)!=0), "-"    (PtInRegion==0), "."      
  pt -       (x,y)
  lp -      lParam  WM_NC* 
  dco -  GetDCOrgEx ( hw)  //  WS_EX_LAYERED+SetLayeredWindowAttributes  WS_EX_LAYERED+UpdateLayeredWindow (  WS_EX_COMPOSITED)
 6:
  <dis> ,   hw  -    
  dwp/sm [*/*] -  WM_NCHITTEST  DefWindowProc/SendMessage
 7 (,   "lock"  ):
  "dwp"/"sm" -   DefWindowProc ( Shift) / SendMessage ( Ctrl)
  HT <> -    HT- (  WM_NCHITTEST)
  [...] -  ,   HT-, [left,top,width*height]
  [* region] -   (HT-)

  HTSpy        "3 HTSYSMENU".

 HTSpy     "2 HTCAPTION", "wm_setcursor", "wm_mousemove", "wm_lbuttondown".

   " HT-" (-3...22)         .
     "setcursor/mousemove/lbuttondown",    Ctrl. (,  ,   "setcursor"  "HTMINBUTTON").

    ().


  "lock"  :

     ,        F8 ( "lock"  ).
  
   ,     Ctrl  =>  HTSpy  ""  (root)   .

  "lock" :

    " " HT-  ,   owned popup-  1- "" patternbrush-.
   : 
   1)  HT   (..  -2   21) -      HT-   F8 (  "sm" ),
   2)   -       "HT-"  HTSpy    Shift ( "dwp"),  Ctrl ( "sm").
    popup-  ,     .

     HTMENU, "grab menu": 
      top-level       ,        F9.    

     /   (ws_/ws_ex_/cs_):
          "/"     .
    
          "*" -       ,   "**" -       :

  "ws_disabled *": 
    Right-click  ->  trigger  EnableWindow (TRUE/FALSE)

  "ws_visible **": 
    Right-click  ->  trigger  ShowWindow (SW_HIDE/SW_SHOWNORMAL)
    Middle-click ->  trigger  ShowWindowAsync (SW_HIDE/SW_SHOWNORMAL)

  "ws_maximize **": 
    Right-click  ->  trigger  ShowWindow (SW_MAXIMIZE/SW_RESTORE)
    Middle-click ->  trigger  ShowWindowAsync (SW_MAXIMIZE/SW_RESTORE)

  "ws_minimize **": 
    Right-click  ->  trigger  ShowWindow (SW_MINIMIZE/SW_RESTORE)
    Middle-click ->  trigger  ShowWindowAsync (SW_MINIMIZE/SW_RESTORE)

  "ws_ex_toolwindow *": 
    Right-click  ->  SW_HIDE, trigger +/- WS_EX_TOOLWINDOW, SW_SHOWNORMAL  // =>  Taskbar (     WS_EX_APPWINDOW)

  "ws_ex_layered **": 
    Right-click  ->  trigger  (- WS_EX_LAYERED / + WS_EX_LAYERED + SetLayeredWindowAttributes)
    Middle-click ->  trigger  (- WS_EX_LAYERED) / + WS_EX_LAYERED + UpdateLayeredWindow)

  "cs_dropshadow *": 
    Right-click  ->  SW_HIDE, trigger  +/- CS_DROPSHADOW, SW_SHOWNORMAL


  "cs_ime * <<": 
    Right-click  ->  trigger  +/- CS_IME  +   HTSpy (  TID/PID,  WindowRect   WS_/WS_EX_/CS_ )

  "timer *":
    On/Off timer  (      HTSpy)

   "timer *"  "lock *"  right-click = left-click,   "ht-drag **"  "sc-drag **" -    = middle-click.


 CUSTOMISER 
    ( "lock"  )   ( "lock" ) :
    "ht-drag" :  
    move <resize>   / <>    //  DefWindowProc (WM_NCLBUTTONDOWN, HTCAPTION <HTBOTTOMRIGHT>)
    "sc-drag" :  
    move (resize}   / <>    //  PostMessage (WM_SYSCOMMAND, SC_SIZE+9 <SC_SIZE+8>)

 
  1)     Id   hMenu top-level-,
  ..          hWnd  (GWL_)ID.
     -    ( cursor+F8,        hWnd), 
      ,   - right-click   .
 
  2)      8- hex-  hWnd, 
       -     HTSpy.
  (,   WinXP  "00010014" -  DesktopWindow).

  3)            , 
     -     ,   message-only (m-o):
   Z-         .
       - . -.
    -   middle-click,   left-click    Ctrl.
       ( top-level)/(   m-o), (  m-o)/(  m-o).

------
 , HTSpy ,  WM_SETCURSOR "" EnableWindow:    HTSpy   WS_DISABLED, 
1)   , 2)        */**- .
------
 :  top-level    WS_DISABLED,   "" WM_NCHITTEST  "dwp"/"sm" :
    WM_NCHITTEST ,     HT- = HTERROR (. lParam of WM_SETCURSOR).
( ,        ...)
------
   -   .
------
