编辑框控件的两种成员变量(CEdit控件类型与CString 值类型之间的关联问题)

来源:互联网 发布:猎人mm 源码 编辑:程序博客网 时间:2024/05/29 14:55

1.  edit控件------控件ID直接操作

id—转化句柄类指针

((CEdit*)GetDlgItem(IDC_EDITID))->SetWindowText(str);//注意括号的位置括法

2.  edit控件------Cstring类型

如果只是简单的获取 edit控件内容,或设置简单的内容 建议使用cstring类型成员变量。

UpdateData(TRUE) 即:控件的值—>变量

——刷新控件的值到对应的变量(外部输入值交给内部变量)

-----------------------------------默认的缺省参数TRUE

UpdateData(FALSE)即:变量值—>控件显示。

—— 拷贝变量值到控件显示。(变量的最终运算结果值交给外部输出显示)

例如:我们在对话框窗口中添加了3editbox,然后将前两个的值相加,然后在第三个editbox中输出。

那么我们可以做如下处理:

1。用类向导在3editbox下添加3变量,我们命名为m_num1,m_num2,m_num3

2。然后我们可以多添加一个button控件,在其的click处理事件中,添加以下代码:

UpdateData();// 默认的缺省参数TRUE,这样,将EditBox控件的内容读入到与其关联的变量

m_num3 = m_num1+m_num2;

UpdateData(FALSE);// 将变量的值,输出到与其关联的EditBox

就可以了

 

 

示例:

CString m_strEdit;

//获得edit框内容
UpdateData(true);

此时m_strEdit就是edit框内容的字符串变量。

//要更新edit的话只要对m_strEdit进行赋值然后

UpdataData(false);//即可

3.  edit控件------Cedit类型
如果是一些对edit框的复杂操作建议cedit类型。

相关函数:

(1)     void SetSel( long nStartChar开始位置索引, long nEndChar 结束为止索引);

--------------------用来选中edit框中的文本,选中后光标位置在结尾处

void SetSel( CHARRANGE& cr );

作用:这个函数的两种形式都用来设置选择的界线,它们可以相互替换

参数: nStartChar 选择中的第一个字符的从零开始的索引

nEndChar 选择中的最后一个字符的从零开始的索引。

cr 一个CHARRANGE结构,包含了当前选择的界线。

CEdit::SetSel

void SetSel(DWORD dwSelection, BOOL bNoScroll = FALSE);

void SetSel(int nStartChar, int nEndChar, BOOL bNoScroll = False);

参数: dwSelection 低位字指定起始位置,高位字为结束位置。如果低位为0,高位为-1,则编辑控件中的全部文本被选中;如果低位字为-1,则任何当前选定内容被去掉选定状态。

bNoScroll 指示是否显示脱字符是滚动可见的。如果值为FALSE,则显示,TRUE不显示。

nStartChar 指出当前选中部分的开始位置。如果nStartChar=0nEndChar=-1,则编辑控件的文本被全选;如果nStartChar=-1,则任何当前选定内容被去掉选定状态。

nEndChar 指出结束位置。

 

 

 

(2)     DWORD GetSel( ) const;
void GetSel( int& nStartChar, int& nEndChar ) const;

------------------------用来得到edit框中所选部分的位置。
两个函数都是CEdit的成员函数,用来获得所选正文的位置。

GetSel的第一个版本返回一个DWORD值,其中低位字说明了被选择的正文开始处的字符索引,高位字说明了选择的正文结束处的后面一个字符的字符索引,

如果没有正文被选择,那么返回的低位和高位字节都是当前插入符所在字符的字符索引。

GetSel的第二个版本的两个参数是两个引用,其含义与第一个版本函数返回值的低位和高位字相同。

 

3void ReplaceSel( LPCTSTR lpszNewText, BOOL bCanUndo = FALSE );

lpszNewText指定的文本替换在编辑控件中当前选择。

lpszNewText指向包含替换文本的一个 NULL 终止的字符串。

bCanUndo若要指定此功能可以取消,请将该参数的值设置为 TRUE  默认值为 FALSE

替换文本的一部分在编辑控件中。

如果您希望替换所有文本,请使用 CWnd::SetWindowText 成员函数。

如果没有当前选择,替换文本在当前的光标位置插入

 

区别:SetWindowText—光标位置在开始,而replacesel在结尾

 

示例:

CEdit m_ctrlEdit;m_ctrlEdit.SetSel(0,0); //将光标移到开头=所选部分开头和结尾都在0

 

m_ctrlEdit.SetSel(-1); //将光标移到末尾=所选部分开头在结尾m_ctrlEdit.SetSel(-1, -1)也可

 

 

m_ctrlEdit.SetSel(0,-1); //选中所有内容果没有当前选择,替换文本在当前的光标位置插入

m_ctrlEdit.ReplaceSel("替换内容");//写入值

 

//得到当前edit框中的所有字符数
int iStart,iCount;//iCount
 为字符数
m_ctrlEdit.SetSel(0,-1); //
选中所有

m_ctrlEdit.GetSel(iStart,iCount);

0 0