很久不用CEditView了,不过用PreTranslastMessage截LButtonDown肯定不行,因为这样截的消息太早。目前不清楚MFC这些控件中有什么只对英文字有效而对中文字无效的功能。
如果这个选中中文后变亮的功能是CEditView自带的又无法通过改变它的style解决的话基本就没有什么好办法了,有两个土办法可以试试:
1。在PreTranslateMessage中处理LButtonDown,MouseMove,LButtonUp三个消息。如果LButtonDown的时候把鼠标位置用一个参数(假设叫CPoint MovePosition)记下来,然后放这个消息去执行,MouseMove的时候查鼠标新移动的位置和以后位置的关系。如果这个动作不是去覆盖中文字就把新坐标放进MovePosition,并放消息通过,否则也把新坐标放进MovePosition,但截下消息,手动的把鼠标坐标设在要移动的位置。LButtonUp的时候清空MovePosition参数。
2。不把中文字作text输出,在OnDraw里面把中文字TextOut放在指定的位置上。不过即使行的话估计上下移动之类的计算也会很复杂。