Geklickter Button bestimmen??
-
Hallo,
ich habe in meinem Programm 20 Button´s die von 1 - 20 durchnummeriert sind. Die Button´s eigentlich alle die selbe Funktion haben bis auf das, dass sie eine Funktion mit mit Ihrer Nummer aufrufen. Ist es irgendwie möglich, dass ich alle Button´s die selbe Funktion aufrufen lasse, dann bestimme welcher Button es war, und dann die Funktion mit dem Wert für den Button aufrufe.Vom Prinzip her, habe ich mir folgendes gedacht:
void Test::OnButton()
{
// TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung
// hier einfügen//Bestimmen welcher Button betätigt wurde, aber wie??
// GetButtonBeschriftung oder so
Funktion(Beschriftung);}
Wie gesagt, ich weis nicht wie ich bestimmen soll welcher Buttton betätigt wird. Ich könnte natürlich auch 20 Funktionen schreiben, jeweils 1 für jeden Button, aber das will ich mir ersparen.
Danke
Walter
-
du kannst über die Pretranslatemessage abfangen, ob ein Button gedrückt wird und mit
char buff[128];
::GetWindowText( pMsg->hwnd, buff, 128 );
bekommst du schließlich die Beschriftung von deinem Button raus.
Probier es einfach mal aus. Ich will hoffen, es funktioniert so.
-
Noch eine Möglichkeit (jetzt habe ich es schon geschrieben, da wird es auch gepostet,
auch wenn da schon eine Lösung steht):
- im Header brauchst duafx_msg void OnButton();- in der cpp verknüpfst du die eine Funktion mit allen Buttons:
ON_BN_CLICKED(IDC_BUTTON1, OnButton) ON_BN_CLICKED(IDC_BUTTON2, OnButton) ON_BN_CLICKED(IDC_BUTTON3, OnButton)usw.- und dann noch die Funktion selbst:
void CTestDlg::OnButton() { CWnd* w = GetFocus(); CString cTxt; w->GetWindowText(cTxt); AfxMessageBox(cTxt); }
-
Danke!
Habe mich für die zweite Variante entschieden.Ade
Walter