| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2086 人关注过本帖
标题:基于 CEditView,如何实现使鼠标不能选中文字?
只看楼主 加入收藏
xiaoyanwang661
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2006-6-18
收藏
 问题点数:0 回复次数:4 
基于 CEditView,如何实现使鼠标不能选中文字?

就是单击并移动来选择文字并变成高亮,怎么禁止上述操作?
有人说用重载PreTranslateMessage,拦截WM_LBUTTONDOWN消息的方法,这个可以实现,但是所有鼠标左键的操作都被屏蔽了,我只是想禁止选中文字,还想用单击鼠标左键来完成其他我定义的操作,不想全部屏蔽,如何实现呢?

[此贴子已经被作者于2006-6-25 16:01:50编辑过]

搜索更多相关主题的帖子: 中文字 鼠标 CEditView 单击 定义 
2006-06-25 15:33
myajax95
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:30
帖 子:2978
专家分:0
注 册:2006-3-5
收藏
得分:0 
很久不用CEditView了,不过用PreTranslastMessage截LButtonDown肯定不行,因为这样截的消息太早。目前不清楚MFC这些控件中有什么只对英文字有效而对中文字无效的功能。
如果这个选中中文后变亮的功能是CEditView自带的又无法通过改变它的style解决的话基本就没有什么好办法了,有两个土办法可以试试:
1。在PreTranslateMessage中处理LButtonDown,MouseMove,LButtonUp三个消息。如果LButtonDown的时候把鼠标位置用一个参数(假设叫CPoint MovePosition)记下来,然后放这个消息去执行,MouseMove的时候查鼠标新移动的位置和以后位置的关系。如果这个动作不是去覆盖中文字就把新坐标放进MovePosition,并放消息通过,否则也把新坐标放进MovePosition,但截下消息,手动的把鼠标坐标设在要移动的位置。LButtonUp的时候清空MovePosition参数。
2。不把中文字作text输出,在OnDraw里面把中文字TextOut放在指定的位置上。不过即使行的话估计上下移动之类的计算也会很复杂。

http://myajax95./
2006-06-26 01:34
xiaoyanwang661
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2006-6-18
收藏
得分:0 

看来没指望了,仍谢谢版主
还有,我说的是 选中 文字,不是选 中文字,呵呵!

[此贴子已经被作者于2006-6-26 11:52:28编辑过]

2006-06-26 11:43
myajax95
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:30
帖 子:2978
专家分:0
注 册:2006-3-5
收藏
得分:0 
那你用CView的TextOut不就什么字都无法选中了吗?

http://myajax95./
2006-06-26 12:42
xiaoyanwang661
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2006-6-18
收藏
得分:0 

但是这样,无论文字有多长,都只能显示在一行吧?
其实我是要完成这样一个功能:类似手工的文本编辑,比如在某个字或词上画一个叉,这个字就被删除了,后面的文字跟着串上来,类似这样的编辑功能,也就是说,既要显示文本,又要显示画的符号,而且还要保证文本可编辑。以前发的帖子都是围绕这个问的,但是始终没有解决,郁闷啊……谁能帮帮我……

[此贴子已经被作者于2006-6-27 10:57:41编辑过]

2006-06-27 10:50
快速回复:基于 CEditView,如何实现使鼠标不能选中文字?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.037298 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved