2024年4月19日发(作者:)

Windows控件

Windows操作系统内置一些界面元素.象Button,List,ComboBox,Edit,Label,Menu等.

这一些界面元素在MFC的类库里都用对应类来描述,程序通过这一些类来操作界面.

从类库结构来看,这一些类都从CWnd类继承下来.这个类也是CDialog的基类.

因此这一些控件除了自已独特界面类型以外,都一些共性.

在Windows上,一个控件要用数字来表示,通过对这个数字就可以操作控件.在M

FC里这个数字一般是在资源编辑器里定义成宏,这样在程序里更加容易阅读和理

 所有资源编号定义在resresource.h

 在.rc里使用是宏定义如,如IDC_BUTTON1

 在一个CDialog里可以调用GetDlgItem来找出控件的指针,这样用于操作

 CWnd* GetDlgItem( int nID )

 最常见的操作就是读取控件的上文本的值

CWnd::GetWindowText(),CWnd::SetWindowText();

不同控件读取文本有不同含意,如Label的读文本相当于读标签文本,Edit读文本

相当于编辑框里的值.ComboBox,ListBox相当于读取用户当前选中的文本.

例,改变一个标签的提示

 this->GetDlgItem(IDC_LABLE1)->SetWindowText(_T(“hello”));

读取一个编辑框的文本值

 CString tmp = GetDlgItem(IDC_EDIT1)->GetWindowText();

这种方法实例上是Windows的方法,而不是C++面向对象的方法

控件对象的创建

 在MFC中,控件对象的创建方法有两种

 静态创建,对话框模板上把控件画好.这样当CDialog创建对话框时,自动把控件

创建好.

 这里一种比较简单和常用的创建方法

 动态创建,即在运行时动态创建.这样可以更加灵活的设计界面,但是代码相对复杂

 调用BOOL CWnd::Create()或者是派生类同名方法.

 注意把Create和类构造函数区别开来,类构造只是创建对象本身,通知W

indows把控件画出来是Create执行的

 无论动态,静态对控件影响最大的参数是DWORD dwStyle ,用于描述界面风格.

 模板中在属性窗里直接增写

 Create时作为参数传入

CButton

 按钮窗口(控件)在MFC中使用CButton表示,CButton包含了三种样式的按钮,

Push Button,Check Box,Radio Box。所以在利用CButton对象生成按钮窗口时需要

指明按钮的风格。

CButton常用style

 常见几个宏定义有

 BS_CHECKBOX 检查框

 BS_DEFPUSHBUTTON 默认普通按钮

 BS_LEFTTEXT 左对齐文字

 BS_PUSHBUTTON 普通按钮

 BS_RADIOBUTTON 圆形选择按钮

 在资源编辑器可以选择属性窗来调整

Buttons状态检测

 获取/改变按钮状态:对于检查按钮(CheckBox)和圆形按钮(Radio Box)可能有两种状

态,选中和未选中,如果设置了BS_3STATE或BS_AUTO3STATE风格就可能出现

第三种状态:未定,这时按钮显示灰色。

 通过调用int CButton::GetCheck( ) 得到当前是否被选中,返回0:未选中,1:选中,

2:未定。

 调用void CButton::SetCheck( int nCheck );设置当前选中状态。

CEdit 编辑框类

 Edit窗口是用来接收用户输入最常用的一个控件

 Edit常用风格

– ES_AUTOHSCROLL,ES_AUTOVSCROLL 指明输入文字超出显示范围时自