2008-09-18 2 views
1

Я программирую приложение в MFC (не спрашиваю), и у меня есть поле CEdit, которое содержит номер. Когда это число будет отредактировано, я хотел бы принять решение об изменении, а затем заменить карету, где она была до того, как я поступил на изменение - если пользователь был перед «.». в «35.40», я бы хотел, чтобы он все еще находился перед точкой, если они меняют ее на «345.40». В настоящее время я просматриваю сообщение CHANGE, но это может быть переключено на что-то еще (UPDATE?). Как я могу это сделать?Как зарезервировать позицию каретки в элементе управления CEdit?

ответ

1

Используйте функцию GetSel() перед изменением, чтобы сохранить местоположение курсора, а затем используйте SelSel(), чтобы установить его обратно. Вы можете использовать эти функции, чтобы получить/установить местоположение каретки, а не просто получить/установить выбранный пользователем.

0

Не могли бы вы объяснить причину, по которой вы хотели бы изменить поведение поля CEdit? Как пользователь, у меня возникла бы проблема с изменением каретки каждый раз, когда я ввожу какого-либо персонажа. Или это то, что вы хотели бы предотвратить, если вы измените это значение программно?

+0

Как пользователь, я бы ожидал, что карет останется на том же месте. Если вы измените значение CEdit на .SetWindowTextA(), например, каретка будет перемещена в начало поля. Это способ предотвратить это. – jamuraa 2008-09-18 14:48:02

Смежные вопросы