2013-07-22 16 views
0

У меня есть код, который выдает незаконные символы из введенной пользователем строки при вызове ON_EN_CHANGE. Поэтому необходимо отрегулировать позицию курсора, если они удалены.GetSel всегда возвращается 0,0

Для этого я пытаюсь использовать GetSel для получения позиции, а затем setsel, чтобы установить его, как показано ниже. f - другая переменная int.

m_ExportDirectory.GetWindowTextA(directory); 
//characters removed here 
if (rem > 0) 
{ 
    int j; 
    m_ExportDefaultName.GetSel(f, j); 
    m_ExportDirectory.SetWindowTextA(directory); 
    m_ExportDefaultName.SetSel(f-rem, f-rem); 
} 

Но getsel всегда устанавливает и е & J 0. Я попытался двигаться свой призыв над GetWindowText, но без изменений.

Я делаю что-то глупое? Если не все идеи?

Благодаря

+1

Вы вызываете 'GetSel' /' SetSel' на другом объекте, чем «SetWindowTextA»? Кажется, это не то, что вы хотели сделать. – IInspectable

+0

Хорошо .. Я не могу поверить, что я пропустил это. Тоннельное зрение Я думаю. Спасибо, я попробую – Hector

ответ

1

Я думаю, что проблема в том, что GetSel() возвращает начальную и конечную позицию выбор. Вы получаете (0,0), потому что текст не выбран пользователем.

+0

В соответствии с этим ответом http://stackoverflow.com/questions/92671/how-do-i-reserve-caret-position-in-cedit-control Он должен работать. Есть также несколько других источников в Интернете, говорящих то же самое. – Hector

+1

Я проверил это с простой программой и действительно, он работает. Трудно понять, почему он не работает в вашем случае на основе кода, который вы предоставили. Много раз это сводится к тому, что какой-то флаг не устанавливается в элементе управления. –

0

Решено Комментарий от Tims. Появилась проблема с усталостью и глупостью с моей стороны!

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