The subclassing of a window can occur per window instance or for the entire class, meaning for the entire process. So, if you want to subclass all windows for a single dialog, you need to subclass each instance of a child control window separately. You replace the window procedure for the window's instance. -> SetWindowLong(hWnd, GWL_WNDPROC, ... ); If you want all child windows to be modified for the entire application, then you can subclass the window procedure globally by replacing the window class's window procedure with your own code. -> SetClassLongPtr(hWnd, GCLP_WNDPROC, ... );