Solved:
void gui::CaixaTexto::desenhar()
{
//desenhar texto
if (this->senha == false)
{
this->caixaTexto.SetText(this->texto);
}
else
{
this->caixaTexto.SetText( gui::Util::strpad(this->texto, '*', this->texto.size()) );
}
sf::String caixaTextoTemp(this->texto);
caixaTextoTemp.SetStyle( this->caixaTexto.GetStyle() );
caixaTextoTemp.SetSize( this->caixaTexto.GetSize() );
caixaTextoTemp.SetPosition( this->caixaTexto.GetPosition().x, this->caixaTexto.GetPosition().y );
caixaTextoTemp.SetText( this->caixaTexto.GetText() );
string tempStr = this->texto;
if (this->senha == true)
{
tempStr = gui::Util::strpad(tempStr, '*', tempStr.size());
}
while ( caixaTextoTemp.GetRect().GetWidth() > this->largura )
{
tempStr.erase(0,1);
caixaTextoTemp.SetText(tempStr);
}
gui::Core::app->Draw(caixaTextoTemp);
//desenhar marcador
if ( this->piscarMarcador == true && gui::Core::foco == this )
{
sf::Shape sh=sf::Shape::Line(caixaTextoTemp.GetPosition().x + caixaTextoTemp.GetRect().GetWidth() + 2, caixaTextoTemp.GetPosition().y + 3, caixaTextoTemp.GetPosition().x + caixaTextoTemp.GetRect().GetWidth() + 2, caixaTextoTemp.GetPosition().y + this->altura, 2, sf::Color(255, 255, 255));
gui::Core::app->Draw(sh);
}
}