Per quanto riguarda in generale il concetto di subclassing nella programmazione OOP vale quanto dice menphisx.
Se parliamo invece del caso specifico di applicazioni a finestre Windows il subclassing, detto in due parole, è una tecnica con cui si vanno ad intercettare i messaggi di una finestra (o di un'intera classe di finestre) elaborandoli prima della finestra in questione. Un metodo comune di effettuare il subclassing è sostituire l'indirizzo della wndproc di una finestra con quello di una propria procedura, gestire i messaggi che interessano in questa procedura e richiamare la wndproc originale per tutti gli altri messaggi.
Ecco uno spezzone di codice di un programma a cui sto lavorando che fa uso di questa tecnica:
codice:
WNDPROC realMainIVWndProc;						//Real Main IVW wndproc
//...
//Perform the subclass
realMainIVWndProc=(WNDPROC)(LONG_PTR)SetWindowLongPtr(hMainWindow,GWLP_WNDPROC,(__int3264)(LONG_PTR)MainIVWndProc);
//...
//IrfanView main window window procedure
LRESULT CALLBACK MainIVWndProc(HWND hWnd,
    UINT uMsg,
    WPARAM wParam,
    LPARAM lParam
)
{
	//Message switch
	switch(uMsg)
	{
		case WM_MOUSEWHEEL: //Mouse wheel rotated
		//...
		break;
		//End mouse wheel rotated
		//...
	} //End message switch
	return CallWindowProc(realMainIVWndProc,hWnd,uMsg,wParam,lParam); //All other messages are passed to the real MainIVW wndproc
} //End MainIVWndProc
.