Powyższy kod powoduje jedynie “doklejenie” znaku X na końcu tekstu i przeskoczenie kursora na początek pola. Mi chodzi o to, aby znak był wstawiany w miejscu, w którym miga kursor.
Nie możesz poeksperymentować? Programowanie to nie sztuka zadawania pytań na forum.
int iStart = richTextBox1->SelectionStart;
int iLength = richTextBox1->SelectionLength;
richTextBox1->Text =
richTextBox1->Text->Substring( 0, iStart) +
L"X" + // wstawiany tekst
richTextBox1->Text->Substring( iStart + iLength );
richTextBox1->SelectionStart = iStart + 1; // 1 = dlugosc wstawianego tekstu
Tak swoją drogą to nie rozumiem dlaczego używasz zarządzanego C++. Jest IMO tylko jeden uzasadniony przypadek, kiedy powinno się pisać w zarządzanym C++ a Ty najprawdopodobniej nie piszesz żadnego wrappera COM.
Wiem, z reguły eksperymentuję, ale (co pewnie widać, po zadawanych pytaniach) jestem początkującym programistą amatorem i nie zawsze ekperymenty przynoszą oczekiwany rezultat, tak było w tym przypadku.
Nie szkodzi. VS i znajomość angielskiego są Twoimi przyjaciółmi. SelectionStart jak sama nazwa wskazuje jest miejscem początku zaznaczenia w kontrolce, SelectionLength długością zaznaczenia. Jeśli nic nie jest zaznaczone to długość wynosi 0 a start to miejsce, gdzie miga kursor. Wystarczy sprawdzić, czy SelectionStart jest tylko do odczytu, czy do odczytu i zapisu (VS takie rzeczy podpowiada). Jeśli można zmienić wartość to znaczy, że można przenieść kursor. Tak można będąc nawet bardzo początkującym dojść do wielu ciekawych właściwości kontrolki RTE.