科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件VC中Windows常用控件的创建和使用

VC中Windows常用控件的创建和使用

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文将要介绍的Windows控件指的是Windows系统预定义的标准控件,如按钮控件、编辑控件和列表控件等。

作者:青岛郎锐 来源:天极网 2007年10月19日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
编辑类控件

  以窗口类名"EDIT"创建的编辑类控件是一个可以用来接受用户键盘字符输入的矩形区域,可以在其内进行编辑操作。该控件是程序接受用户字符输入的一种主要手段,输入的内容存放在其父窗口容量有限的(32KB)局部堆中。

  MFC的CEdit类提供了有关编辑类控件的功能函数。编辑控件既可以在对话框模板上创建也可以通过代码来直接创建,这两种方式均要通过CEdit的构造函数来构造一个CEdit对象。CEdit类从CWnd继承了一些重要的函数,比如可以通过使用CWnd类成员函数SetWindowText()和GetWindowText()来设定和获取一个编辑控件中的文本。同按钮类控件类似,如果要处理由编辑控件发送给其父窗口的通知消息,需要在父窗口类中为每一个待处理消息增添消息映射入口和消息响应函数。

  在调用Create()函数创建编辑控件时,Windows系统将发出WM_NCCREATE、WM_NCCALCSIZE、WM_CREATE和WM_GETMINMAXINFO等消息给编辑控件。这些消息缺省地分别由OnNcCreate()、OnNcCalcSize()、OnCreate()和OnGetMinMaxInfo()等CWnd类成员函数进行处理,可以根据实际需要对其进行重载使用。作为一种特殊的窗口,编辑控件除了需要指定普通窗口风格外,还可以通过选用不同的控件风格而获取相应的功能效果,可选用的编辑风格列表如下:

编辑风格 说明
ES_AUTOHSCROLL 当在行尾添加一个字符后自动向右滚动10个字符。
ES_AUTOVSCROLL 当输入回车后自动上滚一行。
ES_CENTER 字符居中显示。
ES_LEFT 字符左对齐。
ES_LOWERCASE 统一转化为小写字母。
ES_MULTILINE 允许多行显示。
ES_NOHIDESEL 当编辑失去焦点时隐藏对字符的选定,重新获得焦点后以反色显示选中内容。
ES_OEMCONVERT 将ANSI字符转化为OEM字符。
ES_PASSWORD 以星号显示字符,多用于回显密码。
ES_RIGHT 字符右对齐
ES_UPPERCASE 统一转化为大写字母。
ES_READONLY 设置字符为只读。
ES_WANTRETURN 接受回车键输入。

  下面给出创建、用编辑控件的示例代码,该示例首先通过Create()函数创建一个控件对象,并通过SetWindowText()函数为其设置字符。通过添加对控件通知消息的响应代码可以检测文本是否发生了改变。程序主要实现清单如下:

// 控件的创建部分:
// 创建编辑控件
m_ctrEdit.Create(WS_VISIBLE | WS_CHILD | WS_BORDER | ES_WANTRETURN | ES_MULTILINE | ES_AUTOHSCROLL | ES_AUTOVSCROLL, CRect(10, 50, 250, 150), this, ID_EDIT1);
// 为控件设置字符
m_ctrEdit.SetWindowText("Hello World!");
……
// 添件对控件通知消息的响应
//{{AFX_MSG(CSample02View)
afx_msg void OnEnChange();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
……
BEGIN_MESSAGE_MAP(CSample02View, CView)
//{{AFX_MSG_MAP(CSample02View)
ON_EN_CHANGE(ID_EDIT1, OnEnChange)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
……
void CSample02View::OnEnChange()
{
// 通知消息响应代码
AfxMessageBox("内容已改变!");
}
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章