/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
behandling af en event fra en klasses barn
Fra : Peder Nyborg Madsen


Dato : 27-04-02 12:46

Hej

jeg sidder og programmere i C++Builder 4.0 (Windows)

Hvor jeg har følgende

class TEks
{
private:
TApdComPort *ApdComPort;
public:
};

TApdComPort har en event der har en event der hedder TriggerAvail(TObject
*CP, WORD Count)
Jeg har prøvet med TNotifyEvent(System::TObject* Sender), men den virker
ikke...

Men hvis jeg bruger TApdComPort, under TForm1, aktiveres eventen godt nok
void __fastcall TForm1::ApdComPortTriggerAvail(TObject *CP, WORD Count){}

Mit spørgsmål er nu hvordan får jeg fat i denne event i gennem klassen TEks,
så jeg selv kan bestemme hvad der skal ske når metoden afvikles.

Håber at der en der kan hjælpe mig

På forhånd tak
----------------------------------------------------------------------------
------------
Peder Nyborg Madsen
M.Sc. Student,
Computer Systems Engineering

Contact information
Address The Maersk Mc-Kinney Moller Institute for Production Technology
University of Southern Denmark
Campusvej 55
DK-5230 Odense M
DENMARK




 
 
Mogens Hansen (27-04-2002)
Kommentar
Fra : Mogens Hansen


Dato : 27-04-02 13:42


"Peder Nyborg Madsen" <nybi@mip.sdu.dk> wrote in message
news:aae34l$r12$1@news.net.uni-c.dk...

> Mit spørgsmål er nu hvordan får jeg fat i denne event i gennem klassen
TEks,
> så jeg selv kan bestemme hvad der skal ske når metoden afvikles.
>

Du skal formodentlig have en member-funktion i TEks, som kan blive kaldt.
Den skal have den rigtige prototype, så den matcher TApdComPort's
forventninger.:

class TEks
{
private:
TApdComPort *ApdComPort;
public:
TEks(void);
void __fastcall ApdComPortTriggerAvail(TObject *CP, WORD Count)
};

Et eller sted (f.eks. i constructoren) skal TApdComPort objektets event
bindes til TEks's callback funktion

TEks::TEks(void) :
ApdComPort(......)
{
ApdComPort->TriggerAvail = ApdComPortTriggerAvail;
}

eller hvis det er i en anden funktion:

void Foo(TEks* Eks, TApdComPort *ApdComPort)
{
ApdComPort->TriggerAvail = Eks->ApdComPortTriggerAvail
}


OBS: Ovenstående er hverken compileret eller testet (jeg kender ikke
TApdComPort klassen), men det er noget i den retning.

Vær opmærksom på at "ApdComPort->TriggerAvail" er af typen "__closure", som
er en lidt speciel størrelse og som er en Borland sprog udvidelse.

Venlig hilsen

Mogens Hansen



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408925
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste