Button zur Laufzeit <-- auf Events reagieren?!
-
hallo,
ich erstelle einen Button zur Laufzeit:
CButton Explore_Back; Explore_Back.Create("Test",NULL,CRect(260, 120, 330, 150),this,11);der Button hat halt die ID 11.
mit welcher Methode kann ich nun überprüfen ob dieser Button gedrückt wurde?!danke euch!
babel
-
Brauchst ja nur dein View um die Methode
CMyView::OnClickedButton()
zur erweitern und die Massage-Map um den Eintrag
ON_BN_CLICKED(IDC_BUTTON1,OnClickedButton)
zu ergänzen. Dann solltest Du in der OnClickedButton reagieren können.
-
Oder wenn Du *eine* Methode für alle (dynamisch erstellten) Buttons haben willst, kannst Du
ON_CONTROL_RANGEverwenden
-
hey danke für die schnellen antworten!
hab mich doof ausgedrückt :-| ich habe eine Dialog-Anwendung
und somit keine View-Klasse der ich die Methode OnClickedButton hinzufügen kann!Wie handle ich das gleiche denn in einem Dialog-basierten Projekt?
danke!
-
babelduo schrieb:
Wie handle ich das gleiche denn in einem Dialog-basierten Projekt?
Da sollte es auch einen Bereich geben mit:
BEGIN_MESSAGE_MAP(CMFCApp1Dlg, CDialog) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() //}}AFX_MSG_MAP ON_BN_CLICKED(IDOK, OnBnClickedOk) END_MESSAGE_MAP()
-
hmm ja danke aber ich verstehe das leider nicht richtig :-|
ich muss doch einen Event-Handler hinzufügen um auf die Messages
von diesem Button zu reagieren?allein:
BEGIN_MESSAGE_MAP(CMFCApp1Dlg, CDialog) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() //}}AFX_MSG_MAP ON_BN_CLICKED(IDOK, OnBnClickedOk) END_MESSAGE_MAP()bringt doch nichts oder? sorry aber ich hab sowas noch net gemacht
und kann mir grad net vorstellen wir das realisiert wird!danke euch schonmal

-
jetzt macht noch in die header :
afx_msg void OnBnClicktOk();und in die cpp:
void MyDlg::OnBnClickedOk(){ BUTTON WURDE GEDRÜCKT }weis aber nich ob die funktion noch übergabe parameter hat
-
Wenn Du nur einen Button hast, musst Du in der MAP.
ON_BN_CLICKED(ID_des_Buttons, OnMyButtonFunc)eintragen.
Der Prototyp der Methode kann man in der Hilfe zu ON_BN_CLICKED nachlesen:afx_msg void OnMyButtonFunc();Wenn Du mehrere Buttons mit einer Methode abhandeln willst, kannst Du
ON_CONTROL_RANGE(BN_CLICKED, start_id, end_id, OnMyButtonsFunc)verwenden.
Der Prototyp der Methode sieht dann wie folgt aus:afx_msg void OnMyButtonsFunc(UINT id);
-
danke euch

klappt prima!!