Methode OnClick bei CButton (eVC4) fehlt! Wie dynamischen Buttons Aktion zuweisen???
-
Hallo.
Ich bastel gerade an einer Applikation im embeddedVisualC++4.
Diese baut ein formular auf und generiert darauf Buttons und EditFelder.
Wie kann ich den Buttons jetzt eine funktion zuweisen.
Pointer auf die buttons habe ich.
Allerdings scheint es keine OnClick Methode zu geben.Weiß hier vielleicht jemand bescheid wie ich da jetzt weiter komme?
Danke schon mal im voraus.
greetz
sorka
-
Du musst erstmal eine Funktion basteln
void CTestDlg::OnMessage() { AfxMessageBox("Yep!"); }
Danach eine WM_COMMAND Nachricht erstellen
WM_COMMAND(OnMessage, Hier die ID des Buttons)
Hoffe konnte dir helfen...
Gruß
:: NoName ::
-
Ich glaube schon.
Das klingt jetzt vielleicht bisschen blöd,...
aber wo genau muss ich denn die "WM_COMMAND(...)"-Zeile eintragen?
In die Class oder die Funktion oder in die Funktion in der ich den Button generiere?danke noch mal
sorka
-
Hey
Also ich denke das du dieses suchst!
[cpp]
BEGIN_MESSAGE_MAP(CBlaBla, CDialog)
//{{AFX_MSG_MAP(CBlaBla)
ON_BN_CLICKED(IDC_NEU, OnNeu)
ON_BN_CLICKED(ID_NEXT, OnNext)
ON_BN_CLICKED(IDC_EXIT, OnExit)
ON_WM_PAINT()
ON_WM_LBUTTONDOWN()
ON_WM_MOUSEMOVE()ON_WM_COMMAND(IDC_DEINE,OnMessage) // deine
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
[/cpp]finden solltest du dies im oberen drittel deiner .cpp
(unter evc3.0 ist es dort)Aber sicherer ist es doch wenn du dies über deinen KlassenAssi machst!
finde ich zumindestens!Sven
-
Besser ist es, das außerhalb des Assistentenbereichs zu machen, der löscht das sonst gerne.
[cpp]BEGIN_MESSAGE_MAP(CBlaBla, CDialog)
//{{AFX_MSG_MAP(CBlaBla)
ON_BN_CLICKED(IDC_NEU, OnNeu)
ON_BN_CLICKED(ID_NEXT, OnNext)
ON_BN_CLICKED(IDC_EXIT, OnExit)
ON_WM_PAINT()
ON_WM_LBUTTONDOWN()
ON_WM_MOUSEMOVE()//}}AFX_MSG_MAP
ON_WM_COMMAND(IDC_DEINE,OnMessage) // deine
END_MESSAGE_MAP()[/cpp]
-
Hier nochmal..
Button erstellen
CButton button; button.Create( "", WS_VISIBLE, CRect (...) , this, 101 /* ID */ ) ;
Eine Message erstellen
void CTestDlg::ButtonClick() { AfxMessageBox("Yeah"); }
Und eine Command Nachricht in der MessageMap erstellen
BEGIN_MESSAGE_MAP(CTestDlg, CDialog) //{{AFX_MSG_MAP(CTestDlg) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_COMMAND ( 101 /* ID des Buttons */, ButtonClick /* Message */) //}}AFX_MSG_MAP END_MESSAGE_MAP()
Gruß
:: NoName ::
-
Danke leute
Hatte mich durch zufall auch schon auf die Message Map eingeschossen.
Allerdings hatte ich es mit BN_CLICK(ID,Funktion) probiert.
Und oh wunder das hatte sogar den erwünschten effekt.
Aber geändert auf eure Variante hab ich es doch und es funktioniert
jetzt auch genauso wie ich es haben wollte.Danke an alle für eure tolle hilfe
ciao
sorka