J'essaie de mettre en place une application MFC C++ dans Visual Studio 2019 qui modifie le texte de l'utilisateur au fur et à mesure qu'il tape.
La présentation actuelle est constituée de 2 boutons radio,
ID= rdbOn
(réglé sur Groupe = True
avec la variable Value int m_isOn
= 1
)
ID= rdbOff
, m_isOn
serait = 0
et 1 contrôle d'édition, ID= txtInputBox
, avec Valeur CString
variable m_inputString
Actuellement, pour les tests, je peux voir comment cela fonctionnerait pour un bouton sur le clic, cela prendrait quelque chose comme ce qui suit et juste SetDlgItemText
du résultat. Mais ce serait après qu'ils aient tapé, et non pendant qu'ils tapent.
void Onsomebtnclick()
{
//convert CString to String of m_inputString
//do some string manipulation
//convert back to CString
//SetDlgItemText(txtInputBox, result)
}
Mise à jour : a EN_CHANGE
travailler J'ai pu obtenir EN_CHANGE
en travaillant avec le drapeau suggéré par l'utilisateur @GoGoWorx. Cependant, j'ai maintenant un léger problème avec le curseur qui revient au début du contrôle d'édition. txtInput
.
Je lis qu'il est possible d'utiliser un CEdit::SetSel
mais je ne sais pas comment l'utiliser directement dans mon code. J'ai essayé Contrôle CEdit MFC, placer le curseur à la fin de la chaîne après SetWindowText
someDlg::someFunction()
{
//some logic stuff to get a result string
SetDlgItemText(txtInputBox, result);
//need it to set the cursor to the end
//I tried these, but it didn't recognize (expression must have class type?)
//txtInputBox.SetSel(0, -1);
//txtInputBox.SetSel(-1);
}