MFC Edit控件 在光标处插入字符

pipihaha 2008-03-25 02:42:06
MFC, 一个对话框中,我做了一个EDIT控件,一个按钮控件, 怎么样才能让按钮点下去,把文本写在Edit 光标插入的地方呢?

我用了下两个函数:
void SetSel(int nStartChar, int nEndChar, BOOL bNoScroll = False);

void ReplaceSel(LPCTSTR lpszNewText,BOOL bCanUndo=False);
原文:
void CSQLDlg::OnAnd()
{
UpdateData();

m_ExprCombo.SetSel(-1,0);

this->m_ExprCombo.ReplaceSel(" and");

UpdateData(FALSE);

}

为什么结果是一按钮, 将所有内容清空了呢??

...全文
407 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
pipihaha 2008-03-30
上述方法都不行啊~!!!
回复
kingstarer 2008-03-30
我试了一下,确实可以实现

首先要定义全局变量int nstar, nend;
接着在编辑框响应ON_EN_KILLFOCUS,调用m_edit.GetSel(nstar, nend);//获取光标所在位置
在按钮响应OnButton()里调用以下代码
m_edit.GetFocus();//获取输入焦点
m_edit.SetSel(nstar, nend);//恢复光标位置
m_edit.ReplaceSel("and");//替换
回复
kingstarer 2008-03-30
没做过类似的。 不过一离开输入框,光标就会移动了 所以应该响应鼠标离开输入框的事件,记录此时的光标所在位置才能实现点击按钮时输入文字吧?
回复
菜牛 2008-03-29
你要自己设置文本框内容,就不要用UpdateData;你要在光标处插入文本,就不要用SetSel(-1,0);
回复
pipihaha 2008-03-25
nStartChar 指出当前选中部分的开始位置。如果nStartChar=0且nEndChar=-1,则编辑控件的文本被全选;如果nStartChar=-1,则任何当前选定内容被去掉选定状态。
nEndChar 指出结束位置。


不是啊,我特别看了这个了啊.

应该怎么用呢??
回复
ouyh12345 2008-03-25
m_ExprCombo.SetSel(-1,0); 全选!

DWORD index = m_ExprCombo.GetSel();
m_ExprCombo.SetSel(index, index);
回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2008-03-25 02:42
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……