CEdit的派生类的OnLButtonDbClk()中,用SetSel()想高亮显示选中行,无效???? 哪里有问题呢? 谢谢

shadowWind 2005-01-24 08:36:51
1. 动态创建CMyEdit控件的代码:
pEdit = new CMyEdit;
pEdit->Create(WS_CHILD|WS_VISIBLE|WS_TABSTOP|ES_MULTILINE
|WS_VSCROLL,
CRect(10,10,100,100), this, 1);
pEdit->ModifyStyleEx(0, WS_EX_CLIENTEDGE, SWP_DRAWFRAME);

2. CMyEdit中被继承的函数
void CMyEdit::OnLButtonDblClk(UINT nFlags, CPoint point)
{
int iStart, iEnd;
CString m_sSelectedText, m_sEditText;
GetSel(iStart, iEnd);
GetWindowText(m_sEditText);

//get begin and end position of selected line (between two '\n')
int iLeft = m_sEditText.ReverseFind('\n');
int iRight = iLeft;
CString remainStr = m_sEditText.Left(iLeft);
while ( iLeft>iStart )
{
iRight = iLeft-1;
iLeft = remainStr.ReverseFind('\n');
remainStr = remainStr.Left(iLeft-1);
}

//set selected for current line
SetFocus();
SetSel(iLeft+1,iRight-iLeft-1); //这里无效,没有高亮显示整行。
//get text of selected line
m_sSelectedText = m_sEditText.Mid(iLeft+1,iRight-iLeft-1);//这里得到了整行的内容

CEdit::OnLButtonDblClk(nFlags, point);
}

???
谢谢
...全文
492 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
chuanke 2005-01-25
  • 打赏
  • 举报
回复
==========================================================================
把CEdit::OnLButtonDblClk(nFlags, point);//注释起来,另:
CEdit::SetSel
void SetSel( DWORD dwSelection, BOOL bNoScroll = FALSE );

void SetSel( int nStartChar, int nEndChar, BOOL bNoScroll = FALSE );

Parameters

dwSelection

Specifies the starting position in the low-order word and the ending position in the high-order word. If the low-order word is 0 and the high-order word is –1, all the text in the edit control is selected. If the low-order word is –1, any current selection is removed.

低位字指定起始位置,高位字为结束位置。如果低位为0,高位为-1,则编辑控件中的全部文本被选中;如果低位字为-1,则任何当前选定内容被去掉选定状态。

bNoScroll

Indicates whether the caret should be scrolled into view. If FALSE, the caret is scrolled into view. If TRUE, the caret is not scrolled into view.

指示是否显示脱字符是滚动可见的。如果值为FALSE,则显示,TRUE不显示。

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.

调用此成员函数在一个编辑控件中选择一定范围的字符。
shadowWind 2005-01-25
  • 打赏
  • 举报
回复
谢谢 tonyswe(tong) ( )

我太马虎了,Setsel那里参数写错了。

最后一行注释掉就好了。

解决了,结贴。
hongtog 2005-01-25
  • 打赏
  • 举报
回复
发现是最后一行在作怪,, 注释调就可以了..
CEdit::OnLButtonDblClk(nFlags, point);
hongtog 2005-01-25
  • 打赏
  • 举报
回复
哦,,错了,,是选了单词了..
hongtog 2005-01-25
  • 打赏
  • 举报
回复
楼主是不是想双击选中CEdit的某行呀,,
代码是否有误,,
改成
void SetSel( int nStartChar, int nEndChar, BOOL bNoScroll = FALSE );


int iLeft = m_sEditText.ReverseFind('\n');
int iRight = iLeft;
CString remainStr = m_sEditText.Left(iLeft);
if(iLeft<iStart)
iRight = m_sEditText.GetLength(); //

while ( iLeft>iStart )
{
iRight = iLeft-1;
iLeft = remainStr.ReverseFind('\n');
remainStr = remainStr.Left(iLeft-1);
}
//set selected for current line
SetFocus();

SetSel(iLeft+1,iRight); //这里无效,没有高亮显示整行。
shadowWind 2005-01-25
  • 打赏
  • 举报
回复
I_Love_CPP(我愛C++) ( ) :

不是的,CEdit自己默认的双击高亮显示的是当前选中的一个单词,而不是一整行
老夏Max 2005-01-25
  • 打赏
  • 举报
回复
不会是你在主界面中已经处理过双击消息的关系吧?呵呵,给个Sample我测试一下,xia_qingqi@broadxent.com.cn
fanqing 2005-01-25
  • 打赏
  • 举报
回复
既然楼上说没有就使用RichEdit
I_Love_CPP 2005-01-24
  • 打赏
  • 举报
回复
CEdit自己就有设置整行高亮的效果(北京为蓝色,字体为白色)。

