also wie wir einen zeiger auf eine member-fnkt. machen weiß ich. aber ich habe immernoch ein problem:
ich will ein klasse schreiben, die maus steuerung übernimmt.
dazu will ich einen event-handler installieren. dazu muß ich die adresse offset und segment irgendeinem register übergeben und einen interrupt ausführen. segment und offstet stelle ich mit den funktionen: FP_SEG und FP_OFF, denen ich die adresse der funktion (des event handlers)übergebe, fest.
diese beiden funktionen weigern sich allerdings einen zeiger auf eine memberfunktion zu übernehmen. (die wollen nur non-member zeiger) was tu ich nu?
könnte es vielleicht nützlich sein den eventhandler virtuell zu deklarieren?
deklartion des eventhandlers ist private:
void far eventhandler( void );
hier ist noch ein quellcode auszug:
// Methoden der Klasse Maus
Maus::Maus() // der Konstruktor
{
if ( !init() ) // maus initialisieren
{
cprintf( „fehler beim intitialisieren“ );
getch();
}
//Eventhandler installieren // hier kommt’s problem:
void (far Maus::*pEh)(void) = &Maus::eventhandler;
in_register.x.ax = 0x000c; // funktion um eventhandler bekanntzugeben
in_register.x.cx = 0x1f; // steuerwort
in_register.x.dx = FP_OFF( pEh ); //offset feststellen und übergeben
sregister.es = FP_SEG( pEh ); //segment
int86x(0x33,&in_register,&out_register,&sregister); //den interrupt ausführen.
// die maus ist nach diesem konstruktor nicht an (glaube ich);
visible = FALSE;
};
ich danke euch allen ergebenst. vangelis tsoumenis, angehender informationstechnischer assistent.
ps. ich habe jetzt ferien und bin zwei wochen weg. hole also keine mails ab.
pps. 'tschuldigung wenn das ganze 'n bischen chaotisch 'rüberkommt.