[上一章]    [下一章]

 

窗口组件实例讲解

作者:创世魂

 

● 概述

本类中的功能并不能单独使用,必须基于窗口组件进行操作,例如:编辑框、按钮等。

 

● 可停留焦点(读写)

 

帮助文档如下图:

本属性的主要作用可以决定在使用TAB按键进行焦点切换时,当前组件是否允许获得焦点。

 

界面设计如下图:

在窗口中放三个编辑框。

 

代码编写如下图:

给编辑框2设置当前属性为假。

 

运行效果如下图:

左图:设置前按TAB键的效果。

右图:设置后按TAB键的效果。

可以看到,当设置当前属性为假后,按tab键时会跳过编辑框2组件。

  

 

● 可视(读写)

 

帮助文档如下图:

本组的作用可用于设置组件的显示和隐藏状态,同名的读属性可用于判断当前组件是否显示。

 

界面设计如下图:

在窗口中放一个按钮和一个编辑框组件用于演示。

 

代码编写如下图:

当按钮点击后,判断编辑框的可视状态,来绝对编辑框是否显示。

 

运行效果如下图:

当按钮点击后,组件可以在显示和不显示之间任意切换。

 

●宽度 (读写)

 

帮助文档如下图:

本属性可用于设置组件宽度,单位像素。同名读属性可用于读取宽度。

 

界面设计如下图:

设计界面时让编辑框组件的尺寸小于按钮尺寸。

 

代码编写如下图:

按钮点击后,设置编辑框的宽度等于按钮宽度。

 

运行效果如下图:

最终编辑框尺寸将会和按钮尺寸一致。

 

● 高度(读写)

 

帮助文档如下图:

本属性用于设置组件高度,单位像素。同名读属性可用于读取组件高度。

 

界面设计如下图:

设计界面时让编辑框组件的尺寸小于按钮尺寸。

 

代码编写如下图:

取出按钮的高度赋值给编辑框的高度。

 

运行效果如下图:

最终两个组件的高度将一致。

 

● 左边(读写)

 

帮助文档如下图:

本属性可修改组件左边距离父组件左边的距离,单位像素。

如果当前组件无父组件时,将以窗口为准。

 

界面设计如下图:

 

代码编写如下图:

当按钮点击后,修改编辑框的左边等于按钮的左边位置。

 

运行效果如下图:

最终可看到编辑框的左边与按钮左边对齐。

 

● 顶边(读写)

 

帮助文档如下图:

本属性可修改组件顶边距离父组件顶边的距离,单位像素。

如果当前组件无父组件时,将以窗口为准。

 

代码编写如下图:

当按钮点击后,修改编辑框的顶边等于按钮顶边。

 

运行效果如下图:

最终编辑框顶边位置等于按钮顶边。

 

●标题 (读写)

 

帮助文档如下图:

通过本属性可设置组件标题,但并非所有组件都具备标题显示,例如:画板、进度条等组件就不具备标题显示。

注意:如果需要在组件上显示&符号,则需要输入两个符号才能显示出来。

 

界面设计如下图:

在窗口上放置一些可以设置标题的组件。

 

代码编写如下图:

按钮点击后修改这些标题。

 

运行效果如下图:

最终可以看到所有组件的标题内容都被修改。

并且可以看到单独使用&符号时并不会显示,只有使用了两个&&符号后才会显示出来。

 

● 禁止(读写)

 

帮助文档如下图:

通过本属性可以让组件禁止操作,同名读属性可以判断组件是否被禁止。

 

界面设计如下图:

在窗口中放两个组件,分别是按钮和编辑框。

 

代码编写如下图:

按钮点击后判断编辑框的禁止状态,并执行是否对编辑框进行禁止操作。

 

运行效果如下图:

当按钮点击后编辑框将被禁止,禁止后将不能操作编辑框组件,取消禁止后可继续操作。

 

● 组件位置(读写)

 

帮助文档如下图:

本属性可用于调整组件位置,并且在调整位置的同时设置组件尺寸。

注意:针对父组件的左上角为准。

 

代码编写如下图:

1、定义类型为“矩形类”的变量,分别设置矩形区域属性。

2、给编辑框组件设置本属性值为此变量。

 

运行效果如下图:

最终编辑框组件位置和尺寸均被改变。

 

● 首组件(读写)

 

帮助文档如下图:

本属性可设置一组组件的首组件,通常用于单选框操作。

 

界面设计如下图:

在界面中设置两组单选框组件。

第一组:直接放置在窗口中。

第二组:放置在分组框容器内。

 

代码编写如下图:

分别给第一组和第二组的第一个组件都设置首组件属性。

 

运行效果如下图:

左图:没设置本属性之前的效果,可以看到两组组件之间冲突。

右图:设置后可以看到两组组件可以正常操作。

   

 

●字体 (写)

 

帮助文档如下图:

通过本属性可以设置组件字体样式,共有7个选项,每个选项之间用英文逗号隔开。

例如:"宋体, 10, 0, 1, 1, 0, 100"

 

界面设计如下图:

在窗口中放一个按钮和编辑框。

 

代码编写如下图:

第一种方式:按照帮助页的注释规则,直接设置本属性值。

第二种方式:在属性栏可以点击打开字体选择器,手动选择字体样式。

 

运行效果如下图:

最终编辑框的字体将会被改变。

 

● 标准鼠标指针(写)

 

帮助文档如下图:

通过本属性可设置当前组件鼠标经过时的鼠标指针样式。

属性值调用方式:标准鼠标指针类型.XXX。

 

界面设计如下图:

在窗口中放一个按钮和两个编辑框。

 

代码编写如下图:

按钮点击后,分别给编辑框设置不同的鼠标样式。

 

运行效果如下图:

最终可以看到,当按钮点击后,鼠标经过编辑框时样式会发生变化。

 

●组件边框 (写)

 

帮助文档如下图:

本属性用于设置组件边框效果,调用方式“组件边框类型.XXX”.

注意:本属性对窗口无效。

 

代码编写如下图:

按钮1被点击后,分别设置两个编辑框组件的边框效果。

 

运行效果如下图:

最终可看到编辑框样式发生改变。

 

 

● 自定义鼠标指针(写)

 

帮助文档如下图:

通过本属性可以给当前组件设置一个外部的指针文件,后缀名通常为cur格式。

注意:使用本属性会覆盖“标准鼠标指针”属性。

 

界面设计如下图:

在窗口上放两个编辑框,给其中一个编辑框设置本属性,引入一个鼠标指针文件。

 

运行效果如下图:

运行后可以看到当前“编辑框1”“编辑框2”显示的鼠标指针不同。

 

● 标记(变)

 

帮助文档如下图:

本变量是窗口组件的成员变量,任何窗口组件都可以使用,用于设置一个标记文本。

 

界面设计如下图:

在窗口中放一个按钮和编辑框。

 

代码编写如下图:

1、在表格属性中设置标记文本。

2、按钮点击后取出设置的标记文本。

 

运行效果如下图:

最终按钮的标记文本被取出。

 

●失去焦点 (事件)
●获得焦点 (事件)

 

“失去焦点”帮助文档如下图:

当组件失去焦点的时候将会触发本事件。

 

“获得焦点”帮助文档如下图:

当组件获得焦点后会触发本事件。

 

代码编写如下图:

分别添加这两个事件,并给编辑框的内容赋值。

 

运行效果如下图:

最终可以看到,当编辑框失去和获得输入焦点时,编辑框的内容将会被随之改变。

 

● 字符输入(事件)

 

帮助文档如下图:

当任意字符被输入时,将会触本事件,其中也包含退格键,回车键。

 

界面设计如下图:

打开设计器在窗口上方两个编辑框组件。

 

代码编写如下图:

添加字符输入事件,将编辑框1输入的字符显示在编辑框2中。

 

运行效果如下图:

最终可看到编辑框1的字符出现在了编辑框2中。

 

● 按下某键(事件)
● 放开某键(事件)

 

