设为首页 加入收藏

TOP

滑鼠(三十五)
2010-12-30 21:11:57 来源: 作者: 【 】 浏览:27890
Tags:滑鼠
rent, idChild) ;

在CHECKER4中,整体变数idFocus用於保存目前输入焦点视窗的子视窗ID。我在前面说过,当您在子视窗上面单击滑鼠时,它们不会自动获得输入焦点。因此,CHECKER4中的父视窗将通过呼叫下面的函式来处理WM_SETFOCUS讯息:

SetFocus (GetDlgItem (hwnd, idFocus)) ;

这样设定一个子视窗为输入焦点。

ChildWndProc处理WM_SETFOCUS和WM_KILLFOCUS讯息。对於WM_SETFOCUS,它将保存在整体变数idFocus中接收输入焦点的子视窗ID。对於这两种讯息,视窗是无效的,并产生一个WM_PAINT讯息。如果WM_PAINT讯息画出了有输入焦点的子视窗,则它将用PS_DASH画笔的风格画一个矩形以表示此视窗有输入焦点。

ChildWndProc也处理WM_KEYDOWN讯息。对於除了Spacebar和Enter键以外的其他讯息,WM_KEYDOWN都将给父视窗发送讯息。另外,视窗讯息处理程式也处理类似WM_LBUTTONDOWN讯息的讯息。

处理方向移动键是父视窗的事情。在风格相似的CHECKER2中,此程式可获得有输入焦点的子视窗的x和y座标,并根据按下的特定方向键来改变它们。然後通过呼叫SetFocus将输入焦点设定给新的子视窗。

拦截滑鼠
 

一个视窗讯息处理程式通常只在滑鼠游标位於视窗的显示区域,或非显示区域上时才接收滑鼠讯息。一个程式也可能需要在滑鼠位於视窗外时接收滑鼠讯息。如果是这样,程式可以自行「拦截」滑鼠。别害怕,这么做没什么大不了的。

设计矩形
 

为了说明拦截滑鼠的必要性,请让我们看一下BLOKOUT1程式(如程式7-6所示)。此程式看起来达到了一定的功能,但它却有十分严重的缺陷。

 程式7-6 BLOKOUT1
BLOKOUT1.C
/*----------------------------------------------------------------------------
BLOKOUT1.C -- Mouse Button Demo Program
(c) Charles Petzold, 1998
---------------------------------------------------------------
首页 上一页 32 33 34 35 36 37 38 下一页 尾页 35/50/50
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇计时器 下一篇键盘

评论

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