我想继承自CEdit一个类,处理一些按键,
通常的例子会用GetSel()来判断我选中了哪些文字,
比如,"12345",我用鼠标在1、2之间点一下,一直拖动到4、5之间
那这个oldpos = LOWORD(GetSel())的值就是1
oldpos = HIWORD(GetSel())就是4,这个是对的,
但是,我如果先点4、5之间,然后拖动到1、2之间,那真正的光标应该在1、2之间
但是oldpos = LOWORD(GetSel())返回的值仍然是1
oldpos = HIWORD(GetSel())是4.
所以,用这个,根本区别不出来真正的光标在哪儿 HCURSOR cur;
GetCursor()函数貌似不是干这个的

解决方案 »

  1.   

    CEdit继承自CWnd。如果想准确获取光标位置,可以使用其父类Cwnd的函数。CWnd::GetCaretPosstatic CPoint PASCAL GetCaretPos( );返回值:返回一个CPoint对象,包含了插字符位置的坐标。说明:
    这个函数获得插字符当前位置的客户区坐标,并且通过CPoint返回。
    插字符的位置是用CWnd窗口的客户区坐标给出的。请参阅:::GetCaretPos 
    CWnd::SetCaretPosstatic void PASCAL SetCaretPos( POINT point );参数: point 指定了插字符的新的x和y坐标(客户坐标)。  说明:
    这个函数设置插字符的位置。
    SetCaretPos成员函数仅当插字符属于当前任务的一个窗口时才移动它。不论插字符是否隐藏,SetCaretPos都移动插字符的位置。
    插字符是一种共享资源。如果窗口不拥有插字符,它就不应移动插字符。请参阅:CWnd::GetCaretPos, ::SetCaretPos