“按下某件”帮助文档如下图:

当按下键盘某个按键时可触发本事件,并返回两个参数。

参数1:调用方式“按键码.XX”,包含了键盘上所有的按键。

参数2:调用方式“辅助键状态.XX”,主要用于组合按键操作,包含了“Ctrl”“Shift”“Alt”按键。。

 

“放开某键”帮助文档如下图:

当键盘上的按键被放开时触发本事件,返回的两个参数与“按下某件”一致。

 

代码编写如下图:

分别添加这两个事件,并判断ctrl键被按下和放开。

 

运行效果如下图:

最终可看到编辑框2中输出了相关字符,证明ctrl监听成功。

 

实现组合按键代码:

组合按键通常使用“放开某键”事件。

添加事件后,判断“键代码”“辅助键状态”是否等于指定按键,如果相等就输出内容。

 

运行效果如下图:

最终当键盘放开Ctrl+B按键后,将会在编辑框2中输出信息。

 

● 滚轮被滚动(事件)

 

帮助文档如下图:

当鼠标滚轮被滚动后触发本事件,共返回两个参数。

参数1:用于判断滚动方向。

参数2:用于组合键判断。

 

代码编写如下图:

添加本事件后判断“滚动距离”并输出对应内容。

 

运行效果如下图:

最终当在编辑框1中滚动鼠标滚轮滚轮时,编辑框2会输出内容。

 

● 被双击(事件)

 

帮助文档如下图:

当组件被双击时,会触发本事件并返回三个参数。

参数1、2:返回鼠标所在位置。

参数3:用于组合键判断。

 

代码编写如下图:

当编辑框1被双击时,在编辑框2中输出内容。

 

运行效果如下图:

最终可看到编辑框内容中输出了不同的坐标位置。

 

● 鼠标位置被移动(事件)

 

帮助文档如下图:

当组件鼠标指针位置发生移动时,会触发本事件并返回三个参数。

参数1、2:返回鼠标所在位置。

参数3:用于组合键判断。

 

代码编写如下图:

判断编辑框2鼠标移动时,在编辑框1中输出坐标信息。

 

运行效果如下图:

可以看到坐标被实时显示在编辑框1中。

 

● 鼠标右键被按下(事件)
● 鼠标右键被放开(事件)

 

“鼠标右键被按下”帮助文档如下图:

当组件鼠标右键被按下时,会触发本事件并返回三个参数。

参数1、2:返回鼠标所在位置。

参数3:用于组合键判断。

 

“鼠标右键被放开”帮助文档如下图:

当组件鼠标右键被放开时,会触发本事件并返回三个参数。

参数1、2:返回鼠标所在位置。

参数3:用于组合键判断。

 

代码编写如下图:

分别添加这两个事件,并在编辑框中输出内容。

 

运行效果如下图:

最终当鼠标右键按下和放开时会分别显示不同的信息。

 

● 鼠标左键被按下(事件)
● 鼠标左键被放开(事件)

 

“鼠标左键被按下”帮助文档如下图:

当组件鼠标左键被按下时,会触发本事件并返回三个参数。

参数1、2:返回鼠标所在位置。

参数3:用于组合键判断。

 

“鼠标左键被放开”帮助文档如下图:

当组件鼠标左键被放开时,会触发本事件并返回三个参数。

参数1、2:返回鼠标所在位置。

参数3:用于组合键判断。

 

代码编写如下图:

分别添加这两个事件,并在编辑框中输出内容。

 

运行效果如下图:

最终当鼠标左键按下和放开时会触发本事件。

 

● 信息框

 

帮助文档如下图:

本方法在使用时可以不依赖窗口组件,但是必须保证调用本方法时,当前所处类是窗口。

参数1:提供要显示的信息。

参数2:提供按钮或图标类型,例如“信息框按钮.取消是否钮 + 信息框按钮.信息图标”

参数3:提供信息框标题。

 

界面设计如下图:

打开窗口后放一个按钮。

 

代码编写如下图:

