总结Visual C++中CEdit的一些用法:

1. 获取CEdit中的值

a.

int num1,num2,num3;
char ch1[10],ch2[10],ch3[10];

GetDlgItem(IDC_EDIT1)->GetWindowText(ch1,10);
GetDlgItem(IDC_EDIT2)->GetWindowText(ch2,10);

num1=atoi(ch1);
num2=atoi(ch2);
num3=num1+num2;
itoa(num3,ch3,10);

GetDlgItem(IDC_EDIT3)->SetWindowText(ch3);

b.

int num1,num2,num3;
char ch1[10],ch2[10],ch3[10];

GetDlgItemText(IDC_EDIT1,ch1,10);
GetDlgItemText(IDC_EDIT2,ch2,10);

num1=atoi(ch1);
num2=atoi(ch2);
num3=num1+num2;
itoa(num3,ch3,10);

SetDlgItemText(IDC_EDIT3,ch3);

c.

int num1,num2,num3;
num1=GetDlgItemInt(IDC_EDIT1);
num2=GetDlgItemInt(IDC_EDIT2);

num3=num1+num2;
SetDlgItemInt(IDC_EDIT3,num3);

d.

//定义成员变量..变量与控 件关连
/**
//{{AFX_DATA(CTestDlg)
enum { IDD = IDD_DIALOG1 };
int m_num1;
int m_num2;
int m_num3;
//}}AFX_DATA
void CTestDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CTestDlg)
DDX_Text(pDX, IDC_EDIT1, m_num1);
DDV_MinMaxInt(pDX, m_num1, 0, 100);
DDX_Text(pDX, IDC_EDIT2, m_num2);
DDV_MinMaxInt(pDX, m_num2, 0, 100);
DDX_Text(pDX, IDC_EDIT3, m_num3);
//}}AFX_DATA_MAP
}
**/
UpdateData();
m_num3=m_num1+m_num2;
UpdateData(FALSE);
/*
CWnd::UpdateData
BOOL UpdateData( BOOL bSaveAndValidate = TRUE );
Return Value
Nonzero if the operation is successful; otherwise 0. If bSaveAndValidate is TRUE, then a return value of nonzero means that the data is successfully validated.
Parameters
bSaveAndValidate
Flag that indicates whether dialog box is being initialized (FALSE) or data is being retrieved (TRUE).
Remarks
Call this member function to initialize data in a dialog box, or to retrieve and validate dialog data.
The framework automatically calls UpdateData with bSaveAndValidate set to FALSE when a modal dialog box is created in the default implementation of CDialog::OnInitDialog. The call occurs before the dialog box is visible. The default implementation of CDialog::OnOK calls this member function with bSaveAndValidate set to TRUE to retrieve the data, and if successful, will close the dialog box. (If the Cancel button is clicked in the dialog box, the dialog box is closed without the data being retrieved.)
*/
//UpdateData(TRUE) – 刷新控件的值到对应的变量//程序
//UpdateData(FALSE) – 拷贝变量值到控件显示

e.

//定义控件变量..变量与控件关连
//{{AFX_DATA(CTestDlg)
enum { IDD = IDD_DIALOG1 };
CEdit m_edit3;
CEdit m_edit2;
CEdit m_edit1;
//}}AFX_DATA
void CTestDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CTestDlg)
DDX_Control(pDX, IDC_EDIT3, m_edit3);
DDX_Control(pDX, IDC_EDIT2, m_edit2);
DDX_Control(pDX, IDC_EDIT1, m_edit1);
//}}AFX_DATA_MAP
}

int num1,num2,num3;
char ch1[10],ch2[10],ch3[10];

m_edit1.GetWindowText(ch1,10);
m_edit2.GetWindowText(ch2,10);

num1=atoi(ch1);
num2=atoi(ch2);
num3=num1+num2;
itoa(num3,ch3,10);

m_edit3.SetWindowText(ch3);

f.

int num1,num2,num3;
char ch1[10],ch2[10],ch3[10];

