Как изменить положение, в котором следующий символ будет размещен в элементе управления Edit из MFC? - PullRequest
0 голосов
/ 04 декабря 2011

У меня есть фрагмент кода, который стирает последний символ строки и затем устанавливает текст в элементе управления Edit на эту новую строку. Проблема заключается в том, что после этого изменяется позиция персонажа, который будет набран в следующий раз. Пример:

Редактировать блок управления: [12345 | ] (Косая черта - это место, где следующий символ будет напечатан)

После выполнения указанного кода

Редактировать блок управления: [| 12345] (Позиция теперь перемещена вперед, до 1)

Как бы я снова переместил позицию в конец строки? Мой код:

    CString str1 = ""; //Temporary CString
    eb1->GetWindowText(str1); //Store text from Edit Control to the CString
    string strCheck1 =  str1.GetString(); //Place the CString into a regular string
    int s1 = strCheck1.length() -1; //Get index of last character and new size
    bool check1 = true; //Boolean variable for the checking
    //Get if character is valid
    if((strCheck1[s1] <= '0' || strCheck1[s1] >='9') && strCheck1[s1] != '.') {check1 =       false;}
    //If is invalid I erase last character and put it back intact into the Edit Control
    if(check1 == false) {strCheck1.erase(s1,1); eb1->SetWindowTextA(strCheck1.c_str());}

Ответы [ 2 ]

1 голос
/ 04 декабря 2011

Вы пробовали SetSel () операцию редактирования управления?

// get the initial text length
int nLength = edit.GetWindowTextLength();
// put the selection at the end of text
edit.SetSel(nLength, nLength);
0 голосов
/ 04 декабря 2011

Вы можете использовать CEdit::SetSel() (я предполагаю, что вы используете CEdit). Просто позвольте началу и концу выделения быть концом строки, и вы сможете переместить курсор туда. Подробности можно найти на http://msdn.microsoft.com/en-us/library/w9kftda4(v=vs.80).aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...