SFML community forums

Help => Graphics => Topic started by: blueeyedlion on August 04, 2011, 09:08:14 pm

Title: How do I display a string while typing it?
Post by: blueeyedlion on August 04, 2011, 09:08:14 pm
I realize that this probably involves myString.GetText () and Event.Type.TextEvent, but I am a bit fuzzy on the details.  Could someone help me out?
Title: How do I display a string while typing it?
Post by: Haikarainen on August 04, 2011, 09:14:41 pm
Just have a:
Code: [Select]
std::string buffer;

And on events:
Code: [Select]
if(Event.Type == sf::Event::TextEntered){
std::string tmp;
tmp+= static_cast<char>(Event.Text.Unicode);
buffer.append(tmp);
}


When drawing it, something like:
sf::Text a;
a.SetString(buffer);
sf::RenderWindow::Draw(a);


You might wanna tweak it to handle Enter/return, backspace etc differently.

Event.Key.Code's for :
Backspace = 8
Enter/return = 13


Edit: More complete example wich supports deleting strings and event on return:

Code: [Select]
if(Event.Type == sf::Event::TextEntered){
switch(Event.Key.Code){
case 8:
// Remove last character if pressed 8(backspace)
if(buffer.size()> 0){
buffer.erase(buffer.begin()+buffer.size()-1);
}
break;
case 13:
// When press enter, do stuff:
DoStuff();
break;
default:
// Not backspace or enter? Append character to bufferstring!
std::string tmp;
tmp+= static_cast<char>(Event.Text.Unicode);
buffer.append(tmp);
break;
}
}
Title: How do I display a string while typing it?
Post by: blueeyedlion on August 04, 2011, 09:30:56 pm
Thank you.