My tests show that Windows window management events behave like described
in this file, at least under Win98.
The (16/32) or (16) or (32) at the end shows whether the sequence has been
confirmed for win16, win32, or both.

Window Edge Styles (Win31 look), in order of precedence:
 WS_EX_DLGMODALFRAME: double border, WS_CAPTION allowed
 WS_THICKFRAME: thick border
 WS_DLGFRAME: double border, WS_CAPTION not allowed (but possibly shown anyway, untested)
 WS_BORDER (default for overlapped windows): single black border
 none (default for child and popup windows): no border

Window Edge Styles (Win95/98 look), in order of precedence:
 WS_EX_DLGMODALFRAME: double border, WS_CAPTION allowed
 WS_THICKFRAME: thick border
 WS_DLGFRAME: double border, WS_CAPTION not allowed (but possibly shown anyway)
 WS_BORDER (default for overlapped windows): single black border
 none (default for child (and popup?) windows): no border

Win31 look, system metrics relations:
 CYFRAME    = 5, thick border, includes both edges (the colored inside is thus 3 pixels)
 CYDLGFRAME = 4, double border
 CYBORDER   = 1, thin border
 CYCAPTION  = 20, includes both borders (the colored inside is thus 18 pixels)
 CYMENU     = 18, does not include any borders
 CYHSCROLL  = 17, includes both borders (the colored inside is thus 15 pixels)

CreateWindow (for overlapped window, not initially visible) (16/32)
Messages sent:
 WM_GETMINMAXINFO
 WM_NCCREATE
 WM_NCCALCSIZE (wParam=0)
 WM_CREATE

ShowWindow (for overlapped window) (16/32)
Messages sent:
 WM_SHOWWINDOW (wParam=1)
 WM_WINDOWPOSCHANGING (NOMOVE|NOSIZE|SHOWWINDOW)
 WM_QUERYNEWPALETTE, if in 256-color mode
 WM_WINDOWPOSCHANGING (NOMOVE|NOSIZE)
 WM_ACTIVATEAPP (wParam=1)
 WM_NCACTIVATE (wParam=1)
  DefWindowProc:
   WM_GETTEXT
 WM_ACTIVATE (wParam=1)
  DefWindowProc:
   WM_SETFOCUS (wParam=0)
 WM_NCPAINT (wParam=1)
  DefWindowProc:
   WM_GETTEXT
 WM_ERASEBKGND
 WM_WINDOWPOSCHANGED (NOMOVE|NOSIZE|NOZORDER|SHOWWINDOW)
 WM_SIZE (NOT from DefWindowProc)
 WM_MOVE (NOT from DefWindowProc)

(WM_NCHITTEST and WM_SETCURSOR will tend to follow immediately after the
 ShowWindow if the mouse is inside the window)

DestroyWindow (for overlapped window) (32)
Messages sent:
 WM_WINDOWPOSCHANGING (wParam=0)
 WM_WINDOWPOSCHANGED (wParam=0)
 WM_NCACTIVATE (wParam=0)
 WM_ACTIVATE (wParam=0)
 WM_ACTIVATEAPP (wParam=0)
 WM_KILLFOCUS (wParam=0)
 WM_DESTROY
 WM_NCDESTROY

