设为首页 加入收藏

TOP

滑鼠(二十九)
2010-12-30 21:11:57 来源: 作者: 【 】 浏览:27907
Tags:滑鼠
indow函式需要一个执行实体代号。在WinMain中,执行实体代号可以很容易地取得,因为它是WinMain的一个参数。在建立子视窗时, CHECKER3必须用GetWindowLong来从Windows为视窗保留的结构中取得hInstance值(相对於GetWindowLong,我也能将hInstance的值保存到整体变数,并直接使用它)。

每一个子视窗都在hwndChild阵列中保存了不同的视窗代号。当WndProc接收到一个WM_SIZE讯息後,它将为这25个子视窗呼叫MoveWindow。MoveWindow的参数表示子视窗左上角相对於父视窗显示区域的座标、子视窗的宽度和高度以及子视窗是否需要重画。

现在让我们看一下ChildWndProc。此视窗讯息处理程式为所有这25个子视窗处理讯息。ChildWndProc的hwnd参数是子视窗接收讯息的代号。当ChildWndProc处理WM_CREATE讯息时(因为有25个子视窗,所以要发生25次),它用SetWindowWord在视窗结构保留的额外区域中储存一个0值(通过在定义视窗类别时使用的cbWndExtra来保留的空间)。ChildWndProc用此值来恢复目前矩形的状态(有X或没有X)。在子视窗中单击时,WM_LBUTTONDOWN处理常式简单地修改这个整数值(从0到1,或从1到0),并使整个子视窗无效。此区域是被单击的矩形。WM_PAINT的处理很简单,因为它所绘制的矩形与显示区域一样大。

因为CHECKER3的C原始码档案和.EXE档案比CHECKER1的大(更不用说程式的说明了),我不会试著告诉你说CHECKER3比CHECKER1更简单。但请注意,我们没有做任何的滑鼠命中测试!我们所要的,就是知道CHECKER3中是否有个子视窗得到了命中视窗的WM_LBUTTONDOWN讯息。

子视窗和键盘
 

为CHECKER3添加键盘介面就像CHECKER系列构想中的最後一步。但在这样做的时候,可能有更适当的做法。在CHECKER2中,滑鼠游标的位置决定按下Spacebar键时哪个区域将获得标记符号。当我们处理子视窗时,我们能从对话方块功能中获得提示。在对话方块中,带有闪烁的插入符号或点划的矩形的子视窗表示它有输入焦点(当然也可以用键盘进行定位)。

我们不需要把Windows内部已有的对话方块处理方

首页 上一页 26 27 28 29 30 31 32 下一页 尾页 29/50/50
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇计时器 下一篇键盘

评论

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