您现在的位置: 中国教师站 >> 教师关注 >> 电脑技术 >> 编程技术 >> Visual C >> 正文

Google
探索Win32系统之窗口类(Window Classes in Win32)
作者:Siny 文章来源:中国教师站cn-teacher 点击数: 更新时间:2007-4-22 12:49:20
 

翻译说明: 以前一直没有很在意窗口类的使用,我近期在用vc做一些界面时遇到窗口类定义的概念,这次翻MSDN的时候看到了一篇文章,讲到窗口类的一些基本概念,匆匆看完,翻译出来当学习笔记,可能有一些细节上的谬误,请包涵。放在网上,如果大家觉得值得参考,就看看。

在MFC编程里,窗口类的概念接触的已经比较少了,在SDK编程的时候则至少还需要声明一个WNDCLASS(EX)类RegisterClass(Ex)一下。但是窗口类在windows中是无所不在的,虽然不是很深奥的东西,了解一下其中细节,个人觉得对编程应该是有好处的。

vcbear翻译 vcbear@163.com

 


<正文>

探索Win32系统之窗口类(Window Classes in Win32)

Kyle Marsh
Microsoft Developer Network Technology Group
MSDN技术组

  • 摘要

本文主要介绍win32系统里窗口类的运做和使用机制,探索一些细节问题,使win32窗口类的信息更加明朗化。

在本文中,"类","窗口类"这两个术语等同,都不是指C++类,而是指和窗口相关的一组信息的集合。

  • 简介

窗口类的风格决定了窗口的外观和风格。所有的窗口都会属于某一个窗口类。在创建一个窗口之前,必须注册(register)一个相应的窗口类。32位Windows操作系统类可以注册被系统里所有的程序所使用的窗口类。

大部分开发人员认为窗口类是个麻烦的东西,他们顶多就是从例子或其他代码中拷贝一个RegisterClass函数,修改一下部分参数而已。这仿佛有些轻视了,没有发挥窗口类的作用。本文将对此进行探索,并且描述窗口类如何的使应用程序得到优化。

我们的将讨论的题目包括:

  • 什么是窗口类(Windows Classes)

  • 系统全局,应用程序全局,应用程序局部类的区别

  • 类里包含了那些信息

  • 这些信息如何影响窗口的表现

  • 应用程序如何使用窗口类信息。


 

一:窗口类的类型

window系统提供了三种类型的窗口类

  • 系统全局类(System global classes)

  • 应用程序全局类(Application global classes)

  • 应用程序局部类(Application local classes)

1.系统全局窗口类(System Global Classes)

windows 本身注册了几个系统全局类供全部的应用程序使用,这些类包括了以下的常用标准窗口控件

  • Listbox (列表框)

  • ComboBox (下拉组合框)

  • ScrollBar (滚动条)

  • Button (按钮)

  • Static (静态标签)

  • Edit (编辑框)

以及其他不那么常用的控件如TabCtrl等.

还有:

  • 菜单窗口

  • 桌面窗口

  • 对话框窗口

  • 任务条窗口

  • 题头带图标的窗口

  • ComboLBox:ComBoBox控件的下拉列表窗口

  • MDIClient: MDI风格窗口的子窗口

WindowsNT为DDEML(Dynamic Data Exchange Management Library)增加了DDEMLEvent类,因为DDEML功能已经结合到USER里去了。

Windows 95/98不注册类 #32772,因为它不使用题头带图标风格的窗口(由于我用的是win2k操作系统,这一点没有尝试)

所有的win32应用程序都可以使用系统全局类,但不能增加或删除一个这样的类。

应用程序可以通过“子类化”(SubClassing)这些类来改变系统全局类的属性。在Win32里,应用程序子类化某个系统全局类只会影响本进程内窗口的表现,而不会影响另外一个进程或应用程序。比起相应的操作会影响其他窗口的win16时代,这是一个进步。

在Win32里,Ms鼓励“子类化”系统类的行为。因为这个技术可以非常有效和方便的改变窗口的表现。例如:如果应用程序希望限制edit控件的输入和编辑行为,可以通过子类化edit类并设置一个新的窗口过程(WindowProc)来自己处理处理键盘操作来实现。子类化以后,此应用程序里创建的edit控件将使用新的窗口过程,以代替标准的edit控件窗口过程。

系统全局窗口类实现

现在的win32平台使系统类和各32位进程互不相干,系统类如何实现的并不会直接影响应用程序。本节将描述系统类的实现,当然,跳过此节并不妨碍全文的阅读和理解。

  • 在win9x里的实现

系统全局类在win9x和win3.1的实现使相当相象的。在系统启动时,USER模块创建了系统类。win9x和win3.1不同的是:当发现一个应用程序子类化了某个系统类的时候,win9x将进行如下工作:

  • 如果在debug模式下运行,在debug屏幕上显示一个

    [1] [2] [3] [4] [5] [6] 下一页

相关专题:
 
 网友评论:(评论内容只代表网友观点,与本站立场无关!)
GOOGLE广告

阅读排行

| 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 |
中国教师站

中国教师站 版权所有 Copyright © 2006-2020 All Rights Reserved 站长:Sina & Siny
[备用域名:www.JXZYW.Com] 有事请留言有事请留言
【实力成就精品 诚信呵护品牌】

信息产业部备案
苏ICP备06018635号