CreateWindow (for child window, not initially visible)
Messages sent:
 WM_NCCREATE
 (child is inserted into parent's child list after WM_NCCREATE returns)
 WM_NCCALCSIZE (wParam=0)
 WM_CREATE
 WM_SIZE
 WM_MOVE
 (to parent window) WM_PARENTNOTIFY (wParam=1)

ShowWindow (for child window)
Messages sent:
 WM_SHOWWINDOW (wParam=1)
 WM_WINDOWPOSCHANGING (wParam=0)
 (to parent window) WM_ERASEBKGND
 WM_WINDOWPOSCHANGED (wParam=0)

DestroyWindow (for child window)
Messages sent:
 (to parent window) WM_PARENTNOTIFY (wParam=2)
 WM_SHOWWINDOW (wParam=0)
 WM_WINDOWPOSCHANGING (wParam=0)
 (to parent window) WM_ERASEBKGND
 WM_WINDOWPOSCHANGED (wParam=0)
 WM_DESTROY
 WM_NCDESTROY

Moving the mouse:
Messages sent:
 WM_NCHITTEST
 WM_SETCURSOR
Messages posted:
 WM_MOUSEMOVE, if WM_NCHITTEST returns HTCLIENT
 WM_NCMOUSEMOVE, if WM_NCHITTEST returns somewhere in nonclient area (not HTNOWHERE)

Moving by dragging the title bar (after WM_NCHITTEST and WM_SETCURSOR) (outline move):
 WM_NCLBUTTONDOWN (wParam=2=HTCAPTION)
  DefWindowProc:
   WM_SYSCOMMAND (wParam=0xf012=SC_MOVE+2)
    DefWindowProc:
     WM_GETMINMAXINFO
     WM_ENTERSIZEMOVE
     WM_WINDOWPOSCHANGING
     WM_WINDOWPOSCHANGED
      DefWindowProc:
       WM_MOVE
     WM_EXITSIZEMOVE

Sizing by dragging the thick borders (after WM_NCHITTEST and WM_SETCURSOR) (outline move):
 WM_NCLBUTTONDOWN (wParam=0xd)
  DefWindowProc:
   WM_SYSCOMMAND (wParam=0xf004)
    DefWindowProc:
     WM_GETMINMAXINFO
     WM_ENTERSIZEMOVE
     WM_SIZING (wParam=4) (many times, probably one for each mouse movement)
     WM_WINDOWPOSCHANGING
      DefWindowProc:
       WM_GETMINMAXINFO
     WM_NCCALCSIZE (wParam=1)
     WM_NCPAINT (wParam=1)
      DefWindowProc:
       WM_GETTEXT
     WM_ERASEBKGND
     WM_WINDOWPOSCHANGED
      DefWindowProc:
       WM_MOVE
       WM_SIZE
     WM_EXITSIZEMOVE

Resizing child window with MoveWindow (32):
 WM_WINDOWPOSCHANGING
 WM_NCCALCSIZE (wParam=1)
 WM_ERASEBKGND
 WM_WINDOWPOSCHANGED
  DefWindowProc:
   WM_MOVE
   WM_SIZE

Clicking on inactive button:
Messages sent:
 WM_NCHITTEST
 (to parent window) WM_PARENTNOTIFY (wParam=0x201=WM_LBUTTONDOWN)
 WM_MOUSEACTIVATE
  ButtonProc->DefWindowProc:
   (to parent window) WM_MOUSEACTIVATE
 WM_SETCURSOR
  ButtonProc->DefWindowProc:
   (to parent window) WM_SETCURSOR
Messages posted:
 WM_LBUTTONDOWN
  (to parent window) WM_KILLFOCUS
  WM_SETFOCUS
   (to parent window) WM_CTLCOLORBTN
  BM_SETSTATE32
   (to parent window) WM_CTLCOLORBTN
 WM_LBUTTONUP
  BM_SETSTATE32
   (to parent window) WM_CTLCOLORBTN
  (to parent window) WM_COMMAND

Reparenting a button (16/32):
 WM_SHOWWINDOW (wParam=0)
 WM_WINDOWPOSCHANGING (HIDEWINDOW|NOACTIVATE|NOMOVE|NOSIZE|NOZORDER)
 (to parent window) WM_ERASEBKGND
 WM_WINDOWPOSCHANGED (HIDEWINDOW|NOACTIVATE|NOMOVE|NOSIZE|NOZORDER)
 WM_WINDOWPOSCHANGING (NOSIZE|NOZORDER)
 WM_CHILDACTIVATE
 WM_WINDOWPOSCHANGED (NOSIZE|NOREDRAW|NOZORDER)
  DefWindowProc:
   WM_MOVE
 WM_SHOWWINDOW (wParam=1)
The last child (button) reparented gets topmost for its new parent.

Creation of a modal dialog (32):
 (to parent window) WM_CANCELMODE
 (to parent window) WM_KILLFOCUS
 (to parent window) WM_ENABLE (wParam=0)
 (window proc creation messages not tracked yet, because...)
 (dlgproc) WM_SETFONT
 (dlgproc) WM_INITDIALOG
 (...the window proc message hook was installed here, IsVisible still FALSE)
 (to parent window) WM_NCACTIVATE (wParam=0)
  DefWindowProc:
   WM_GETTEXT
 (to parent window) WM_ACTIVATE (wParam=0)
 WM_WINDOWPOSCHANGING
 (to parent window) WM_WINDOWPOSCHANGING
 WM_NCACTIVATE (wParam=1)
 WM_ACTIVATE (wParam=1)
 (setting focus)
 WM_SHOWWINDOW (wParam=1)
 WM_WINDOWPOSCHANGING
 WM_NCPAINT
  DefWindowProc:
   WM_GETTEXT
 WM_ERASEBKGND
  DialogWindowProc(?):
   WM_CTLCOLORDLG
 WM_WINDOWPOSCHANGED
 WM_PAINT
 (bunch of WM_CTLCOLOR* for each control)
 (to parent window) WM_PAINT
 (to parent window) WM_ENTERIDLE (wParam=0)
 (to parent window) WM_SETCURSOR

Destruction of a modal dialog (32):
 (inside dialog proc: EndDialog is called)
  (to parent window) WM_ENABLE (wParam=1)
  WM_SETFOCUS
  WM_WINDOWPOSCHANGING
  (to parent window) WM_NCPAINT
   DefWindowProc:
    WM_GETTEXT
  (to parent window) WM_ERASEBKGND
  WM_WINDOWPOSCHANGED
  WM_NCACTIVATE (wParam=0)
  WM_ACTIVATE (wParam=0)
  WM_WINDOWPOSCHANGING
  (to parent window) WM_WINDOWPOSCHANGING
  (to parent window) WM_NCACTIVATE (wParam=1)
   DefWindowProc:
    WM_GETTEXT
  (to parent window) WM_ACTIVATE (wParam=1)
   (to dialog) WM_KILLFOCUS
   (to parent window) WM_SETFOCUS
 WM_DESTROY
 WM_NCDESTROY

Creation of a modal dialog that is resized inside WM_INITDIALOG (32):
 (inside dialog proc, handling WM_INITDIALOG)
  WM_WINDOWPOSCHANGING
  WM_NCCALCSIZE
  (to parent window) WM_NCACTIVATE (wParam=0)
   DefWindowProc:
    WM_GETTEXT
  (to parent window) WM_ACTIVATE (wParam=0)
  WM_WINDOWPOSCHANGING
  (to parent window) WM_WINDOWPOSCHANGING
  WM_NCACTIVATE (wParam=1)
  WM_ACTIVATE (wParam=1)
  WM_WINDOWPOSCHANGED
   DefWindowProc:
    WM_SIZE
 (setting focus)
 WM_SHOWWINDOW (wParam=1)
 WM_WINDOWPOSCHANGING
 WM_NCPAINT
  DefWindowProc:
   WM_GETTEXT
 WM_ERASEBKGND
  DialogWindowProc(?):
   WM_CTLCOLORDLG
 WM_WINDOWPOSCHANGED
 WM_PAINT
 (bunch of WM_CTLCOLOR* for each control)
 (to parent window) WM_PAINT
 (to parent window) WM_ENTERIDLE (wParam=0)
 (to parent window) WM_SETCURSOR
