cedit 光标位置
场景:在CEDIT中设置光标位置有关问题
在CEDIT中设置光标位置问题
点击一个对话框的一个按钮, 生成另一个对话框, 需要在初始化对话框时, 将光标设置在该对话框的CEdit控件中的某一位置, 在OnInitDialog()中调用如下代码:
m_CEditUserItem.SetWindowText(m_userdefineItem.Expression); //m_CEditUserItem为CEdit控件
m_CEditUserItem.SetSel(m_userdefineItem.Expression.GetLength(),
m_userdefineItem.Expression.GetLength());
m_CEditUserItem.SetFocus();
如果在对话框生成后, 再通过该对话框上的一个按钮, 调用上面代码, 则能将光标移到CEdit对应的位置, 请大家帮忙看看
------解决方案--------------------
对应的位置 是 什么位置?
如果是文本末的话,m_CEditUserItem.SetSel(-1);简单点
------解决方案--------------------
------解决方案--------------------
BEGIN_MESSAGE_MAP(CaaaaDlg, CDialog)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
ON_EN_CHANGE(IDC_SHURUZIFU, &CaaaaDlg::OnEnChangeShuruzifu)
END_MESSAGE_MAP()
void CaaaaDlg::OnEnChangeShuruzifu()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CDialog::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
CString sss,duibiwenzi_str = TEXT("duibiwenzi");
GetDlgItemText(IDC_SHURUZIFU,sss);
if(duibiwenzi_str.Left(sss.GetLength())!=sss)
{
sss.SetAt(sss.GetLength()-1,'\0');
SetDlgItemText(IDC_SHURUZIFU,sss);
((CEdit*)GetDlgItem(IDC_SHURUZIFU))->SetSel(-1);
}
}
------解决方案--------------------
对话框初始创建出来时焦点在edit上么?
------解决方案--------------------
CEdit::PosFromChar
------解决方案--------------------
我试了一下
你在OnInitDialog中return false
------解决方案--------------------
xianglitian 说的是正确的,如果不想让对话框窗口得到焦点,在OnInitDialog最后return FALSE就可
------解决方案--------------------
9L正解。。
return TRUE; // return TRUE unless you set the focus to a control
------解决方案--------------------
学习编程语言之前最好先学好一种人类语言。
在CEDIT中设置光标位置问题
点击一个对话框的一个按钮, 生成另一个对话框, 需要在初始化对话框时, 将光标设置在该对话框的CEdit控件中的某一位置, 在OnInitDialog()中调用如下代码:
m_CEditUserItem.SetWindowText(m_userdefineItem.Expression); //m_CEditUserItem为CEdit控件
m_CEditUserItem.SetSel(m_userdefineItem.Expression.GetLength(),
m_userdefineItem.Expression.GetLength());
m_CEditUserItem.SetFocus();
如果在对话框生成后, 再通过该对话框上的一个按钮, 调用上面代码, 则能将光标移到CEdit对应的位置, 请大家帮忙看看
------解决方案--------------------
对应的位置 是 什么位置?
如果是文本末的话,m_CEditUserItem.SetSel(-1);简单点
------解决方案--------------------
------解决方案--------------------
BEGIN_MESSAGE_MAP(CaaaaDlg, CDialog)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
ON_EN_CHANGE(IDC_SHURUZIFU, &CaaaaDlg::OnEnChangeShuruzifu)
END_MESSAGE_MAP()
void CaaaaDlg::OnEnChangeShuruzifu()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CDialog::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
CString sss,duibiwenzi_str = TEXT("duibiwenzi");
GetDlgItemText(IDC_SHURUZIFU,sss);
if(duibiwenzi_str.Left(sss.GetLength())!=sss)
{
sss.SetAt(sss.GetLength()-1,'\0');
SetDlgItemText(IDC_SHURUZIFU,sss);
((CEdit*)GetDlgItem(IDC_SHURUZIFU))->SetSel(-1);
}
}
------解决方案--------------------
对话框初始创建出来时焦点在edit上么?
------解决方案--------------------
CEdit::PosFromChar
------解决方案--------------------
我试了一下
你在OnInitDialog中return false
------解决方案--------------------
xianglitian 说的是正确的,如果不想让对话框窗口得到焦点,在OnInitDialog最后return FALSE就可
------解决方案--------------------
9L正解。。
return TRUE; // return TRUE unless you set the focus to a control
------解决方案--------------------
学习编程语言之前最好先学好一种人类语言。