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

VC++ MFC编辑框动态追加文本:SetSel与ReplaceSel高效实现 在Windows桌面应用开发中,编辑框控件是用户交互与信息展示的基础组件。其核心原理是通过窗口句柄与消息机制实现文本的显示与编辑。传统使用SetWindowText直接替换内容的方式会清空已有文本,无法满足日志输出、聊天窗口等需要累积信息的场景。为此,MFC提供了更精细的文本操作API,通过GetSel、SetSel和ReplaceSel的组合,可以在指定位置插入新内容,从而实现高效的动态追加。这种技术方案不仅避免了整体替换的性能开销,还能精确控制插入点与滚动行为,是构建流畅用户体验的关键。在VC++ MF 阅读详情

基本函数原型:

CRichEditCtrl::SetSel  void SetSel( long nStartChar, long nEndChar );  void SetSel( CHARRANGE& cr );  

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

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

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

  说明:

  此成员函数用来设置这个CRichEditCtrl对象中的选择。

  这个函数的两种形式都用来设置选择的界线,它们可以相互替换。有关这两种形式的简短描述如下所示: · SetSel( cr ) 这种形式用CHARRANGE结构的cpMin和cpMax成员来设置界线。

  · SetSel( nStarChar, nEndChar ) 这种形式用参数nStartChar和nEndChar来设置界线。

  脱字符号被放置在由开始(cpMin或nStartChar)和结束(cpMax或nEndChar)索引中的较大者所指定的选择的结尾处。此函数不滚动CRichEditCtrl的内容,以使脱字符号是可见的。

  要选择此CRichEditCtrl对象中的索引文本,可以用一个为0的开始索引和一个为-1的结束索引来调用SetSel。

  更多的信息,参见Win32文档中的EM_EXSETSET消息和CHARRANGE结构。

  请参阅:

  CRichEditCtrl::GetSel, CRichEditCtrl::GetSelectionType

  CListBox类成员

  CListBox::SetSel  

int SetSel( int nIndex, BOOL bSelect = TRUE );

  返回值:如果出错,则为LB_ERR。

  参数: nIndex 包含设置的字符串的基于零的索引。如果为-1,选择从所有字符串添加或删除,取决于bSelect值。

  bSelect 指定如何设置选择。如果bSelect为TRUE,字符串被选择并高亮显示;如果为FALSE,高亮显示被去掉且字符串不再被选择。缺省时,指定的字符串被选择并高亮显示。

  说明:

  在多选列表框中选择一个字符串。

  只能对多选列表框使用此成员函数。

  请参阅:CListBox::GetSel, LB_SETSEL

  CEdit类成员

  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=0且nEndChar=-1,则编辑控件的文本被全选;如果nStartChar=-1,则任何当前选定内容被去掉选定状态。

  nEndChar 指出结束位置。

CEdit::ReplaceSel

调用此函数。lpszNewText指定的文本替换在编辑控件中当前选择。

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

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

bCanUndo

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

m_ShowInfor.SetSel(-1, -1);//这样可能是全选,也可能是全不选
第一个参数是从第几个记录开始选择,第二个参数是选择到第几个项目,例如m_ShowInfor.SetSel(0, 100);则会把第0~100条记录选上
m_ShowInfor.ReplaceSel(w_str);
应该是把当前选择的项目的字符串替换成w_str的值

用法实例:

m_ShowInfor.SetSel(-1, -1);//这样可能是全选,也可能是全不选
第一个参数是从第几个记录开始选择,第二个参数是选择到第几个项目,例如m_ShowInfor.SetSel(0, 100);则会把第0~100条记录选上
m_ShowInfor.ReplaceSel(w_str);
应该是把当前选择的项目的字符串替换成w_str的值

 

void SetSel( int nStartChar, int nEndChar, BOOL bNoScroll = FALSE );
功能:Call this function to select a range of characters in an edit control
调用此函数能在EDIT Control中选择某范围的字符串

参数
nStartChar


Specifies the starting position. If nStartChar is 0 and nEndChar is –1, all the text in the edit control is selected. If nStartChar is –1, any current selection is removed.
指定开始位置,如果nStartChar 为0并且nEndChar 为-1,则选择所有文字,如果nStartChar 为-1,则不选择任何文字

nEndChar

Specifies the ending position.
指定结束位置

Remarks

Call this function to select a range of characters in an edit control.

For more information, seeEM_SETSEL in the Win32 documentation.


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

Parameters
参数

lpszNewText

Points to a null-terminated string containing the replacement text.
替换的文字
bCanUndo

To specify that this function can be undone, set the value of this parameter to TRUE . The default value is FALSE.
如果此选项为TRUE,则用户可按Ctrl+Z取消此操作
Remarks

Call this function to replace the current selection in an edit control with the text specified by lpszNewText. 

Replaces only a portion of the text in an edit control. If you want to replace all of the text, use the CWnd::SetWindowText member function. 

If there is no current selection, the replacement text is inserted at the current cursor location.

功能:把所选文字替换成lpszNewText的文字

OSG三维渲染引擎编程学习之一百:“第十一章:OSG粒子” 之 “11.1 粒子的主要模块” OSG;三维渲染引擎编程学习;第十一章:OSG粒子;11.1 粒子的主要模块 阅读详情

相关推荐

M2DGR数据集在主流SLAM框架中的实战配置指南:从ORB-SLAM到FAST-LIO的完整流程

本文提供了M2DGR多传感器数据集在主流SLAM框架中的实战配置指南。详细介绍了从ORB-SLAM、VINS-Mono等视觉/视觉惯性框架,到A-LOAM、FAST-LIO等激光/激光惯性框架的完整配置流程、参数调整要点及常见问题解决方案。通过实际测试对比,分析了各算法在M2DGR数据集上的表现,为机器人定位与建图研究提供了宝贵的实战经验。

k9l0m1的博客 481

MFC SetSel和GetSel

通过实际的界面程序了解MFC的SetSel函数和GetSel函数的参数应该怎样传递。 函数参数主要如下: SetSel(int nStartChar, int nEndChar, BOOL bNoScroll); GetSel(int& nStartChar, int& nEndChar); nStartChar表示起始的字符位置 nEndChar表示结束的字符位置

magicggyy的专栏 1万+

SuccessFactors入门篇

SuccessFactors入门篇—— Employee Central(一)最近通过一个月左右的学习,拿到了SF EC(SuccessFactors Employee Central )模块SAP认证,所以打算把自己学习SF的整个过程以及相关资料和大家分享一下,相互切磋,共同进步。Employee Central简单了解Employee Central简单了解新的改变功能快捷键合理的创建标题,有...

qq_42288853的博客 1万+

CEdit的SetSel函数

经过查阅知,SetSel函数是一个选择文本的函数。今天了解到,它有一个特殊的用法就是可以使光标跳到文本的末尾。利用这个函数就可以解决编辑框中换行时光标总在行首的问题。SetSel(str.length,str.length)即可使光标跳到文本的末尾,这个函数应该在UpdateData函数之后使用,应为UpdateData函数会使光标复位。

野藤的专栏 3854

一个固定翼飞机仿真程序带你系统性上手如何实现配平(工具箱+脚本)

老规矩,该博客所用的模型和脚本已上传至百度网盘,名字为“固定翼配平训练例子”,自己自取。

zouxu634866的博客 2568

深入解析ADC采样电容:从充电误差到LSB精度的关键设计

本文深入解析了ADC采样电容在模数转换中的核心作用,重点探讨了充电时间常数与采样误差的博弈关系。通过推导最小采样时间公式,揭示了精度、速度、源阻抗与内部电容之间的制约关系,并提供了从理论计算到外部驱动电路设计的实战指南,是确保ADC达到LSB精度的关键。

android的专栏 1103

c语言setsel函数,SetSel();ReplaceSel();的详细用法

基本函数原型:CRichEditCtrl::SetSel  void SetSel( long nStartChar, long nEndChar );  void SetSel( CHARRANGE& cr );参数: nStartChar 选择中的第一个字符的从零开始的索引。nEndChar 选择中的最后一个字符的从零开始的索引。cr 一个CHARRANGE结构,包含了当前选择的界线。...

weixin_42412850的博客 1475

Argoverse数据集可视化/Argoverse-api

argoverse可视化,argoverse-api配制方法

learning_man的博客 9561

MFC编辑框中追加文本

在编辑框中追加文本有2种方法: 1调用SetWindowText函数 首先调用CWnd::GetWindowText函数获得当前文本,然后调用CWnd::SetWindowText函数设置追加后的文本。 2调用ReplaceSel函数 首先调用CEdit::SetSel函数选定当前文本的末端,然后调用CEdit::ReplaceSel追加文本。 SetSel函数的定义如下: void

Greless的后花园 1万+

软考中级网络工程师通关指南:从学习到实战

本文是软考中级网络工程师备考实用指南,先介绍备考前准备,包括考试时间、形式、分值等基本信息,及引导读者评估自身基础以制定学习计划;再推荐官方教材、辅导书籍、在线课程平台和学习社区等优质资源。随后梳理网络协议、设备配置、安全、规划设计等重点知识,剖析企业网络故障排查与园区网络设计典型案例。还分享真题使用、解题技巧、错题本建立等习题解答方法,给出分阶段备考、时间安排与总结反思的备考计划,最后提供考场答题顺序、检查及心态调整策略,助力考生高效备考、顺利通关。

邓邓子的博客 1852

如何提高电路的抗干扰能力

本内容详细介绍了电源传导干扰处理,包括滤波、Feedthrough电容器、磁环、磁珠、屏蔽的使用与选型,EMC电磁兼容测试项目简介与要求,单片机与电源抗干扰处理等。

让你爱上电路设计 8596

SetSel

 基本函数原型: CRichEditCtrl::SetSel  void SetSel( long nStartChar, long nEndChar );  void SetSel( CHARRANGE& cr );   参数: nStartChar 选择中的第一个字符的从零开始的索引。   nEndChar 选择中的最后一个字符的从零开始的索引。   cr 一个CHARR

u013407012的专栏 845

22、忆阻器、忆阻系统及其神经形态应用综述

本文综述了忆阻器与忆阻系统的理论基础及其在神经形态系统中的广泛应用。从忆阻器的基本定义出发,介绍了其在非线性电路、存储技术、通信和神经形态计算等领域的应用潜力。重点探讨了基于忆阻器的神经元模型(如Hodgkin-Huxley、FitzHugh-Nagumo和Hindmarsh-Rose模型)、突触实现方式及多种忆阻神经网络架构,包括细胞神经网络、脉冲神经网络和递归神经网络等。此外,深入分析了忆阻器在水库计算中的理论研究与硬件实现进展,展示了其在时间序列处理、模式识别和信号预测等方面的优异性能。尽管忆阻技术前

kiwi8的博客 207

win32 edit控件尾部追加内容

有时候我们可能想在win32程序上实时打印我们想要的一些信息,不是以覆盖的形式而是以追加的形式。 以前我常常采用比较笨的方式,首先调用GetDlgItemText获取原先字符串,保存在一个字符数组里面,然后将字符数组追加一个字符串,再调用SetDlgItemText函数达到自己的目的了,这种方式如果要打印的文字短还比较好处理,但是当文字量达到一定程度时,我们势必就要分配一个特别大的...

majalis_C的博客 1048

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

EDIT控件自动滚动最后行