1、定义类型为“返回按钮类型”的局部变量用来存储信息框返回值。

2、调用信息框方法,设置相关参数后赋值给定义的变量。

3、判断被点击的按钮类型。

 

运行效果如下图:

最终可看到当信息框按钮被点击后,窗口标题也会随之修改。

 

● 允许重画
● 禁止重画

 

“允许重画”帮助文档如下图:

本方法配合“禁止重画()”方法,可以实现快速加载数据。

同样也可以防止数据加载过快发生的组件闪烁现象。

 

“禁止重画”帮助文档如下图:

调用本方法可让组件禁止绘制,提升组件加载数据效率,防止组件闪烁。

 

界面设计如下图:

在窗口上放三个组件分别是:按钮,列表框和标签。

 

代码编写如下图:

1、按钮点击后首先记录启动时间。

2、调用禁止重画后循环加载1000条数据到列表框。

3、循环结束后调用允许重画。

4、最后计算耗时。

 

运行效果如下图:

左图:未使用禁止重画方法耗时“0.22秒”

右图:使用后仅耗时“0.03”秒,快了7倍。

  

 

● 创建组件

 

帮助文档如下图:

通过本方法可以动态创建窗口组件,成功返回真。

注意:创建窗口组件时务必使用成员变量。

 

代码编写如下图:

1、定义类型为“按钮”的成员变量,起名“按钮1”

2、添加“创建完毕”窗口事件,通过“按钮1”调用本方法创建组件。

 

运行效果如下图:

软件运行后将会在窗口左上角看见一个100*100尺寸的按钮组件。

 

● 取屏幕位置

 

帮助文档如下图:

通过本方法可以取出当前组件在屏幕中的位置,如果单独调用本方法则会取出窗口在屏幕中的位置。

 

界面设计如下图:

在窗口中放一个按钮和编辑框。

 

代码编写如下图:

分别取出窗口位置和按钮1的位置信息。

 

运行效果如下图:

最终可看到位置信息被成功取出。

 

● 取用户区宽度

 

帮助文档如下图:

可用于取出组件宽度或者当前窗口用户区宽度。

注意:窗口用户区宽度不等于窗口宽度。

 

代码编写如下图:

分别取出窗口用户区宽度和按钮宽度。

 

运行效果如下图:

按钮宽度和窗口用户区宽度被成功取出。

 

● 取用户区高度

 

帮助文档如下图:

本方法可用于取出窗口用户区高度或组件高度。

注意:窗口用户区高度不等于窗口高度。

 

代码编写如下图:

按钮点击后分别取出窗口用户区高度或按钮高度。

 

运行效果如下图:

最终两个高度尺寸均被取出。

 

● 取用户区矩形

 

帮助文档如下图:

通过本方法可取出组件或者窗口的矩形区域。

注意:并非坐标信息。

 

代码编写如下图:

按钮点击后分别取出窗口和按钮的矩形区域。

 

运行效果如下图:

最终两个矩形区域被分别取出。

 

● 取窗口句柄

 

帮助文档如下图:

在使用mfc界面库时,任何一个窗口组件都有句柄,通过本方法可以取出句柄信息。

 

代码编写如下图:

窗口句柄可用于投递消息判断。

1、按钮点击后通过按钮组件投递消息。

2、添加“消息过滤”窗口虚拟方法,可以获取按钮组件投递的消息。

3、判断消息值和窗口句柄,可以确定是否为“按钮1”投递的消息。

 

运行效果如下图:

最终编辑框1将会输出内容。

 

● 可有焦点

 

帮助文档如下图:

本方法可用于判断当前组件是否获得焦点。

 

代码编写如下图:

按钮点击后调用本方法判断。

 

运行效果如下图:

因为当按钮点击后,焦点会转移到按钮上,因此会提示编辑框1没有焦点。

 

● 是否为空
● 销毁

 

“是否为空”帮助文档如下图:

通过本方法可用于判断窗口组件是否被创建。

 

“销毁”帮助文档如下图:

调用当前方法可销毁当前组件,销毁后窗口组件将会消失在窗口上。

 

