技术 > 视窗子类别化
  卷动列控制项的视窗讯息处理程式是windows内部的。但是,将gwl_wndproc识别字作为参数来呼叫getwindowlong,您就可以得到这个视窗讯息处理程式的位址。另外,您可以呼叫setwindowlong给该卷动列设定一个新的视窗讯息处理程式,这个技术叫做「视窗子类别化」,非常有用。它能让您给现存的视窗讯息处理程式设定「挂勾」,以便在自己的程式中处理一些讯息,同时将其他所有讯息传递给旧的视窗讯息处理程式。
  在colors1中对卷动讯息进行初步处理的视窗讯息处理程式叫做scrollproc,它在colors1.c档案的尾部。由於scrollproc是colors1中的函式,而windows将呼叫colors1,所以scrollproc必须被定义为callback函式。
  对三个卷动列中的每一个,colors1使用setwindowlong来设定新的卷动列视窗讯息处理程式的位址,并取得现存卷动列视窗讯息处理程式的位址:
  oldscroll = (wndproc) setwindowlong (hwndscroll, gwl_wndproc,
  (long) scrollproc)) ;
  现在,函式scrollproc得到了windows发送到colors1中三个卷动列(当然不是其他程式中的卷动列)的卷动列视窗讯息处理程式的全部讯息。scrollproc视窗讯息处理程式在接收到tab或者shift-tab键时,就将输入焦点改变到下一个(或者上一个)卷动列。它使用callwindowproc呼叫旧的卷动列视窗讯息处理程式。