设为首页 加入收藏

TOP

子视窗控制项(十四)
2010-12-30 21:12:42 来源: 作者: 【 】 浏览:32661
Tags:视窗 控制
sible (hwndChild) ;

您也可以使子视窗被启用或者不被启用。在内定情况下,视窗是被启用的。您可以通过下面的呼叫使视窗不被启用:

对於按钮控制项,这具有使按钮字串变成灰色的作用。按钮将不再对滑鼠输入和键盘输入做出回应,这是表示按钮选项目前不可用的最好方法。

您可以通过下面的呼叫使子视窗再次被启用:

您还可以使用下面的呼叫来确定子视窗是否被启用:

按钮和输入焦点
 

我在本章前面已经提到过,当用滑鼠单击按钮、核取方块、单选框和拥有者绘制按钮时,它们接收到输入焦点。这些控制项使用文字周围的虚线来表示它拥有了输入焦点。当子视窗控制项得到输入焦点时,其父视窗就失去了输入焦点;所有的键盘输入都进入子视窗控制项,而不会进入父视窗中。但是,子视窗控制项只对Spacebar键作出回应,此时Spacebar键的作用就如同滑鼠按键一样。这种情形导致了一个明显的问题:您的程式失去了对键盘处理的控制项。让我们看看我们对此能做一些什么。

我在第六章中已经提到过,当Windows将输入焦点从一个视窗(例如一个父视窗)转换到另一个视窗(例如一个子视窗控制项)时,它首先给正在失去输入焦点的视窗发送一个WM_KILLFOCUS讯息,wParam参数是接收输入焦点的视窗的代号。然後,Windows向正在接收输入焦点的视窗发送一个WM_SETFOCUS讯息,同时wParam是还在失去输入焦点的视窗的代号(在这两种情况中,wParam值可能为NULL,它表示没有视窗拥有或者正在接收输入焦点)。

通过处理WM_KILLFOCUS讯息,父视窗可以阻止子视窗控制项获得输入焦点。假定阵列hwndChild包含了所有子视窗的视窗代号(它们是在呼叫CreateWindow来建立视窗的时候储存到阵列中的)。 NUM是子视窗的数目:

在这段程式码中,当父视窗获知它正在失

首页 上一页 11 12 13 14 15 16 17 下一页 尾页 14/61/61
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇功能表及其他资源 下一篇计时器

评论

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