获取Edit控件中光标位置,奇怪有关问题,请指点

获取Edit控件中光标位置,奇怪问题,请指点
我采用以下函数获得Edit控件中光标位置,
	POINT pos = GetCaretPos();//获取光标相对于控件的位置
    int x   = ((CEdit*)GetDlgItem(IDC_EDIT_1))->CharFromPos(pos);//获取光标位置

结果发现奇怪问题,当用回退键时,发现在光标在最后一个字符的前或后,x的值都是一样的。如图所示。两个图中光标位置在最后一个字符的前与后,但是返回值都是5
获取Edit控件中光标位置,奇怪有关问题,请指点
获取Edit控件中光标位置,奇怪有关问题,请指点

我是在OnUpdateEDIT1() 函数中判断的。当按下回退键时,该函数自动被调用。请问是什么问题?
------解决方案--------------------
The EN_UPDATE notification message is sent when an edit control is about to redraw itself. This notification message is sent after the control has formatted the text, but before it displays the text. This makes it possible to resize the edit control window, if necessary.
 EN_UPDATE: 在编辑框准备显示改变了的正文时发送该消息 
你的左右键并不会触发此消息 因此保存的还是你上一个状态

------解决方案--------------------
EN_UPDATE Notification

Sent when an edit control is about to redraw itself. This notification message is sent after the control has formatted the text, but before it displays the text. 

这个消息是在文本显示之前发送的,而那时光标的位置还没有重新计算,所以你获得的位置,是上一个位置

使用EN_CHANGE可以解决你这个问题