Есть форма с едитами. Каретка ввода находится в одном из них. Функция GetCaretPos во всех едитах возврашает 1,1. Это то понятно.
Не понятно другое, как взять координаты каретки относительно родительского окна, в котором находятся эти едиты ?
Была другая идея: Взять координаты Едита, в котором находится каретка.
GetWindowRect возврашает странные координаты. Не понятно откуда они берутся.
Причем если посмотреть через Spy++, то все координаты нормальные. А у меня получается ерунда.
Здравствуйте, Kiril_Kuchereavyi, Вы писали:
K_K>Была другая идея: Взять координаты Едита, в котором находится каретка. K_K>GetWindowRect возврашает странные координаты. Не понятно откуда они берутся. K_K>Причем если посмотреть через Spy++, то все координаты нормальные. А у меня получается ерунда.
GetWindowRect() возвращает координаты относительно экрана, а не относительно непосредственного парента.
Здравствуйте, SchweinDeBurg, Вы писали:
SDB>Здравствуйте, Kiril_Kuchereavyi, Вы писали:
K_K>>Была другая идея: Взять координаты Едита, в котором находится каретка. K_K>>GetWindowRect возврашает странные координаты. Не понятно откуда они берутся. K_K>>Причем если посмотреть через Spy++, то все координаты нормальные. А у меня получается ерунда.
SDB>GetWindowRect() возвращает координаты относительно экрана, а не относительно непосредственного парента.
Совершенно верно замечено. Для взятия координат относительно парента есть функция GetClientRect.
а чтобы положение каретки относительно парента едита посчитать достаточно обычное сложение применить соответствующих координат.
Здравствуйте, Alexmoon, Вы писали:
SDB>>GetWindowRect() возвращает координаты относительно экрана, а не относительно непосредственного парента. A>Совершенно верно замечено. Для взятия координат относительно парента есть функция GetClientRect.
Для получения координат относительно парента используется комбинация GetWindowRect() + ScreenToClient(). А GetClientRect() позволяет узнать координаты клиентской области заданного окошка.
A>а чтобы положение каретки относительно парента едита посчитать достаточно обычное сложение применить соответствующих координат.