[MFC/Visual C++] één event handler voor meerdere events

Pagina: 1
Acties:

  • elgringo
  • Registratie: Januari 2001
  • Laatst online: 16-09 20:30
Ik heb een aantal objecten in een dialog staan. Als op één van deze dingen gekliktt wordt (totaal een stuk of 10), moet er één event handler aangeroepen worden. Ik noem deze het OnClick() event. Als ik deze aanmaak is het goed. Koppel ik deze aan een object gaat het goed, maar aan een tweede object kan ik deze niet koppelen.

Ik gebruik visual c++ .net en voeg het event toe door rechts op het object te klikken en dan add event, of door bij de properties de event aan te maken.

Beide manieren krijg ik bij de tweede een fout, Overloaded function 'OnClick' already exists. Hoe kan dit?

if broken it is, fix it you should


  • Baron
  • Registratie: Juli 2000
  • Laatst online: 02-11 14:17
Waarom maak je niet voor elk object in de dialoog een appart OnClick() event. En roep je vanuit elke event een GlobalOnClick aan?

  • elgringo
  • Registratie: Januari 2001
  • Laatst online: 16-09 20:30
Baron schreef op dinsdag 06 februari 2007 @ 10:27:
Waarom maak je niet voor elk object in de dialoog een appart OnClick() event. En roep je vanuit elke event een GlobalOnClick aan?
Dat kan, maar das een hele goedkope en niet zo'n nette oplossing, die wil ik liever vermijden.

if broken it is, fix it you should


  • MTWZZ
  • Registratie: Mei 2000
  • Laatst online: 13-08-2021

MTWZZ

One life, live it!

Ik ben geen VC++ expert maar je kunt toch gewoon dezelfde event handler zonder meer aan meerdere componenten (ik neem aan dat je met WinForms bezig bent) koppelen?

Via Google (zoeken op VC++ single handler for multiple events) kom ik op een MSDN pagina uit waar een linkje staat naar How to: Connect Multiple Events to a Single Event Handler in Windows Forms, misschien dat je er wat aan hebt.
Nvm, ging om verschillen tussen MFC en C# :X

Kun je niet ipv via het properties window je event te koppelen dit in code doen? Het lijkt erop dat de IDE via die weg een nieuwe handler in code gaat maken en niet zozeer een bestaande koppelt.

[ Voor 17% gewijzigd door MTWZZ op 06-02-2007 11:17 ]

Nu met Land Rover Series 3 en Defender 90


  • elgringo
  • Registratie: Januari 2001
  • Laatst online: 16-09 20:30
MTWZZ schreef op dinsdag 06 februari 2007 @ 11:04:
Ik ben geen VC++ expert maar je kunt toch gewoon dezelfde event handler zonder meer aan meerdere componenten (ik neem aan dat je met WinForms bezig bent) koppelen?

Via Google (zoeken op VC++ single handler for multiple events) kom ik op een MSDN pagina uit waar een linkje staat naar How to: Connect Multiple Events to a Single Event Handler in Windows Forms, misschien dat je er wat aan hebt.
Nvm, ging om verschillen tussen MFC en C# :X

Kun je niet ipv via het properties window je event te koppelen dit in code doen? Het lijkt erop dat de IDE via die weg een nieuwe handler in code gaat maken en niet zozeer een bestaande koppelt.
Nee ook dat gaat fou in de properties page. Hoe ik hem alleen de verwijzing geef weet ik niet

if broken it is, fix it you should


  • MTWZZ
  • Registratie: Mei 2000
  • Laatst online: 13-08-2021

MTWZZ

One life, live it!

C# heeft de volgende constructie:
C#:
1
button.Click += new EventHandler(<referentie naar event handler>);


Geen flauw idee of dat bij MFC ook werkt.

Nu met Land Rover Series 3 en Defender 90


  • The End
  • Registratie: Maart 2000
  • Laatst online: 07:19

The End

!Beginning

Je kan toch gewoon in de messagemap de eventhandlers toevoegen?

code:
1
2
3
4
5
BEGIN_MESSAGE_MAP(CMyDialog, CDialog)
ON_BN_CLICKED(IDBUTTON1, OnClick)
ON_BN_CLICKED(IDBUTTON2, OnClick)
ON_BN_CLICKED(IDBUTTON3, OnClick)
END_MESSAGE_MAP()


Als je nu op de buttons met ID IDBUTTON1,IDBUTTON2 of IDBUTTON3 clickt, dan wordt de functie OnClick() uitgevoerd.

  • elgringo
  • Registratie: Januari 2001
  • Laatst online: 16-09 20:30
The End schreef op dinsdag 06 februari 2007 @ 15:29:
Je kan toch gewoon in de messagemap de eventhandlers toevoegen?

code:
1
2
3
4
5
BEGIN_MESSAGE_MAP(CMyDialog, CDialog)
ON_BN_CLICKED(IDBUTTON1, OnClick)
ON_BN_CLICKED(IDBUTTON2, OnClick)
ON_BN_CLICKED(IDBUTTON3, OnClick)
END_MESSAGE_MAP()


Als je nu op de buttons met ID IDBUTTON1,IDBUTTON2 of IDBUTTON3 clickt, dan wordt de functie OnClick() uitgevoerd.
Kan ik die ook vanuit de grafische ongeving doen, of alleen op deze manier. Deze had ik idd gevonden maar is misschien een makkelijker manier voor

if broken it is, fix it you should

Pagina: 1