鱼C论坛

 找回密码
 立即注册
查看: 6226|回复: 1

[技术交流] 【MFC入门文字教程】8-编辑控件(CEdit)以及各种用法

[复制链接]
发表于 2016-11-13 12:34:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 无符号整形 于 2016-11-13 13:34 编辑

MSDN 官方文档
想像一下这种情形:你需要让用户输入一些数据,那么,该用哪种控件呢?当然是编辑框控件(Edit Control),如果对一个编辑框控件添加变量,那么变量就是 CEdit 类型的,如图。
2016-11-13 (2).png

让我们稍后再介绍成员函数们,让我们认识认识编辑控件的一些属性。
2016-11-13 (4).png
属性 作用
Acccept Files 控件将接收拖放文件
Multline 如果控件文本对控件宽度而言太长,则将文本折为多行
No Hide Selection 指定编辑控件将总是显示某选定内容,即使它没有焦点
OEM Convert 将输入到编辑框中的文本转换为 OEM 字符集
Password 对键入到编辑控件的每个字符显示星号(*)
Read Only 防止用户在编辑控件中键入或编辑文本
Want Return 指定编辑控件要接收Return键(如果不指定这个的话在编辑框里面按回车是会退出的)


那么,CEdit又有什么成员函数呢?这就告诉你
注意:CEdit 继承于 CWnd
名称 作用
CEdit::CanUndo 确定是否可以撤消编辑操作
CEdit::CharFromPos 检索最接近指定位置的字符的行和字符索引
CEdit::Clear 删除编辑控件中的当前选择的字符(如果有)
CEdit::Copy 将编辑控件中的当前选择的字符(如果有)以CF_TEXT格式复制到剪贴板
CEdit::Create 创建Windows编辑控件并将其附加到CEdit对象
CEdit::Cut 剪切编辑控件中的当前选择的字符(如果有),并以CF_TEXT格式将文本剪切到剪贴板
CEdit::EmptyUndoBuffer 清除编辑控件的撤销缓冲区
CEdit::FmtLines 设置在多行编辑控件中的软回车打开或关闭
CEdit::GetCueBanner 当控件为空且没有焦点时,检索在编辑控件中显示的文本提示或提示的文本
CEdit::GetFirstVisibleLine 确定在编辑控件中最顶部的可视的行
CEdit::GetHandle 检索当前分配给多行编辑控件的内存句柄
CEdit::GetHighlight 获取当前编辑控件中突出显示的文本范围的开始和结束字符的索引
CEdit::GetLimitText 获取此CEdit控件可以包含的最大文本数量。
CEdit::GetLine 从编辑控件中检索一行文本
CEdit::GetLineCount 检索多行编辑控件中的行数
CEdit::GetMargins 获取此CEdit控件对象的左右边距
CEdit::GetModify 确定是否已修改编辑控件的内容
CEdit::GetPasswordChar 当用户输入文本时,检索编辑控件中显示的密码字符
CEdit::GetRect 获取编辑控件的格式化矩形
CEdit::GetSel 在编辑控件中获取当前选择的第一个字符和最后一个字符的位置
CEdit::HideBalloonTip 隐藏与当前编辑控件关联的任何Tip提示
CEdit::LimitText 限制用户可以输入到编辑控件中的文本的长度
CEdit::LineFromChar 检索包含指定字符索引的行的行号
CEdit::LineIndex 检索多行编辑控件中的某行的字符索引
CEdit::LineLength 检索编辑控件中的某行的长度
CEdit::LineScroll 滚动多行编辑控件中的文本
CEdit::Paste 将剪贴板中的数据插入到当前编辑控件的光标位置中,仅当剪贴板包含CF_TEXT格式的数据时才插入数据
CEdit::PosFromChar 检索指定字符索引左上角的坐标。
CEdit::ReplaceSel 将编辑控件中的当前选择的字符串替换为指定的文本
CEdit::SetCueBanner 当控件为空且没有焦点时,设置在编辑控件中显示的文本提示或提示的文本
CEdit::SetHandle 将多行编辑控件使用的本地内存的句柄设置为指定的句柄
CEdit::SetHighlight 突出显示当前编辑控件中显示的一系列文本
CEdit::SetLimitText 设置此CEdit控件可以包含的文本的最大数量
CEdit::SetMargins 设置此CEdit的左右边距
CEdit::SetModify 设置或清除编辑控件的修改标志
CEdit::SetPasswordChar 当用户输入文本时,设置或删除编辑控件中显示的密码字符
CEdit::SetReadOnly 设置编辑控件的只读状态
CEdit::SetRect 设置多行编辑控件的格式矩形,并更新控件
CEdit::SetRectNP 设置多行编辑控件的格式化矩形而不重绘窗口
CEdit::SetSel 设置编辑控件可以选择的字符范围
CEdit::SetTabStops 在多行编辑控件中设置制表符
CEdit::ShowBalloonTip 显示与当前编辑控件相关联的气球提示
CEdit::Undo 撤销上次编辑操作


讲了那么多,如何获取输入的字符串呢?
有两种方法:
1.

  1. ::GetWindowText(CEdit变量.m_hWnd,缓冲区,最大字符串长度);
复制代码

这种是通过调用Windows SDK的 GetWindowText 获取输入的字符串,当然 GetWindowTextA 也可以。
2.
  1. CEdit变量.GetWindowText(CString字符串)
复制代码

这种是通过成员函数获取 CString 字符串。

如何设置输入的字符串呢?
也有两种方法:
1.

  1. ::SetWindowText(CEdit变量.m_hWnd,缓冲区);
复制代码

这种是通过调用Windows SDK的 SetWindowText 设置输入的字符串,当然 SetWindowTextA也可以。
2.
  1. CEdit变量.SetWindowText(字符串)
复制代码

这种是通过成员函数获取CString字符串。

实践时间
目标:当用户按下按钮时,弹出一个对话框,告诉用户输入了什么。
1.拖一个按钮,一个编辑框,给编辑框添加一个成员变量,建议把名字设为 m_edit,给按钮添加事件处理程序。
2016-11-13 (5).png
2.写代码,在事件处理程序中添加如下内容:
  1.         WCHAR Buffer[128]; //缓冲区

  2.         ::GetWindowText(m_edit.m_hWnd, Buffer, 128);  //获取缓冲区
  3.         MessageBox(Buffer, TEXT("您输入的内容"), MB_OK);  //弹出对话框
复制代码

3.效果:
MFC TEST.gif

如果你想让用户输入一组指定的数据,那么Edit Control貌似不太适合,好像ListBox更加适合
下一篇,我们将学习List Box控件!

评分

参与人数 2荣誉 +10 鱼币 +10 贡献 +6 收起 理由
HackerWen + 5 + 5 + 3
拈花小仙 + 5 + 5 + 3 MFC偶的最爱`

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-1-9 09:56:22 | 显示全部楼层
挺好的。继续努力
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-18 13:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表