⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 001.txt

📁 vc++编程实例
💻 TXT
📖 第 1 页 / 共 3 页
字号:
h I c o n ; H I C O N 
h C u r s o r ; H C U R S O R 
h b r B a c k g r o u n d ; H B R U S H 
l p s z M e n u N a m e ; L P C T S T R 
l p s z C l a s s N a m e ; L P C T S T R 
} WNDCLASS; 
// style of the class 
// function called by system when 
// it has a message for a window 
// created with this class 
// extra bytes to add to the 
// WNDCLASS structure when 
// registering 
// extra bytes to add to the Wi n d o w 
// Objects created with this class 
// instance that owns this class 
//icon to be used when window 
// displays an icon 
// cursor to use when mouse is over 
// a window created with this class 
// background color to use when 
// erasing the background area under 
// a window created with this class 
// menu name to be used when 
// creating a menu for a window 
// created with this class 
// the class name that identifies 
// this WNDCLASS for the system 
有关填入类的“风格”、“图标”、“光标”和“背景色”参数的规则参看前面部分的介绍, 
其余参数的填入规则如下: 
1. 类名
类名参数是用来标识新窗口类的零结尾字符串。可以任意命名窗口类,但是不要与已有
的窗口类同名,除非想使该类无效。正如前面所提及的,系统从应用程序局部类开始,在三
个列表中寻找类名匹配,如果在该列表中记录了一个与系统全局类同名的类,则应用程序将
使用新记录的类。
2. 菜单名
该参数指向应用程序资源中的菜单名。在M F C环境中,大多数情况下由系统载入菜单, 
但可以在此处指定菜单名。如果使用资源I D,也可以采用下面语句: 
MAKEINTRESOURCE (IDR_MENU); 
这将成为该窗口的默认菜单。若指定该值为N U L L,系统将使用在类C W n d的CreateEx( ) 
中定义的菜单;若在此处没有指定的菜单,该窗口将没有菜单。
该参数对子窗口可以忽略,因为它们从来没有菜单。
3. 窗口进程和实例
这两个参数是窗口类中最重要的参数。有关窗口进程在前面已经讨论过了,而实例只是
口第1章窗13
14 第一部分基础知识
用以标识哪个应用程序包含了该窗口进程。在M F C环境中,默认的窗口进程为AfxWndProc( ), 
下载
可以使用下面语句返回该进程,并为该参数使用。
AfxGetAfxWndProc( ); 
可以用AfxGetInstanceHandle( )填入I n s t a n c e参数。
4. Class Extra和Window Extra参数
C l a s s E x t r a和Wi n d o w E x t r a参数提供了一种存储数据的方法,允许应用程序自身将所属的
数据存储到窗口对象或注册的窗口类中。注册类时, Class Extra指定在类的末尾分配的额外字
节数;创建窗口对象时, Window Extra指定添加到该窗口对象尾部的额外字节数。
在这两种情况下,这些额外字节都被应用程序用来存储属于窗口或窗口类的消息。然而, 
由于C W n d对象与一个窗口关联,并且一个C W n d对象可以存储的信息量若不比额外字节多的
话,起码也与之相等;因此,这些额外字节参数实际上并没有多大用处,可以把它们设为0。
1.6 怎样销毁一个MFC窗口类
通过取消窗口类的注册销毁窗口类。但是,如果用AfxRegisterWnd( )或A f x R e g i s t e r W n d - 
Class( )注册一个类的话,那么在应用程序结束的时候,类的注册会自动取消,即使应用程序
不取消窗口类的注册,操作系统也会取消。
1.7 厂商安装的窗口类
应用程序可能运行在一个已注册若干个窗口类的环境中。其中的一些是由操作系统
( Windows 3.1/95/98/NT)提供的;另一些是由M F C提供的。由系统提供的控件窗口也叫做通用
控件。
1. 一些重要的窗口类
Windows 3.1及以上版本: 
# 3 2 7 6 8 
创建的窗口
弹出式菜单窗口(弹出式菜
单是位于弹出窗口中,并
完全填充弹出窗口的菜单) 
桌面窗口# 3 2 7 6 9 
2. 一些重要的通用控件窗口类
Windows 3.1及以上版本: 
创建的窗口
按钮控件窗口
静态控件窗口
编辑控件窗口
列表框控件窗口
B U T TO N 
S TAT I C 
E D I T 
L I S T B O X 
3. 一些重要的通用控件窗口类
Windows 95/NT及以上版本: 
# 3 2 7 7 0 
M D I C l i e n t 
S C R O L L B A R 
C O M B O B O X 
C o m b o L B o x 
创建的窗口
对话框
M D I子窗口区域
创建的窗口
滚滚动条控件窗口
滚组合框控件窗口
滚列表框控件窗口(显示在组
合框控件窗口之下的列表框)
创建的窗口
滚多信息编辑控件窗口; 
滚列表视图控件窗口
滚扩展组合框控件窗口
滚动画控件窗口
滚幻灯片控件窗口
滚树型视图控件窗口
滚微调按钮控件窗口
滚进度指示控件窗口
滚标题控件窗口(标题控件通
常驻留在列表视图控件的顶
部) 
下载
R I C H E D I T 
S y s L i s t Vi e w 3 2 
C o m b o B o x E x 3 2 
S y s A n i m a t e 3 2 
m s c t l s _ t r a c k b a r 3 2 
S y s Tr e e Vi e w 3 2 
m s c t l s _ u p d o w n 3 2 
m s c t l s _ p r o g r e s s 3 2 
S y s H e a d e r 3 2 
4. 一些重要的M F C窗口类
A f x W n d 
创建的窗口
C W n d窗口
M F C框架和视窗A f x F r a m e O r Vi e w 
1.8 其他类型窗口
窗口有三种基本的类型—重叠窗口、弹出窗口和子窗口。但在一个M F C应用程序中, 
可以用不同的方法使用它们。除非特别提到,封装这些窗口的类都从CWn d类派生。下面列出
的是从使用角度分类的窗口类型: 
控件窗口完全把自己画得像个控件的子窗口。例如按钮、静态文本控件和列表框等。
对话框一个弹出窗口,使用资源文件中指定的控件填充自己,并对控件作出处理。
消息框应用程序用来提示用户作出反应的弹出窗口。
工具栏绘制自身按钮的子窗口。
对话条保持打开状态,作为工具栏的对话框。
状态栏一个子窗口,通常位于应用程序主窗口的底部,并用来显示正在使用的命令的帮
助信息。
框架窗口一个重叠窗口,通常在应用程序中作为所有其他窗口的父窗口和物主窗口。框
架窗口也可以通过应用程序对象监督用户命令,这一问题将在下一章中进行详细讨论。
文档/视图实际上是由两个M F C类对象和一个子窗口构成的。M F C应用程序是以“文档
为中心的”,这意味着应用程序负责装载、查看、编辑和存储文档,而不管这些文档是文本文
件、图形文件还是二进制结构文件。首先,创建M F C文档类对象,从磁盘中读入一个文档, 
赋予其成员变量;然后,创建一个或多个视图类对象,以显示这些成员变量。如果创建了多
个视图类对象,则一个文档将有多个视图。由于M F C文档类没有关联窗口,因而它不是从
C W n d类派生的。
文档模板实际上没有窗口,而是在打开一个文档时,应用程序用来确定创建什么样的
M F C文档类对象和M F C视图对象。理论上讲,一个应用程序可以有多个文档模板,并允许一
个应用程序处理多种类型的文档,然而,绝大多数应用程序只有一个模板。M F C文档模板不
口第1章窗15 
创建的窗口
选项卡控件窗口
月历控件窗口
日期/时间选项控件窗口
热键控件窗口
工具提示控件窗口
状态栏窗口
工具栏窗口
R e b a r窗口
S y s Ta b C o n t r o l 3 2 
S y s M o n t h C a l 3 2 
S y s D a t e Ti m e P i c k 3 2 
m s c t l s _ h o t k e y 3 2 
t o o l t i p s _ c l a s s 3 2 
m s c t l s _ s t a t u s b a r 3 2 
t o o l b a r Wi n d o w 3 2 
R e B a r Wi n d o w 3 2 
A f x M D I F r a m e 
创建的窗口
M D I框架窗口
M F C控制条窗口A f x C o n t r o l B a r
16 第一部分基础知识
下载
是从C W n d类派生的。想更多地了解有关文档模板的内容,请参看第2章。
窗口管理器
列表
程序管
理器窗
口对象
系统盘窗
口对象③窗口管理器也告知一个
窗口的每个子窗口重新
绘制自己
框架窗
口对象
子窗口对
象列表
子窗口对
象列表
④告诉任何一个
子窗口的子窗
口,以此类推
② 然后,窗口管理器
遍览该列表,通知
每个窗口进程重新
绘制自己
图1-11 窗口管理器通过使用窗口管理器列表维护桌面窗口
1.9 桌面窗口
本章中最后一个问题是桌面窗口(Desktop Wi n d o w ),所有其他窗口都显示在它的上面, 
并最终属于它。桌面窗口自身是一个弹出窗口,并且是最高阶弹出窗口。最高阶窗口列表是
由窗口管理器维护的,因此也叫做窗口管理器列表( Windows Manager List)。窗口管理器应用
该列表维护桌面窗口,如图1 - 11所示: 
桌面窗
口对象
① 如果屏幕需要刷新, 
则窗口管理器从桌面
窗口获得所有最顶层
窗口的列表。该列表
是桌面窗口的子窗口
列表—也称为窗口
管理器列表
桌面窗口的其他相关信息如下: 
■ 桌面窗口由# 3 2 7 6 9窗口类所建(不是数字“ 3 2 7 6 9”,而是字符串# 3 2 7 6 9 )。
■ 若要获得桌面窗口的句柄,可以用: : G e t D e s k t o p Window( )。
■ 可以用带S P I _ S E T D E S K WA L L PA P E R参数的SystemParametersInfo( )在桌面上设置一幅
背景图像。
■ Shell_NotifyIcon( )将图标放置到外壳盘(Shell Tr a y )里—以后在任务栏里发现的小图
标集。
■ 可以用: : F i n d Window( )搜索桌面上的窗口。
■ 可以用Wi n d o w F r o m P o i n t ( )找到当前窗口在桌面上的点坐标。
■ 可以用: : G e t S y s t e m M e t r i c s ( S M _ C X S C R E E N )和::GetSystemMetrics (SM_CYSCREEN)获
得屏幕尺寸。
1.10 小结
在本章中我们讨论了如下内容: 
■ 使用M F C类和M i c r o s o f t的特征—窗口类(不是C + +类)创建用户界面窗口的M F C应用
程序方法。
下载
■ 用M F C创建和销毁窗口和窗口类的步骤。
■ 系统提供的窗口类。
■ 三种类型的窗口—重叠窗口、弹出窗口和子窗口,并介绍了在应用程序中创建关于
它们的各种各样的窗口。
■ 桌面窗口及其相关的几种主要功能。
在下一章中,我们将讨论M F C提供的类。
口第1章窗17

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -