MFC控件编程之 按钮编辑框.静态文本的使用以及访问控件的七种方法.
一丶按钮.静态文本的通用属性.
他们都有一个属性.就是可以输入标题内容.以及可以自定义控件ID.
创建一个MFC Dlg对话框.
关于对话框的标题.我们都可以在他们各自的属性中设置.
也可以设置自己特有的ID.比如编辑框举例
常用的API:
1.根据控件ID.获取控件的标题名称.
GetDlgItemText(控件ID,字符串缓冲区);
2.根据控件ID.设置控件的标题.
SetDlgItemText(控件ID.字符串);
二丶编写代码.获取编辑框中的字符串的个数.
双击按钮.我们可以响应按钮点击消息.在按钮点击消息中获取编辑框的内容.并且设置到静态文本上.
PS: 我们需要都要设置这个控件的ID.否则无法使用API获取.
PS: 我们如果在MFC中使用API .需要加上全局访问符号.:: 也就是四饼. 否则就是使用MFC自带的 封装的API
不过此时我们上面所说的API.就是使用的MFC封装的.比较方便..
void CButtonAnEditAnStaticTextDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
CString str;
GetDlgItemText(EDT_SHOWVALUE, str); //获取编辑框的内容.结果放到str缓冲区中. //统计字符个数.以及自己.
int nlen = ;
nlen = str.GetLength(); //获取缓冲区的长度.给nlen CString OutPut;
OutPut.Format(TEXT("字符串长度 = %d "), nlen);//格式化字符串.给Output.
//设置到静态文本框
SetDlgItemText(IDC_STATIC, OutPut); //将设置好的字符串.设置到文本框中.
}
应用程序截图:
三丶访问控件的七种方法.
上面我们已经使用了一种了. GetDlgItemText() 根据指定控件ID获取控件文本.
3.1 控件ID访问方法.
GetDlgItem(控件ID)
GetWindowsText(缓冲区.大小.)
代码示例:
void CMFCApplication1Dlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码 int nNum1, nNum2, nNum3;
TCHAR ch1[], ch2[], ch3[];
//第一种方法.通过控件ID.获取文本.
GetDlgItem(IDC_EDIT1)->GetWindowText(ch1,);
GetDlgItem(IDC_EDIT2)->GetWindowText(ch2, ); //字符串变为数字.通用版.
nNum1 = _ttoi(ch1);
nNum2 = _ttoi(ch2);
nNum3 = nNum1 + nNum2; //数字转为字符串.设置到编辑框三种.
_itot(nNum3, ch3, ); //十进制转换.
GetDlgItem(IDC_EDIT3)->SetWindowText(ch3);
}
上面是MFC封装好了.所以我们可以 ->继续调用.如果是自己使用Windows API编写.那么需要 ::GetDlgItem(指定窗口的句柄,控件ID)获取根据控件ID寻找的窗口句柄.然后自己继续调用 ::GetWindowText(句柄.缓冲区) 来进行获取.
具体原理可以自己看下源代码.不再多少.
应用截图:
3.2GetDlgItemText() 获取.
void CMFCApplication1Dlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码 int nNum1, nNum2, nNum3;
TCHAR ch1[], ch2[], ch3[];
//第一种方法.通过控件ID.获取文本.
GetDlgItemText(IDC_EDIT1, ch1, );
GetDlgItemText(IDC_EDIT2, ch2, ); //字符串变为数字.通用版.
nNum1 = _ttoi(ch1);
nNum2 = _ttoi(ch2);
nNum3 = nNum1 + nNum2; //数字转为字符串.设置到编辑框三种.
_itot(nNum3, ch3, ); //十进制转换.
SetDlgItemText(IDC_EDIT3, ch3);
}
前两种方法获得是字符串.然后自己要互相转换.
3.3. 使用方法三.直接获取整形.
代码如下
int nNum1, nNum2, nNum3;
nNum1 = GetDlgItemInt(IDC_EDIT1);
nNum2 = GetDlgItemInt(IDC_EDIT2); nNum3 = nNum1 + nNum2; SetDlgItemInt(IDC_EDIT3,nNum3);
3.4 控件跟整形变量关联. Value类型
如果使用这个方法.那么我们的控件需要绑定一个变量.使用这个变量来获取跟设置.
编辑框 - > 类向导 -> 添加变量 给编辑框进行关联.
三个依次关联即可.
使用的时候需要用到一个函数.
UpdateData(True) 或者 False
TRUE. 则把控件里面的数据.关联到变量里. 简单理解为就是获取数据.调用了这个.那么我们绑定的变量就会有数据了.
FALSE: 数据设置到控件中. 当我们使用完变量则需要将数据设置到控件里显示.就用FALSE.
具体代码如下:
UpdateData(TRUE) ; //获取数据到变量中
m_EdtNum3 = m_EdtNum1 + m_EdtNum2;
UpdateData(FALSE); //设置变量的数据到控件中.
使用的时候他会自己检查是否是整数.
原理.
DoDataExChange函数.
在MFC中有一个这种函数. 用来跟关联变量的设置的.
DDX_Text 是跟变量关联了.
DDV开头的则是检查的.
void AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, int& value);
参数1: pdx
参数2: 控件ID
参数3: 控件关联的变量.
我们可以F12跟进看到很多这种类型.
3.5 把控件跟控件变量关联. Edit类型.我们可以跟控件关联
这个就可以当控件使用了.
我们给编辑框关联的.那么查询MSDN可以看到控件的操作方法.
如果获取字符串可以使用这两个函数.获取跟设置. 也可以设置编辑框的最大字符数. 或者最小字符数.等等.具体查询MSDN
m_Edit.GetWindowText();
m_Edit.SetWindowText();
3.6发送消息进行控件操作.
MFC中都是消息驱动的.那么我们也有API可以进行发消息操作.
::SendMessage(控件id的句柄,消息类型,大小.附加参数.)
::SendMessage(GetDlgItem(EDT_EDIT)->m_hWnd,WM_GETTEXT,,(LPARAM)ch1); 参数2: 消息类型.我们WM_GETTEXT 是代表我要获取这个文本.
参数3: 是缓冲区的长度.
参数4: 缓冲区. 其中3 是额外附加参数.什么意思? 就是说这个参数不确定.可以自己给定.
我们解析的时候按照对应类型解析即可. 你可以给数组.也可以给结构体.都是可以的.
设置字符串.
::SendMessage(Getdlgitem(IDC_EDT3),WM_SETTEXT,0,(LPARAM)ch3);
这个方法需要掌握.一般写windows程序.这个函数会常用.
3.7 根据方法6合并的一个函数
SendDlgItemMessage(控件ID.WM_GETTEXT,附加参数,附加参数); //使用例子 SendDlgItemMessage(IDC_EDIT1,WM_GETTEXT,,(LPARAM)ch1);
设置字符串
SendDlgItemMessage(IDC_EDIT1,WM_SETTEXT,,(LPARAM)ch3);
具体代码:
MFC控件编程之 按钮编辑框.静态文本的使用,以及访问控件的七种方法.的更多相关文章
-
MFC控件编程之复选框单选框分组框
MFC控件编程之复选框单选框分组框 一丶分组框 分组框 英文叫做 GroubBox 添加了分组框主要就是分组.好看.不重点介绍 二丶单选框 英文: Raido Button 单选框需要注意的事项 1. ...
-
MFC_2.2 编辑框和文本控件
编辑框和文本控件 1.拖控件 2.绑定变量.用户名密码编辑框控件类型.取名字.用户协议用值类型,默认CString. 设置属性.用户类型.选择mustiline TRUE. AOTO HScroll ...
-
【MFC】MFC DLEdit 设计属于自己的编辑框_鼠标悬停
MFC DLEdit 设计属于自己的编辑框 2012-02-04 13:00 by 捣乱小子, 3543 阅读, 5 评论, 收藏, 编辑 起因 无意间看到了大牛们写的自定义编辑框控件,于是找了个时间 ...
-
linux shell脚本编程笔记(四): 获取字符串长度的七种方法
获取字符串长度的七种方法 1. \${#str} 2.awk的length 备注:1) 最好用{}来放置变量2) 也可以用length($0)来统计文件中每行的长度 3.awk的NF 备注: -F为分 ...
-
通过编写串口助手工具学习MFC过程——(十)UpdateData()用法和编辑框的赋值、取值
通过编写串口助手工具学习MFC过程 因为以前也做过几次MFC的编程,每次都是项目完成时,MFC基本操作清楚了,但是过好长时间不再接触MFC的项目,再次做MFC的项目时,又要从头开始熟悉.这次通过做一个 ...
-
MFC中关于子对话框中编辑框不能编辑的问题
最近在用MFC写程序.发现子对话框中的编辑框不能编辑.具体问题是这样的: 我有一个对话框YhglDlg,创建了这个对话框的子对话框ZjyhxxDlg,子对话框的Style属性为Child,Border ...
-
[WP8.1UI控件编程]Windows Phone VirtualizingStackPanel、ItemsStackPanel和ItemsWrapGrid虚拟化排列布局控件
11.2.2 VirtualizingStackPanel.ItemsStackPanel和ItemsWrapGrid虚拟化排列布局控件 VirtualizingStackPanel.ItemsSta ...
-
[聊天框]让DIV的滚动条自动滚动到最底部 - 4种方法
要制作一个在线聊天的程序,在做最后的修饰时,需要对获得的信息即时滚动以保证用户总能看到最新消息. 聊天程序是基于AJAX设计的,没有用框架,消息容器是一个DIV,所以问题就在于如何控制DIV的滚动条. ...
-
代码控制 textarea 控件是否为KindEditor 编辑框
<script charset="utf-8" src="<%:Url.Content("~/UI/Scripts/KindEditor/kinde ...
随机推荐
-
unity发布安卓 手指控制物体缩放和旋转
直接帮到物体的身上就可以了 using UnityEngine; using System.Collections;using System.IO;public class hehe : MonoBe ...
-
【原创】WinForm 模态对话框
今天解决的一个问题,记录下,以备后用. 问题描述:WinForm程序有超时自动退出功能,但是有些模态对话框不关掉的话会退出失败,原因(猜测): 程序倒计时用的System.Windows.Forms. ...
-
C++ Singleton模式
地址:http://www.cppblog.com/dyj057/archive/2005/09/20/346.html Singleton模式是常用的设计模式之一,但是要实现一个真正实用的设计模式却 ...
-
gitgub利用客户端实现简单的上传和同步
新建项目 打开客户端(将项目拷贝到本地) 选择要clone到的文件夹 想该文件夹中,导入自己需要上传的代码 然后,在网站上登录自己的gitgub,就可以看到刚才上传的项目了╮(╯▽╰)╭
-
python challenge 16
前情回顾:上一篇 第16关地址 打开16关,又是一张奇奇怪怪很多点点的图片,应该又是与PIL库有关的. 页面的标题是:let me get this straight.这是英语中的一句俚语,意思是让我 ...
-
开发环境配置--Ubuntu+Qt4+OpenCV(二)
同系列文章 1. 开发环境配置--Ubuntu+Qt4+OpenCV(一) 2. 开发环境配置--Ubuntu+Qt4+OpenCV(二) 3. 开发环境配置--Ubuntu+Qt4+OpenCV(三 ...
-
Cobbler自动化部署最佳实践
第1章 Cobbler自动化部署最佳实践 运维自动化在生产环境中占据着举足轻重的地位,尤其是面对几百台,几千台甚至几万台的服务器时,仅仅是安装操作系统,如果不通过自动化来完成,根本是不可想象的. 面对 ...
-
构造器和多态(Chapter8.3)
构造器不具有多态性(它们是static方法,只不过该static声明是隐式的),但还是非常有必要理解构造器怎样通过多态在复杂的层次结构中运作,这一理解将有助于大家避免一些令人不快的困扰. 在main中 ...
-
vscode调试html页面,及配置说明
一.效果目的 1.在VSCode里,直接F5打开html页面,并且可以在编辑器里,进行断点调试js代码: 二.工具准备 1.VSCode 软件 2.一个js项目 3.VSCode 上装一个插件:Deb ...
-
第9章 应用层(3)_telnet协议和远程桌面协议RDP
3.1 telnet简介 (1)telnet是一个简单的远程终端协议,也是因特网的正式标准.用户使用telnet连接到远程运行telnet服务的设备(可以是网络设备.比如路由器.交换机,也可以是操作系 ...