界面设计如下图:

在窗口中放两个按钮和一个编辑框组件。

 

代码编写如下图:

1、按钮1点击后执行销毁方法。

2、按钮2点击后判断当前组件是否存在。

 

运行效果如下图:

最终可以看到编辑框1销毁前后弹出的信息框不一样。

 

● 用户区截图
● 组件截图

 

以上两个方法用法一致,不同之处在于“用户区截图”不会截图菜单标题栏边框等信息。

而组件截图会将组件完整的元素进行截图操作。

 

“组件截图”帮助文档如下图:

调用本方法会将组件所有区域完整截图,单独调用则截图窗口。

参数1:提供一个类型为“位图对象类”的变量。

参数2、3:提供要输出的尺寸、可留空。

 

界面设计如下图:

在窗口中放一个按钮,一个编辑框和一个图片框组件。

 

代码编写如下图:

1、定义类型为“位图对象类”,并将变量放入到“组件截图”方法的参数中。

2、取出位图对象的字节集数据。

3、将取出的字节集数据设置在图片框上。

 

运行效果如下图:

最终可看到当前整个窗口所有内容被截图并显示在图片框上。

 

● 移动

 

帮助文档如下图:

调用本方法可以进行组件移动操作。

参数1、2:相对于父组件设置当前组件的左边和顶边位置,。

参数3、4:设置组件的宽度和高度。

 

界面设计如下图:

在窗口中放一个按钮和编辑框组件。

 

代码编写如下图:

按钮点击后移动编辑框组件到窗口左上角。

 

运行效果如下图:

最终编辑框组件出现在窗口左上角区域。

 

● 置字体

 

帮助文档如下图:

调用本方法可以设置组件字体信息,参数为字体对象类。

 

代码编写如下图:

在窗口创建完毕下,调用“从描述文本创建字体()”方法就可以创建“字体对象类”

本方法所提供的文本参数与“字体”写属性的文本一致。

 

运行效果如下图:

最终 软件运行后编辑框的字体会被修改。

 

● 删除到回收站

 

帮助文档如下图:

调用本方法可实现删除文件到系统回收站。

注意:本方法只能在窗口或者MDI主窗口中使用,通过窗口组件调用无效。

 

代码编写如下图:

按钮点击后,调用本方法删除一个文件。

 

运行效果如下图:

可以看到当按钮点击后,系统回收站会出现刚删除的文件。

 

● 置父窗口

 

帮助文档如下图:

通过本方法可以调整当前组件的父组件,参数填写目标父组件。

 

界面设计如下图:

在窗口中放一个按钮和分组框。

 

代码编写如下图:

按钮点击后,设置当前按钮组件的父组件为分组框1.

 

运行效果如下图:

最终可以看到按钮的父组件由窗口变成了分组框。

 

● 获取焦点

 

帮助文档如下图:

调用本方法可以让指定组件获得焦点。

 

界面设计如下图:

在窗口中放一个按钮和两个编辑框组件。

 

代码编写如下图:

1、按钮点击后编辑框2调用本方法获得焦点。

2、添加“编辑框_获得焦点”事件验证编辑框是否获得焦点。

 

运行效果如下图:

最终编辑框2的内容被改变,证明获取焦点成功。

 

● 调整层次

 

帮助文档如下图:

调用本方法可调整组件层次,参数调用方式“组件层次.XX”.

 

界面设计如下图:

在窗口中放四个按钮,其中让“按钮1”实现覆盖“按钮2”的效果。

 

代码编写如下图:

调整按钮被点击后,将“按钮2”调整到顶层。

 

运行效果如下图:

最终按钮2将会被调整到所有组件顶层显示。

 

● 输入框

 

帮助文档如下图:

通过本方法可以弹出一个输入文本的对话框。

参数1:用来存放输入结果。

参数2、3:填写提示信息和标题。

参数4:设置输入框内的初始文本。

参数5:调用方式“输入框输入方式.XX”.

 

界面设计如下图:

在窗口中放一个按钮和一个编辑框组件。

 

