有谁用过CRichEditCtrl::GetSelText()这个函数,为什么总是空?

txz_yshb 2010-10-22 04:15:44
我得到的结果总是空,把我搞郁闷了。

有谁用过的来说一说,或者贴段代码
...全文
233 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
muzizongheng 2010-10-25
  • 打赏
  • 举报
回复
m_richctrl.SetSel(0,-1);
m_richctrl.GetSelText()
周药师 2010-10-25
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 txz_yshb 的回复:]

引用 11 楼 zhouzhangkui 的回复:

C/C++ code

BOOL CTestDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if(pMsg->message == WM_KEYDOWN)
{
if……
[/Quote]
我的是测试通过的
txz_yshb 2010-10-25
  • 打赏
  • 举报
回复
实在是不好意思,是我SX了,浪费大家时间

我的是Edit控件,后来就改了下代码改成使用CRichEditCtrl了,控件没有变。

其实是我压根就不知道还有这个控件,今天幸好让我看到了这个控件,不然打死我也搞不清楚怎么回事

面壁去。。。
周药师 2010-10-24
  • 打赏
  • 举报
回复

BOOL CTestDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if(pMsg->message == WM_KEYDOWN)
{
if( pMsg->wParam == VK_RETURN )
{
long nStartChar, nEndChar;
LPTSTR m_szBuf = L"";
int nLen = m_RichEdit.GetWindowTextLength();
nLen = m_RichEdit.GetWindowText(m_szBuf, nLen);
m_RichEdit.SetSel(0, 10);
nStartChar = nLen ;
m_RichEdit.GetSel(nStartChar,nEndChar);// .GetSel(nLen, nEndChar);
CString strTest;
strTest = m_RichEdit.GetSelText();
MessageBox(strTest);

}
}
return CDialog::PreTranslateMessage(pMsg);
}
txz_yshb 2010-10-24
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 zhouzhangkui 的回复:]

C/C++ code

BOOL CTestDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if(pMsg->message == WM_KEYDOWN)
{
if( pMsg->wParam……
[/Quote]
貌似和我的差不多啊,明天再看,今天休息
txz_yshb 2010-10-23
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 visualeleven 的回复:]

把你的代码贴出来
[/Quote]

部长快来帮忙啦
txz_yshb 2010-10-23
  • 打赏
  • 举报
回复

BOOL CPage_Cmd::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if(pMsg->message == WM_KEYDOWN)
{
if( pMsg->wParam == VK_RETURN )
{
nLen = m_edit.GetWindowTextLength();
memset(m_szBuf, 0, SIZE_MAX);
nLen = m_edit.GetWindowText(m_szBuf, SIZE_MAX);
m_edit.SetSel(0, 10);
m_edit.GetSel(nLen, m_edit.nEndChar);
CString strTest;
strTest = m_edit.GetSelText();

}
}
return CDialog::PreTranslateMessage(pMsg);
}

我自定义了一个CRichEditCtrl下的子类CMenuEdit
CMenuEdit m_edit;
上面的代码GetWindowText可以成功,GetSelText却总是为空
Eleven 2010-10-23
  • 打赏
  • 举报
回复
把你的代码贴出来
txz_yshb 2010-10-23
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 visualwind 的回复:]

结果是对的,-1就表示选择了全部。
[/Quote]

这个是对,但是
m_richctrl.SetSel(0,-1);
m_richctrl.GetSel(n1,n2);得到的结果确实n1=0,n2=-1
m_richctrl.GetWindowText();这个得到的为空,,烦啊
visualwind 2010-10-23
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 txz_yshb 的回复:]
引用 3 楼 a19860903 的回复:

楼主应该这样
m_richctrl.SetSel(0,-1);
m_richctrl.GetWindowText();


我就是这样,得到的确实为空,并且
m_richctrl.SetSel(0,-1);
m_richctrl.GetSel(n1,n2);得到的结果确实n1=0,n2=-1
[/Quote]

结果是对的,-1就表示选择了全部。
txz_yshb 2010-10-23
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 a19860903 的回复:]

楼主应该这样
m_richctrl.SetSel(0,-1);
m_richctrl.GetWindowText();
[/Quote]

我就是这样,得到的确实为空,并且
m_richctrl.SetSel(0,-1);
m_richctrl.GetSel(n1,n2);得到的结果确实n1=0,n2=-1
信阳毛尖 2010-10-22
  • 打赏
  • 举报
回复
把你的代码贴出来让大伙儿看看
疯狂石头_ 2010-10-22
  • 打赏
  • 举报
回复
楼主应该这样
m_richctrl.SetSel(0,-1);
m_richctrl.GetWindowText();
visualwind 2010-10-22
  • 打赏
  • 举报
回复
你得在界面上用鼠标选择了一个段落以后再调这个函数,否则肯定是空的。
你也可以先用SetSel代码选择好段落,再调
txz_yshb 2010-10-22
  • 打赏
  • 举报
回复
我就是想在一个编辑框里按回车的时候,得到这个输入的字符串,不想每次都调用GetWindowText(),因为到最后字符太多了用这个感觉效率不高。

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

试试用AI创作助手写篇文章吧