设为首页 加入收藏

TOP

子视窗控制项(一)
2010-12-30 21:12:42 】 浏览:46620
Tags:视窗 控制
回忆第七章的CHECKER程式。这些程式显示了矩形网格。当您在一个矩形中按下滑鼠按键时,该程式就画一个x;如果您再按一次滑鼠按键,那么x就消失。虽然这个程式的CHECKER1和CHECKER2版本只使用一个主视窗,但CHECKER3版本却为每个矩形使用一个子视窗。这些矩形由一个叫做ChildProc的独立视窗讯息处理程式维护。

如果有必要,无论矩形是否被选中,都可以给ChildProc增加一种向其父视窗讯息处理程式(WndProc)发送讯息的手段。通过呼叫GetParent,子视窗讯息处理程式能确定其父视窗的视窗代号:

hwndParent = GetParent (hwnd) ;

其中,hwnd是子视窗的视窗代号。它可以向其父视窗讯息处理程式发送讯息:

SendMessage (hwndParent, message, wParam, lParam) ;

那么message应该设定为什么呢?您可以随意地设定,数值大小可以与WM_USER相同或更大,这些数字代表和预先定义的WM_ 讯息不冲突的讯息。也许对这个讯息,子视窗可以将wParam设定为它的子视窗ID。如果在该子视窗单击,那么lParam可以被设为1;如果未在该子视窗上单击,那么lParam将被设为0。这是处理方式的一种选择。

事实上,这是在建立一个「子视窗控制项」。当子视窗的状态改变时,子视窗处理滑鼠和键盘讯息并通知父视窗。使用这种方法,子视窗就变成了其父视窗的高阶输入装置。它将与自己在萤幕上的图形外观相应的处理,对使用者输入的回应以及在发生重要的输入事件时通知另一个视窗的方法给封装起来。

虽然您可以建立自己的子视窗控制项,但是也可以利用一些预先定义的视窗类别(和视窗讯息处理程式)来建立标准的子视窗控制项,您一定在别的Windows程式中看到过这些控制项。这些控制项采用的形式有:按钮、核取方块、编辑方块、清单方块、下拉式清单方块、字串标签和卷动列。例如,如果想在您的试算表程式的某个角落放置一个标有「Recalculate」的按钮,那么您可以通过呼叫CreateWindow来建立这个按钮。您不必担心滑鼠操作、按钮显示操作或按下该按钮时的自动闪烁操作,这些是由Windows内部完成的。您所要做的只是拦截WM_COMMAND讯息-当按钮被按下时,它通过这一讯息通知您的视窗讯息处理程式。真的这样简单吗?是的,一点

首页 上一页 1 2 3 4 5 6 7 下一页 尾页 1/61/61
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇功能表及其他资源 下一篇计时器

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目