| **Navigation:**  [[introduction.htm|Language Reference]] > [[chapter runtime properties.htm|App C - PROP: Runtime Properties]] > Complete Property List >====== PROP:WndProc ====== | [[prop windowsversion.htm|{{btn_prev_n.gif|Previous page}}]][[chapter runtime properties.htm|{{btn_home_n.gif|Return to chapter overview}}]][[prop xorigin.htm|{{btn_next_n.gif|Next page}}]] | | || Sets or gets the window's (not the client area) or a specific control's messaging procedure for use with low-level Windows API calls that require it. Generally used in sub-classing to track all Windows messages. **Example:** **  PROGRAM** ** MAP** **Main           PROCEDURE** **SubClassFunc1  PROCEDURE(UNSIGNED,UNSIGNED,UNSIGNED,LONG),LONG,PASCAL** **SubClassFunc2  PROCEDURE(UNSIGNED,UNSIGNED,UNSIGNED,LONG),LONG,PASCAL** **  MODULE('')                                 !SoftVelocity Win Library** **CallWindowProc PROCEDURE(LONG,UNSIGNED,SIGNED,UNSIGNED,LONG),LONG,PASCAL,NAME('CallWindowProcA')** **  END** ** END                        ** **SavedProc1   LONG** **SavedProc2   LONG** **WM_MOUSEMOVE EQUATE(0200H)** **PT       GROUP** **X         SIGNED** **Y         SIGNED** **         END** ** CODE** ** Main** **Main          PROCEDURE** **WinView WINDOW('View'),AT(0,0,320,200),HVSCROLL,MAX,TIMER(1),STATUS** **       STRING('X Pos'),AT(1,1,,),USE(?String1)** **       STRING(@n3),AT(24,1,,),USE(PT:X)** **       STRING('Y Pos'),AT(44,1,,),USE(?String2)** **       STRING(@n3),AT(68,1,,),USE(PT:Y)** **       BUTTON('Close'),AT(240,180,60,20),USE(?Close)** **      END** ** CODE** ** OPEN(WinView)** ** SavedProc1 = WinView{****PROP:WndProc****}                    !Save this procedure** ** WinView{****PROP:WndProc****} = ADDRESS(SubClassFunc1)        !Name subclass procedure** ** SavedProc2 = WinView{PROP:ClientWndProc}              !Save this procedure** ** WinView{PROP:ClientWndProc} = ADDRESS(SubClassFunc2)  !Name subclass procedure** ** ACCEPT** **  CASE ACCEPTED()** **  OF ?Close** **   BREAK** **  END** ** END** **SubClassFunc1    PROCEDURE(hWnd,wMsg,wParam,lParam)     !Sub class procedure** ** CODE                                                   ! to track mouse movement in** ** IF  wMsg = WM_MOUSEMOVE                                ! window's status bar (only)** **  PT.X = MOUSEX() ; PT.Y = MOUSEY()                     !Assign mouse position** ** END** ** RETURN(CallWindowProc(SavedProc1,hWnd,wMsg,wParam,lParam))!Pass control to SavedProc1** **SubClassFunc2    PROCEDURE(hWnd,wMsg,wParam,lParam)     !Sub class procedure** ** CODE                                                   ! to track mouse movement in** ** IF  wMsg = WM_MOUSEMOVE                                ! window's client area** **  PT.X = MOUSEX() ; PT.Y = MOUSEY()                     !Assign mouse position** ** END** ** RETURN(CallWindowProc(SavedProc2,hWnd,wMsg,wParam,lParam))!Pass control to SavedProc2**