代码编写如下图:

按钮点击后弹出一个输入框并将输入结果显示在编辑框中。

 

运行效果如下图:

最终结果显示在编辑框中。

 

● 取字体

 

帮助文档如下图:

调用本方法可取出设置的字体信息,返回值为“字体对象类”

如果没有设置过字体,会返回默认字体信息。

 

代码编写如下图:

按钮点击后调用本方法取出编辑框的字体信息。

 

运行效果如下图:

编辑框组件的字体信息被取出。

 

● 弹出实例菜单

 

帮助文档如下图:

在屏幕指定位置弹出一个菜单。

注意:本方法不能通过窗口组件调用,否则菜单点击命令会失效。

 

代码编写如下:

1、定义一个基础类为“菜单类”的类,右键可以打开设计器。

2、在设计器中简单的设计三个菜单。

3、设计完毕后效果如图。

4、定义类型为“菜单按钮”的变量,此变量类型名称要和定义的菜单类名称一致。

5、按钮点击后调用本方法弹出此实例菜单。

6、添加“接收到命令”事件,可以判断菜单被点击,当菜单点击后取菜单标题显示在编辑框中。

 

运行效果如下图:

当按钮点击后可弹出菜单,菜单点击后编辑框会显示菜单标题。

 

● 弹出菜单

 

帮助文档如下图:

本方法和“弹出实例菜单”的区别在于,使用本方法弹出菜单可以不定义菜单变量。

 

代码编写如下图:

1、按钮点击后,调用本方法弹出菜单。

2、在菜单被点击后,如果想要取出菜单标题依然可以通过定义菜单变量的形式取出。

 

运行效果如下图:

 

● 执行

 

帮助文档如下图:

通过本方法可以打开指定文件。

参数1:提供要打开的文件路径。

参数2:调用方式“所执行命令类型.XXX”

参数3:如果打开的文件是可执行文件,本参数可提供传入命令行。

参数4:提供一下默认路径。

注意:本方法只能在窗口或者MDI主窗口中使用。

 

代码编写如下图:

当按钮点击后调用本方法打开一个txt文件。

 

运行效果如下图:

最终可看到txt文件被打开。

 

● 提到前方

 

帮助文档如下图:

调用本方法可将组件提到前方,如果在窗口类中直接调用,将会把当前窗口提到最前方。

 

界面设计如下图:

在窗口中放三个按钮,其中按钮2覆盖按钮3.

 

代码编写如下图:

当按钮点击后,将按钮3提到前方。

 

运行效果如下图:

最终按钮3将会覆盖按钮2。

 

● 浏览文件夹

 

帮助文档如下图:

调用本方法可以实现文件夹选择功能,通过调整参数2还可以实现选择文件功能。

注意:本方法不支持窗口组件调用。

 

界面设计如下图:

在窗口上放一个按钮和一个编辑框。

 

代码编写如下图:

按钮点击后调用本方法将结果赋值给编辑框。

 

运行效果如下图:

最终选择结果会显示在编辑框中。

 

● 激活
● 置为前台窗口

 

上述两个方法用法和作用基本一致,此处讲解“激活”方法。

 

帮助文档如下图:

调用本方法可激活窗口,注意本方法只能通过窗口或MDI窗口调用。

 

代码编写如下图:

1、定义一个新的窗口类。

2、在主窗口中定义的窗口2变量。

3、主窗口创建完毕后载入窗口2.

4、主窗口按钮点击后,激活窗口2.

 

运行效果如下图:

最终可看到窗口2被激活到前面。

 

● 进度复制文件

 

帮助文档如下图:

调用本方法可进行文件复制操作,并同时会显示一个进度对话框。

注意:本方法不支持窗口组件调用,同时如果复制的文件过小不会显示进度。

 

代码编写如下图:

按钮点击后调用本方法将D盘的文件复制到G盘中。

 

运行效果如下图:

最终可看到文件出现在G盘中,因复制的文件过小因此没有出现进度提示。

 

[上一章]    [下一章]