0

文字列の最後の文字を消去し、編集コントロールのテキストをその新しい文字列に設定するコードがあります。問題は、その後、次に入力する文字の位置が変わることです。例:

エディット コントロール ボックス: [ 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());}
4

2 に答える 2

1

編集コントロールのSetSel()操作を試しましたか?

// get the initial text length
int nLength = edit.GetWindowTextLength();
// put the selection at the end of text
edit.SetSel(nLength, nLength);
于 2011-12-04T17:38:35.790 に答える
0

を使用できますCEdit::SetSel()(を使用していると想定していますCEdit)。選択の開始と終了の両方を文字列の最後にすると、カーソルをそこに移動できるはずです。詳細については、http://msdn.microsoft.com/en-us/library/w9kftda4 (v=vs.80).aspx を参照してください。

于 2011-12-04T17:34:06.713 に答える