防止用户进行正常的GUI 操作
2006-07-23 11:30:33 来源:WEB开发网核心提示:本文示例源代码或素材下载 问题:我在VC6.0中建立了一个SDI工程,工程中将主框架窗口切分为两个视图窗口,防止用户进行正常的GUI 操作,如何防止用户移动主窗口以及调整切分视图的大小?有时候总感觉对不起用户,原因是编程人员总是出于自己的目的,通常你根本不必关心非客户区的存在以及它包含一些什么区域,但有时候,限
本文示例源代码或素材下载
问题:
我在VC6.0中建立了一个SDI工程,工程中将主框架窗口切分为两个视图窗口。如何防止用户移动主窗口以及调整切分视图的大小?
有时候总感觉对不起用户,原因是编程人员总是出于自己的目的,限制用户进行这样或那样正常的图形界面操作。如果某个程序限制我移动窗口、调整窗口大小或限制使用剪切、粘贴等功能的话,我的第一感觉就是将这个程序丢进垃圾箱。
但我是谁,凭什么对此妄加评论呢?也许在某些情况下限制窗口移动和调整窗口大小的操作是明智的呢。也许你在为总统编写一个核武器控制程序呢。不管怎样总是有这样的需求。限制调整窗口大小的最简单的方法是创建窗口时不要用WS_THICKFRAME。如果一个窗口没有了框架,那调整大小的途径就堵住了,但关闭WS_THICKFRAME后,窗口还有一个标题框,用它鼠标点住它还可以移动窗口。为此你还必须屏蔽掉WS_CAPTION,这样一来,你的应用程序连标题框都没了。你当然要让总统知道他正在使用的是核武器控制程序,而不是太空战游戏。如何避免这种进退两难的局面呢?如何让应用程序有标题框而又不能移动窗口呢?并且你还不想使用瘦框架,而使用肥框架又不能调整串口大小该如何实现?
实际上,蛋糕会有的,而且你还能吃到蛋糕。你既可以让窗口成为粗框架并带有标题框,同时又可以限制窗口的移动和调整窗口的大小。诀窍就是处理WM_NCHITTEST消息。当鼠标位于非客户区时,Windows会发送这个暧昧的消息来检查鼠标特定的位置。所谓非客户区:就是......,这是菜鸟级的问题啦,我在这就不罗嗦了,非客户区所包括的范围有:菜单、标题况和窗口边界。通常你根本不必关心非客户区的存在以及它包含一些什么区域,但有时候,比如现在你最好还是卷起袖子认真研究一下它吧。
赞助商链接