//::SendMessage(GetDlgItem(IDC_EDIT1)->m_hWnd,WM_GETTEXT,10, (LPARAM)ch1);//方法一
//::SendMessage(m_edit1.m_hWnd,WM_GETTEXT,10, (LPARAM)ch1);//方法二
//GetDlgItem(IDC_EDIT1)->SendMessage(WM_GETTEXT,10, (LPARAM)ch1);//方法三

m_edit1.SendMessage(WM_GETTEXT,10,(LPARAM)ch1);//方法四
m_edit2.SendMessage(WM_GETTEXT,10,(LPARAM)ch2);

num1=atoi(ch1);
num2=atoi(ch2);
num3=num1+num2;
itoa(num3,ch3,10);

m_edit3.SendMessage(WM_SETTEXT,0,(LPARAM)ch3);

g.

int num1,num2,num3;
char ch1[10],ch2[10],ch3[10];

SendDlgItemMessage(IDC_EDIT1,WM_GETTEXT,10,(LPARAM)ch1);
SendDlgItemMessage(IDC_EDIT2,WM_GETTEXT,10,(LPARAM)ch2);

num1=atoi(ch1);
num2=atoi(ch2);
num3=num1+num2;
itoa(num3,ch3,10);

SendDlgItemMessage(IDC_EDIT3,WM_SETTEXT,0,(LPARAM)ch3);
SendDlgItemMessage(IDC_EDIT3,EM_SETSEL,0,-1);

2. 追加文本
向CEdit中追加文本(原来文本不变)已经让滚动条始终在底部

方法一:(效率不高)
CString strTemp;
GetDlgItem(IDC_EDIT_OUTPUT)->GetWindowText(strTemp);
strTemp += strAppendText;
GetDlgItem(IDC_EDIT_OUTPUT)->SetWindowText(strTemp);
GetDlgItem(IDC_EDIT_OUTPUT)->SendMessage(WM_VSCROLL,SB_BOTTOM,0); //滚动到顶部 SB_BOTTOM 滚动到底部

(滚动条每次刷新都会先回到顶部,然后再到底部,如果刷新比较快,容易闪动)

方法二:(效率高)
CEdit m_editOutPut;
int len = m_editOutPut.GetWindowTextLength();
m_editOutPut.SetSel(len,len); //将插入光标放在最后
m_editOutPut.ReplaceSel(strAppendText);
m_editOutPut.ScrollWindow(0,0); //滚动到插入点

(滚动条始终在底部,不闪动)
3. CEdit的消息
编辑控件能够处理的消息类别如下所示。
消息类别发生事件
EN_ CHANGE输入框中的文本串被修改
EN_ ERRSPACE输入的文本串超过了输入框的显示范围
EN_ HSCROLL 按下水平滚动条
EN_KILLFOCUS 输入框失去焦点,也就是焦点转移到其他对象
EN_ MAXTEXT 输入的文本串超过了设定的最大输入长度
EN_ SETFOCUS 输入框获取焦点
EN_ UPDATE 更新显示内容
EN_ VSCROLL按下垂直滚动条
4. CEdit属性
通过Styles标签页的设置,可以得到不同类型的编辑框样式:多行编辑框、密码编辑框,只读编辑框,大小写转换编辑框、数字编辑框等等。
1 .Align text
控制编辑控件中的文本对齐方式。可能的取值有左对齐、居中和右对齐。
2: Muttiline
定义该编辑控件为多行文本编辑。通常情况下,该选项不被选中。
3. Number
限定用户输入的只能是数字。
4. Horizontal scroll
在多行编辑控件中提供一个水平滚动条。默认该选项不被选中。
5. Auto HScroll
当用户在编辑框的最右边输入字符时,文本自动进行滚动。该选项通常被选中。
6. Vertical scroll
在多行编辑控件中提供一个垂直滚动条。默认该选项不被选中。
7. Auto VScroll
在多行编辑控件中,当用户在最后一行按回车键时,文本自动向下滚动。默认该选项不被选中。
8 .Password
当用户在编辑控件中输入字符时,在编辑框中不显示输入的文本,而是相同个数的“*”字符。这一选项在多行编辑控件中不能使用。默认不被选中。
9. No hide selection
当编辑控件失去或重新获得焦点时,该项设置将改变文本的显示方式,使编辑框中选择的文本好像总是处于选中状态。默认该选项不被选中。
10. OEM convert
对用户输入内容进行从Windows字符集到OEM字符集的转化,这样可以使调用AnsiToOem时正常工作。默认不被选中。
11.Want return
应用于多行编辑控件。该选项允许在编辑控件中按Enter键换行,而不影响对话框的默认按钮。
12. Border
为控件创建边界,该选项默认被选中。
13. Uppercase
将所有的输入内容转化为大写字符,默认不被选中。
14. Lowercase
将所有的输入内容转化为小写字符,默认不被选中。
15. Read-only
禁止用户在编辑控件中输入或修改其内容,默认不被选中。与静态文本控件的扩展属性相比,编辑控件的扩展属性只增加了一项Left scroll bar,如果设置了垂直滚动条,这一项决定了滚动条在客户区的左边。它的类型是布尔型,默认情况下不选中。

5. 动态创建CEdit类对象
//this 为parent窗口的指针
//pEdt为类的成员变量,类型为CEdit*,在构造函数中初始化为NULL
// m_EdtCreated为类的成员变量,类型为BOLL,在构造函数中初始化为FALSE

if (!m_EdtCreated){
//为第三个编辑区添加编辑控件
pEdt=new CEdit;
pEdt->Create(ES_MULTILINE|WS_CHILD|WS_VISIBLE|WS_TABSTOP|WS_BORDER,CRect(0,301,250,800),this,1);

m_EdtCreated=TRUE;
}
6. CEdit限制输入,重新onchar
void MyEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
if(nChar <= ‘9’ && nChar >= ‘0’)//数字
CEdit::OnChar(nChar, nRepCnt, nFlags);
if(nChar >=0x4E00 && nChar <= 0x9FFF)//常用字
CEdit::OnChar(nChar, nRepCnt, nFlags);
if(nChar >=0x3400 && nChar <= 0x4dff)//少用字
CEdit::OnChar(nChar, nRepCnt, nFlags);
if(nChar >=0x20000 && nChar <= 0x2A6DF)//少用字,历史上使用
CEdit::OnChar(nChar, nRepCnt, nFlags);
return;
}
7. 选择
int nStart,nEnd;
myedit.Setsel(0,-1); //选定编辑框中所有文本
myedit.Getsel(nStart,nEnd); //获取选定文本的开始与结束位置,并存在nStart,nEnd
myedit.Setsel(nEnd,nEnd); //将插入符移动到指定文本的结束位置
myedit.ReplaceSel(str); //显示新的字符串

8. 锁定更新
//1. 声明临界区,一个全局变量,这样各个线程都可以访问到。
CRITICAL_SECTION cs;

//2. 初始化临界区变量
InitializeCriticalSection(&cs);

//3. 追加 CEdit 内容。CEdit 可以声明为一个全局变量
static void addText(CEdit *edit, CString cstr)
{
EnterCriticalSection( & cs);// 获得锁
CString str;
edit->GetWindowText(str);
edit->SetWindowText(str + _T(“\r\n\r\n”) + cstr);

LeaveCriticalSection( & cs);

}

9. 待更新

VC 关于CEdit基本用法相关推荐

  1. VC常用控件用法(转载)

    1.表头控制 Header Control 2.图像列表控制 Image List 3.列表控制和视 List Control&List View 4.树控制和视 Tree Control&a ...

  2. VC设置CEdit控件背景透明、文字背景也透明

    开发环境:VC6, a dialog based MFC application. 主界面: 为对话框添加WM_CTLCOLOR消息响应函数: HBRUSH CDDlg::OnCtlColor(CDC ...

  3. vc 预定义 STRICT用法(转)

    发信人: skyonme (sky), 信区: VC 标  题: [合集]DECLARE_HANDLE(name)怎么解释 发信站: 饮水思源 (2002年01月19日11:39:26 星期六), 站 ...

  4. VC++CopyFile函数的用法

    CopyFile函数定义在Windows.h中,使用时要include之: CopyFile()使用如下: #include <Windows.h>int main() {CopyFile ...

  5. VC++中CEdit控件实现回车换行

    1.通过回车Enter换行: 这里要有两个设置 <1>.将控件的属性设置为Mutilines->true; <2>.将控件的另一个属性设置为Want return-> ...

  6. VC中depends的用法

    Depends用来显示与一个可执行文件(exe或者dll)相关的依赖项(动态链接库dll),以及该exe或dll引用了这些dll中的哪些接口,同时也可以看到每个被依赖的dll中的所有导出的函数接口. ...

  7. vc经验(它山之石)

    1 toolbar默认位图左上角那个点的颜色是透明色,不喜欢的话可以自己改. 2 VC++中 WM_QUERYENDSESSION WM_ENDSESSION 为系统关机消息. 3 Java学 ...

  8. VC/MFC 编程技巧大总结

    1 toolbar默认位图左上角那个点的颜色是透明色,不喜欢的话可以自己改. 2 VC++中 WM_QUERYENDSESSION WM_ENDSESSION 为系统关机消息. 3 Java学习书推荐 ...

  9. 我学习VC中所得的点点心得

    1  toolbar默认位图左上角那个点的颜色是透明色,不喜欢的话可以自己改. 2  VC++中 WM_QUERYENDSESSION WM_ENDSESSION 为系统关机消息. 3  Java学习 ...

最新文章

  1. java培训:什么是抽象类?怎么定义?
  2. python matplotlib.pyplot.imshow() (在2D常规栅格上显示图像(数据))
  3. Java导出Excel或word jsp页面直接转的方式
  4. [Asp.Net]自己的一个SqlHelper类
  5. Halcon中visualize_object_model_3d算子详解
  6. 推荐系统: 数据、问题与算法
  7. IntelliJ IDEA中Maven项目的默认JDK版本
  8. Cocos2d-x3.2 Menu菜单的创建
  9. java response 输出word_java导出数据到word(一)
  10. python 创建高维数组列表
  11. 虚幻引擎4中的实时GI技术
  12. Self-Intro.
  13. 使用switch-case来实现银行存款问题 计算存款利息。有N元,想存M年。有3种方法可选: (1)活期,年利率为r1 0.36% (2)一年期定期,年利率为r2 2.25% 从键盘获取存款年
  14. WPS表格 学习笔记 - 高亮显示重复值
  15. 数字IC入门工具大全之 英特尔 Quartus Prime是什么?三个版本有什么区别
  16. 论文阅读:Coarse to Fine Vertebrae Localization and Segmentation with SpatialConfiguration-Net and U-Net
  17. OA属于计算机哪类一,oa属于什么计算机应用
  18. 自来水厂计算机专业笔试题,注册给排水基础考试真题.docx
  19. 计算机 右键 管理在哪,鼠标右键管理在哪?
  20. ios 科大讯飞错误码11201解决办法

热门文章

  1. 清橙OJ A1046 加法器
  2. 请问winform窗体的圆角怎麽做
  3. 程序员是否合格----看看键盘就知道了
  4. 华为鲲鹏云服务技术与运用 部分习题
  5. 如何在 Python3 中对列表 通过比较排序(不懂就问)?
  6. ASP.NET程序设计复习题
  7. Linux ARM平台开发系列讲解(IIO子系统) 2.8.1 IIO驱动开发分析
  8. 新年第一天 | 恶补新一季《黑镜》的同时,营长又深入扒了扒它那擅长机器学习的新爸爸是如何赚钱的
  9. 主板上集成显卡的计算机在进行显示工作,电脑显卡怎么看
  10. C++ STL常用标准库容器入门(vector,map,set,string,list...)