MFC之静态控件

静态控件一般用来显示静态的文本、图标、位图或图元文件,它不能用来接受用户的输入,也很少用来显示输出,而在更多的情况下用作那些没有固定的标题文本属性的控件(如文本编辑控件、列表框等)的标签,或者用来进行控件的分组,或者用来显示一些提示性文本。

MFC类CStatic封装了标准的Windows静态控件。下面的示例程序StaticDemo演示了静态控件的使用。

1. 使用AppWizard创建一个基于对话框的MFC应用程序,设置其工程名为StaticDemo。

2. 绘制主对话框中的控件标签为“静态控件”的静态控件ID为IDC_STATIC。需要注意是的,由资源管理器添加的静态控件在默认情况下其ID均为IDC_STATIC,因此,如果需要在程序中区分和操纵各个不同的静态控件,一般情况下我们都需要更改新添加的静态控件的ID值。这里我们将静态控件的ID值设置为IDC_STATICDEMO。

以下属性和样式没有在本章前面的内容中涉及,它们可以适用于静态控件。可以通过静态控件的Properties属性对话框的Styles选项卡进行这些属性或样式的设置。

Align text:

决定静态文本控件中文本的横向对齐方式。可供选择的值为Left (向左对齐)、Center (居中对齐)和Right (向右对齐)。默认值:Left

Center Vertically:

在静态文本控件中将文本进行垂直居中。类型:布尔值 默认值:假

No prefix:

不将控件文本中的“&”符解释为助记字符。在默认情况下,“&”符号在显示时会被去掉,取而代之的是紧接“&”符之后的字符被以加下划线的格式进行显示。我们早在前面说过,通过双写“&”符可以在控件文本中显示出实际的“&”符,但是,对于一些特殊的场合,如使用静态文本控件来显示文件名的时候,将No prefix属性设置为“真”要更方便。

No wrap:

以左对齐的方式来显示文本,并且不进行文本的自动回行。超出控件右边界的文本将被裁去。需要注意的是,这时即使使用转义字符序列"\n"也不可以强制控件文本进行换行。类型:布尔值 默认值:假

Simple:

禁止设置Text Align属性和No Wrap样式。在该属性为真的情况下,静态文本控件中的文本不会被自动回行,也不会被剪裁。类型:布尔值 默认值:假

Notify:

决定控件在被单击时是否通知父窗口。类型:布尔值 默认值:假

Sunken:

使用静态文本控件看上去有下凹的感觉。类型:布尔值 默认值:假

Border:

为文本控件创建边框。类型:布尔值 默认值:假

4. 静态控件一般不用于输入,但是如果它的Notify属性设置为真,则当用户单击静态控件时,静态控件将向父窗口发送通知消息。但是,我们不可以使用前面所讲述的方法(即使用ClassWizard或从上下文菜单中选择Events命令)来为静态控件添加消息处理函数。而要以手动的方式来实现这一点。

下面我们结合示例StaticDemo来说明如何为静态控件添加单击事件的命令处理程序。在进行下面的步骤之前,请确认静态控件IDC_STATICDEMO的Notify属性值为真。

在类CStaticDemoDlg的定义处(CStaticDemoDlg.h)添加下面的命令处理函数声明

afx_msg void OnStaticDemo();

最好把成员函数OnStaticDemo的声明与其它命令处理函数的声明放在一起,但不要放到//{{AFX_MSG和//}}AFX_MSG之间。


然后,打开类CStaticDemoDlg的实现文件StaticDemoDlg.cpp,在宏

BEGIN_MESSAGE_MAP(CStaticDemoDlg, CDialog)

和宏

BEGIN_MESSAGE_MAP

之间添加如下的消息映射入口

ON_BN_CLICKED(IDC_STATICDEMO, OnStaticDemo)

同样,不要把手动添加的消息映射入口项放到注释//{{AFX_MSG_MAP和//}}AFX_MSG_MAP之间。


手动添加成员函数OnStaticDemo或OnDoubleclickedStaticDemo的实现代码



编译上面的示例程序,单击“静态控件”,命令处理函数OnStaticDemo将被调用,从而弹出相应的消息框。


  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值