内容概要:本文研究了一种基于遗传算法的新型异构分布式系统任务调度算法,旨在解决异构计算环境任务分配与调度的复杂优化问题。通过Matlab代码实现该算法,充分利用遗传算法强大的全局搜索能力和鲁棒性,对任务执时间、资源利用率、系统负载均衡等关键性能指标进综合优化,有效提升分布式系统的整体运效率与稳定性。研究详细阐述了算法的整体架构设计、染色体编码策略、适应度函数构造、选择机制以及交叉与变异等遗传操作的实现细节,并通过大量仿真实验验证了所提出算法相较于传统调度方法在收敛速度、解的质量和调度性能方面的显著优越性。; 适合人群:具备一定编程基础和优化算法理论知识,从事分布式计算、高性能计算、云计算资源调度或智能优化算法研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于高性能计算、云计算、边缘计算等异构计算平台的任务调度优化,提升资源利用效率;②为研究人员提供遗传算法在复杂组合优化问题应用的完整实现案例,深化对智能优化算法设计原理与仿真实践的理解; 阅读建议:建议读者结合提供的Matlab代码深入研读,重点理解适应度函数的设计逻辑与遗传算子的参数调优策略,并可通过更换不同的任务集和系统模型来测试算法的泛化能力与鲁棒性。
参考李林凤等(2025)一文关于农村劳动力人均受教育年限指标的构建与计算方法,整理了国31个省份总体、分性别的农村人均受教育年限数据,具体计算方法如下: 农村劳动力人均受教育年限 = (农村未上过学人数 × 1+小学学历人数 × 6+初学历人数 × 9+高专学历人数 ×12+大专及以上学历人数 × 16)/农村6岁及以上总人口 相关数据:各地区、分性别人均受教育年限数据 一、数据介绍 数据名称:国各省农村人均受教育年限 数据范围:全国31个省份 时间范围:2006-2024年 样本数量:590条 数据来源:《国人口和就业统计年鉴》、《国劳动统计年鉴》 二、数据指标 年份 省份 省份代码 农村人均受教育年限 男性-农村人均受教育年限 女性-农村人均受教育年限 6岁及以上人口 6岁及以上人口_男 6岁及以上人口_女 未上过学人口 未上过学人口_男 未上过学人口_女 小学人口 小学人口_男 小学人口_女 初人口 初人口_男 初人口_女 高人口 高人口_男 高人口_女 大专及以上人口 大专及以上人口_男 大专及以上人口_女 三、参考文献 [1]李林凤,刘杨,杨亦民.种业创新驱动农村产业融合的作用机制与空间分异效应[J].广东财经大学学报,2025,40(6):97-109. [2]徐小阳,李洁,金丽馥.普惠金融对农村教育贫困的纾解效应[J].国农村经济,2020,(9):41-64.
内容概要:本文围绕基于改进秃鹰算法的微电网群经济优化调度展开研究,提出了一种结合智能优化算法的调度模型,旨在实现微电网群运过程的成本最小化与能源利用效率最大化。研究详细阐述了改进秃鹰算法的原理与优化机制,将其应用于含分布式电源、储能系统及多元负荷的微电网群多目标经济调度问题,充分考虑系统运约束与能源交互特性,构建了完整的数学模型,并通过Matlab代码实现了算法仿真与结果验证。该资源不仅提供了核心算法代码,还整合了电力系统建模、智能优化、仿真分析等关键技术,形成一套完整的科研复现体系,有助于深入理解先进优化算法在现代能源系统的实际应用。; 适合人群:具备电力系统基础、优化算法理论及Matlab编程能力的研究生、科研人员和工程技术人员,特别适用于从事微电网、综合能源系统、智能调度等领域研究的专业人士。; 使用场景及目标:①复现并验证改进秃鹰算法在微电网群经济调度的有效性;②掌握智能优化算法在复杂电力系统调度问题的建模与求解方法;③依托所提供的Matlab代码开展学术论文复现、科研项目开发或工程方案设计;④拓展应用于储能优化、电动汽车调度、多能协同等关联领域的创新研究。; 阅读建议:建议读者结合文本说明与Matlab代码同步实践,重点关注算法实现细节、模型构建逻辑与参数设置方法,通过仿真实验加深对优化过程的理解,并尝试将该方法迁移至其他类似优化问题对比分析与创新改进。
源码链接: https://pan.quark.cn/s/e75a09b40d94 在计算机系统,注册表被视为Windows操作系统不可或缺的一部分,它负责存储系统及应用程序的各类配置信息。注册表键、值与数据共同构建了一个层级化的数据库,用于调控软件配置、硬件设备及其他系统层面的设定。对注册表信息进批量移除是一项需要小心进的工作,因为不当地移除核心注册表条目可能引发系统运不正常甚至系统崩溃。 标题"批量移除注册表信息"指的是借助特定工具或手段,一次性清除多个注册表记录。此过程通常包含搜索与特定关键词相联系的注册表条目,并依据用户设定的标准执删除。批量移除能够节省时间,但伴随的风险也随之提升,因此需要对操作有透彻的认识和丰富的实践经验。 描述提及的"免费下载"或许是指提供了一款名为RegistryWorkshop的应用程序,这是一款专注于注册表管理与编辑的软件。RegistryWorkshop使用户能够便捷地搜寻、调整和移除注册表条目,并且特别突出了其批量处理能力。借助"Ctrl+F"进搜寻,用户可以输入关键词,随后软件将展示所有符合的注册表条目,用户可从选择移除。除此之外,用户亦能设定移除条件,例如依据注册表条目的建立时间、体积或其他特征进筛选和移除。 RegistryWorkshop作为一个功能强大的注册表编辑工具,具备以下特性: 1. **搜寻与替换**:用户可通过输入关键词搜寻注册表,找到相关项目后,可选择替换或移除它们。 2. **批量操作**:让用户能够一次性选取多个注册表条目进移除,或实施其他批量操作,如重命名、复制、剪切和粘贴等。 3. **备份与复原**:在实施任何改动前,RegistryWorkshop会提示用户建立备份...

16,550

社区成员

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

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

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