视窗子类别化

王朝百科·作者佚名  2010-01-04  
宽屏版  字体:   |    |    |  超大  

卷动列控制项的视窗讯息处理程式是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呼叫旧的卷动列视窗讯息处理程式。

 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝百科 版权所有