wie kann man OnChangeEdit() umgehen

Reticent

Erfahrenes Mitglied
ist klar, dass bei editieren meines Edit-Feldes ein OnChangeEdit() kommt.
Genau dort tu ich den Text ändern und möchte es wieder in Edit-Feld schreiben. Ich mach es mit SetWindowText(NEWtext) und da kommt schon wieder OnChangeEdit() aufgerufen. Natürlich führt es zum Hängenbleiben...

wie kann ich es machen so, dass ich froh bin und Rechner auch ganz ist?
 
Eine Möglichkeit wäre folgende:

Code:
class CMeinDialog : public CDialog (oder so)
{
  ...

  booL b_bIgnoreChange; // flag, ob edit ignoriert werden soll
};

Konstruktor (habe Signatur nicht im Kopf)
CMeinDialog::CMeinDialog ()  : CDialog (oder so)
{
  ...
  m_bIgnoreChange = false;
}

void CMeinDialog::OnChangeEdit( bla bla )
{
  //dies am Anfang!
  if ( m_bIgnoreChange ) return; //ignorieren!

  //hier was tun
   ....
}

void CMeinDialog::IrgendeineRoutine()
{
  ...
  //Edit ändern ohne Changeedit
  m_bIgnoreChange = true;
  m_ctlMeinEdit.SetWindowText( "Huhu" );
  m_bIgnoreChange = false;
}

Ist zwar nicht so besonders elegant, aber funktioniert.
 
Zurück