while(true) { CHAR lpBuffer[MAX_LINELEN]; DWORD dwRead = 0; memset(lpBuffer, 0, sizeof(lpBuffer) ); if ( 0 == ReadFile( pDlg->hRead, lpBuffer, sizeof(lpBuffer) - 1, &dwRead, NULL ) || dwRead =

Juey 1027

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

c++ sdk 控件文本框

以前找自网络,现个底!!! LRESULT CALLBACK EditProc(HWND hedit, UINT Msg, WPARAM wParam, LPARAM lParam) { switch (Msg) { case WM_CHAR: { if (wParam == 1) { SendMessage(hedit, EM_SETSEL, 0, -1); return true; } break; } defau...

wzxiaodu的专栏 563

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

[转载]CRichEditCtrl系列讲堂6 一些小技巧_kevin_新浪博客

原文地址:CRichEditCtrl系列讲堂6一些小技巧作者:慢动作的猪CEdit::GetSel DWORD GetSel()const; void GetSel(int& nStartChar,int& nEndChar)const; 返回值: 此版本返回一个双字,其低位字为起始位置,高位字为第一个未被选中的字符的位置。 参数: nStartChar 指向当前选...

weixin_43236827的博客 160

CEdit的简单用法

今晚闲来无事,写篇博文聊解解闷~ CEdit这个空间类,我之前倒是用过,不过那个时候用的还比较菜,现在么,依旧比较菜~ 首先,因为我今天刚做完了一个局域网聊天软件,用的就是CEdit来显示和获取数据的。 最近实验室没网了,所以我在寝室的时候上网随手粘了几篇文章到U盘后就直奔实验室了。 没网还去实验室,是因为在实验的局域网能让我联机调试,我室友用电脑看考研辅导视频。 说了好多废话~ 1 ...

weixin_30332705的博客 204

CRichEditCtrl系列讲堂6 一些小技巧

CEdit::GetSel DWORD GetSel()const; void GetSel(int& nStartChar,int& nEndChar)const; 返回值: 此版本返回一个双字,其低位字为起始位置,高位字为第一个未被选中的字符的位置。 参数: nStartChar 指向当前选中部分的第一个字符位置,用整数表示。 nEndChar 指向第一个未被选中的字符

奔跑吧,蜗牛! 860

向Edit控件设置文本的2种方法

序在cm中对SetWindowText下了断点,发现并不是每个Edit控件的内容设置都拦截到了。 怀疑是用SendMessage设置的文本,用Spy++看到了消息是EM_REPLACESEL. 去查资料,可以用SendMessage(EM_REPLACESEL)设置消息。 再去cm中查调用点,果真每次Edit中设置文本,都会被断下. 用SendMessage(EM_REPLA

博客标题不能为空 3038

Edit Control的设置

设置EDIT属性为readonly SetSel(0,0);//选中光标位置 ReplaceSel("MyString\r\n");//插入字符 转载于:https://www.cnblogs.com/fanzi2009/archive/2009/07/26/1531569.html

weixin_33962923的博客 428

vc 在edit控件中动态插入数据滚动显示

内存从网上论坛摘抄整理 思路:给控件设置多行属性,设置垂直滚动条,Auto Vscroll设置为true,放入文本后把插入点设置到末尾 pEdit->LineScroll(pEdit->GetLineCount()); 滚动条滚动到最下端 int len  = pEdit->GetWindowTextLength(); pEdit->SetSel(len,-1,true); //定位光标到

夜空的流星的专栏 3070

VC 如何向编辑控件中添加文本

由于没有CEdit:: AppendText函数,用户只好自己做此项工作。调用CEdit:: SetSel移动到编辑控件末尾,然后调用CEdit:: ReplaceSel添加文本。下例是AppendText 的一种实现方法: void CMyEdit:: AppendText (LPCSTR pText) { int nLen=GetWindowTextLength (); SetFocus

HelloKandy's Blog 1089

edit控件自动换行 mfc_VC编辑框(EDIT)实现的自动换行、自动滚屏 、自动清空

在自动换行设置的时候,要在EDIT控件的属性中选中"multiline"的属性和Auto_HScroll、Vertical scroll。经过多次测试,总结出VC编辑框(EDIT)的自动换行与自动滚屏的方法。方法一: (当EDIT映射到一CString时)m_String = m_String + sNewString + "\r\n"//自动换行(其中m_String是EDIT筐所关联的CStr...

weixin_39859819的博客 1968

vc在edit控件中动态插入数据滚动显示

思路:给控件设置多行属性,设置垂直滚动条,Auto Vscroll设置为true,放入文本后把插入点设置到末尾 pEdit->LineScroll(pEdit->GetLineCount()); 滚动条滚动到最下端 int len  = pEdit->GetWindowTextLength(); pEdit->SetSel(len,-1,true); //定位光标到内

788
上一篇: shellexecute 详解
下一篇: 图像列表控制(CImageList)
heary29
博客等级 码龄12年 37粉丝 85原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值