设为首页 加入收藏

TOP

子视窗控制项(三十六)
2010-12-30 21:12:42 来源: 作者: 【 】 浏览:32705
Tags:视窗 控制

事实上,SB_TOP和SB_BOTTOM卷动讯息只能用键盘产生。在使用滑鼠按动卷动列时,如果想使该卷动列获得输入焦点,那么您必须将WS_TABSTOP识别字包含到CreateWindow呼叫的视窗类别参数中。当卷动列拥有输入焦点时,在该卷动列的小方框上将显示一个闪烁的灰色块。

为了给卷动列提供全面的键盘介面,还需要另外一些工作。首先,WndProc视窗讯息处理程式必须使卷动列拥有输入焦点,它是通过处理WM_SETFOCUS讯息来完成这一点的,该WM_SETFOCUS讯息是当卷动列获得输入焦点时其父视窗接收到的。WndProc给其中一个卷动列设定输入焦点。

SetFocus (hwndScroll[idFocus]) ;

其中idFocus是一个整体变数。

但是,还需要一些借助键盘尤其是Tab键,来从一个卷动列转换到另一个卷动列的方法。这比较困难,因为一旦某个卷动列拥有了输入焦点,它就处理所有的键盘输入,但卷动列只关心游标键,而忽略Tab键。解决这一两难处境的方法是「视窗子类别化」。我们将用它来给COLORS1增加使用Tab键从一个卷动列跳到另一个卷动列的功能。

视窗子类别化(Window Subclassing)
 

卷动列控制项的视窗讯息处理程式是Windows内部的。但是,将GWL_WNDPROC识别字作为参数来呼叫GetWindowLong,您就可以得到这个视窗讯息处理程式的位址。另外,您可以呼叫SetWindowLong给该卷动列设定一个新的视窗讯息处理程式,这个技术叫做「视窗子类别化」,非常有用。它能让您给现存的视窗讯息处理程式设定「挂勾」,以便在自己的程式中处理一些讯息,同时将其他所有讯息传递给旧的视窗讯息处理程式。

在COLORS1中对卷动讯息进行初步处理的视窗讯息处理程式叫做ScrollProc,它在COLORS1.C档案的尾部。由於ScrollProc是COLORS1中的函式,而Windows将呼叫COLORS1,所以S

表9-5
游标键卷动讯息的wParam值
Home SB_TOP
End SB_BOTTOM
Page Up SB_PAGEUP
Page Down SB_PAGEDOWN
左或上 SB_LINEUP
右或下 SB_LINEDOWN
首页 上一页 33 34 35 36 37 38 39 下一页 尾页 36/61/61
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇功能表及其他资源 下一篇计时器

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: