VC_CEDIT_SetSel()

原创 2007年12月12日 14:50:00

作用:
定制EDIT的所选择内容.间接地可以用于定位光标位置.

使用例子:
EXP1:设置光标
CEdit*      pEdit=(CEdit*)GetDlgItem(IDC_EDIT1);   
pEdit->SetSel(2,2);   
pEdit->SetFocus();  

EXP2:选择内容
CEdit*      pEdit=(CEdit*)GetDlgItem(IDC_EDIT1);   
pEdit->SetSel(0,2);//两个字符   


说明:
如果出现光标设置失效的情况,可能是由于以下情况:因为UpdateData()的作用也会重置光标,所以用于设置光标时一定要放在UpdateData()之后.
如果用于选择内容:SetSel(0,-1)表示全选;SetSel(-1,i)表示删除所有.      

 

 

1.怎么在CEDIT执行回车换行显示的功能?

CEdit控件设置want return 属性 并设置Multiline属性,此时用

 CEdit* pEdit = (CEdit*)GetDlgItem(IDC_EDIT1);
 pEdit->SetWindowText("第一/r/n第二/r/n第三");

将显示3行。

 

2。作为密码输入控件使用。

m_WndEDIT4.SetPasswordChar('*');

 

3。CEDIT没有AppendText功能怎么办?

   int  nLength  =  m_WndEDIT4.SendMessage(WM_GETTEXTLENGTH);
   m_WndEDIT4.SetSel(nLength, nLength);
   m_WndEDIT4.ReplaceSel( " abc " );

 

1.如果文本框和变量建立了关联直接
UpdateData(TRUE)  //用于获得文本框中的内容;
UpdateData(FALSE) //用于更新文本框的内容并和更新关联的变量
例如:
DDX_Text(pDX, IDC_EDIT1, m_sEdit1);//把变量m_sEdit1与IDC_EDIT1建立联系

//让文本框中显示“Hello”
m_sEdit1 = "Hello";
UpdateData(FALSE);

//获得文本框的用户输入内容
UpdateData(TRUE);//如果用户写入的是"MingFei",那么m_sEdit1的值应该是"MingFei"
if (m_sEdit1 == "MingFei")
{
AfxMessageBox("OK");
}
2.
CString str;
GetDlgItemText(IDC_EDIT1, str);//获得文本框中的内容,保存在str中
SetDlgItemText(IDC_EDIT1, str);//向文本框中写入str
3.麻烦点,其实就是第二种方法
 CEdit *edit=(CEdit*)GetDlgItem(IDC_EDIT1);
CString dir;
 edit->GetWindowText(dir);

 

 

(47) 如何限制编辑框中的准许字符
  如果用户在编辑控件中只允许接收数字,可以使用一个标准的编辑控件并指定新的创建标志ES_NUMBERS,它是Windows 95新增加的标志,该标志限制 编辑控件只按收数字字符。如果用户需要复杂的编辑控件,可以使用Microsoft 的屏蔽编辑控件,它是一个很有用的OLE定制控件。 
如果希望不使用OLE 定制控件自己处理字符,可以派生一个CEdit类并处理WM_CHAR消息,然后从编辑控件中过滤出特定的字符。首先,使用ClassWizard建立一个 CEdit的派生类,其次,在对话类中指定一个成员变量将编辑控件分类在OnInitdialog 中调用CWnd: : SubclassDlgItem . 
  //In your dialog class declaration (.H file )
  private : CMyEdit m_wndEdit // Instance of your new edit control . 
  //In you dialog class implementation (.CPP file )
  BOOL CSampleDialog : : OnInitDialog ( )
  {
  … 
  //Subclass the edit lontrod .
  m_wndEdit .SubclassDlgItem (IDC_EDIT,this) 
  …
  } 

  使用ClassWizard处理WM_CHAR消息,计算nChar参量并决定所执行的操作,用户可以确定是否修改、传送字符。下例说明了如何显示字母字符,如果字符是字母字符,则调用CWnd OnChar,否则不调用OnChar. 
  //Only display alphabetic dharacters .
  void CMyEdit : : OnChar (UINT nChar , UINT nRepCnt , UITN nFlags )
  {
  //Determine if nChar is an alphabetic character.
  if (: : IsCharAlpha ( ( TCHAR) nChar ) )
  CEdit : : OnChar (nChar, nRepCnt , nFlags )
  } 

  如果要修改字符,则不能仅仅简单地用修改过的nChar调用CEdit: : OnChar,然后CEdit: : OnChar调用CWnd: : Default获取原来的wParam 和lParam 的值,这样是不行的。要修改一个字符,需要首先修改nChar,然后用修改过的nChar调用CWnd: : DefWindowProc。下例说明了如何将字符转变为大写: 
  //Make all characters uppercase
  void CMyEdit : : OnChar (UINT nChar , UINT nRepCnt , UINT nFlags )
  {
  //Make sure character is uppercase .
  if (: : IsCharAlpha ( .( TCHAR) nChar)
  nChar=: : CharUpper(nChar ) 
  //Bypass default OnChar processing and directly call
  //default window proc.
  DefWindProc (WM_CHAR, nChar , MAKELPARAM (nRepCnt, nFlags ))
  } 

 

枚举所有字体 
LOGFONT lf;
lf.lfCharSet = DEFAULT_CHARSET; // Initialize the LOGFONT structure
strcpy(lf.lfFaceName,"");
CClientDC dc (this);
// Enumerate the font families
::EnumFontFamiliesEx((HDC) dc,&lf, (FONTENUMPROC) EnumFontFamProc,(LPARAM) this,0);
//枚举函数
int CALLBACK EnumFontFamProc(LPENUMLOGFONT lpelf,
                             LPNEWTEXTMETRIC lpntm,DWORD nFontType,long lparam)
                  
{
    // Create a pointer to the dialog window
    CDay7Dlg* pWnd = (CDay7Dlg*) lparam;
    // add the font name to the list box
    pWnd ->m_ctlFontList.AddString(lpelf ->elfLogFont.lfFaceName);
    // Return 1 to continue font enumeration
    return 1;
}


 

相关文章推荐

SetSel();ReplaceSel();的详细用法

基本函数原型: CRichEditCtrl::SetSel  void SetSel( long nStartChar, long nEndChar );  void SetSel( CHARRAN...
  • heary29
  • heary29
  • 2015年03月04日 16:02
  • 2859

让CEdit控件SetSel后选中其中内容

利用类向导添加对edit控件的消息EN_SETFOCUS void CSetselDlg::OnSetfocusEdit3() { // TODO: Add your control no...
  • cnki_ok
  • cnki_ok
  • 2011年05月05日 09:51
  • 4871

让CEdit控件SetSel后选中其中内容

想像WINDOWS的查找框那样,鼠标点一下还是全部选中状态,在实际中大致过程: 1. 利用类向导添加对edit控件的消息EN_SETFOCUS,例如OnSetfocusEditDate() 2. 函数...
  • wzbhbb
  • wzbhbb
  • 2008年05月28日 17:51
  • 2920

MFC中CEdit控件使用SetSel无法取消全选状态解决办法

问题背景:      我的对话框里只含有一个CEdit 控件,在对话框初始化时,我会载入外部文件的内容到Edit控件中。      在代码中我明明正确调用了CEdit的SetSel方法,但...

CEdit的一切

SetSel(start,end)作用: 定制EDIT的所选择内容.间接地可以用于定位光标位置. 使用例子: EXP1:设置光标 CEdit*      pEdit=(CEdit*)G...

CEdit

编辑框控件CEdit 关于编辑框的功用我就不用多说了,因为它无处不在。 好了,和上面一样,先来看看MSDN: The CEdit class provides the functionality...

CEdit

CEdit类提供了Windows编辑控件中的功能。编辑控件是一个子窗口矩形,用户可以向其中输入文本。   可以通过对话模板或直接从代码中创建一个编辑控件。在两种情形下,首先调用CEdit构造...

自绘编辑框CEdit(继承CEdit方式)

对于自定义控件, 我们可以这样理解: 我们要处理控件的行为和显示. 我这里的需求只需要自定义编辑框的显示即可, 行为则使用默认即可. 通过重载CEdit就可以实现. 1. 主要实现内容 显...
  • cay22
  • cay22
  • 2015年12月09日 17:11
  • 1396

获取控件上的文本值---例子是CEdit 的七种方法

 1.         int num1,num2,num3; char ch1[10],ch2[10],ch3[10]; GetDlgItem(IDC_EDIT1)->GetWindowText(c...

CEdit控件 详细介绍

CEdit类提供了Windows 编辑控件中的功能。编辑控件是一个子窗口矩形,用户可以向其中输入文本。可以通过对话模板或直接从代码中创建一个编辑控件。在两种情形下,首先调用CEdit构造程序构造CEd...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:VC_CEDIT_SetSel()
举报原因:
原因补充:

(最多只允许输入30个字)