EnumChildWindows-Problem?? (Borland spezifisch?)
-
hi zusammen,
das ist die situration, ich habe den code hier:void __fastcall TForm1::Button1Click(TObject *Sender) { EnumChildWindows(FindWindow(0,"Unbenannt - Editor"),MyEnumChildProc,1234); } //--------------------------------------------------------------------------- BOOL CALLBACK MyEnumChildProc(HWND hWnd, LPARAM lParam) { // Diese Funktion wird für jedes ChildWindow einmal aufgerufen // Ist die Rückgabe dieser Funktion FALSE, wird damit sofort aufgehört return(TRUE); }
und MyEnumChildProc ist im header deklariert (logisch :p ). aber wenn ich das ganze starte bekomme ich folgende fehler:
[C++ Fehler] Unit1.cpp(20): E2034 Konvertierung von 'int (__stdcall *)(void *,long)' nach 'int (__stdcall *)()' nicht möglich
[C++ Fehler] Unit1.cpp(20): E2342 Keine Übereinstimmung des Typs beim Parameter 'lpEnumFunc' ('int (__stdcall *)()' erwartet, 'int (__stdcall *)(void *,long)' erhalten)ich hab mich ein bisschen hier schlau gemacht und gehört, das es vielleicht ovn einem veralteten microsoft sdk header kommen könnte (ich habe win2k servicpack 3, und bcb 6 enterprise)? was meint ihr könnt ihr mir weiterhelfen? wenn ihr den header habt und er nötig ist, könnt ihr ihn mir mitte schicken (morpheus260@uni.de)? ich wäre euch füpr eure hilfe sehr dankbra
grüße
Rubyps: habe das ins bcb forum gepostet, weil ich denke das es vielleicht compilerspezifisch ist
-
Original erstellt von Ruby:
MyEnumChildProc ist im header deklariertWie sieht die Deklaration denn genau aus? Callback-Funktionen dürfen m.E. nicht als Klassenmethoden deklariert werden.
-
Sehr schlau gemacht scheinst du dich nicht zu haben:
EnumChildWindows(FindWindow(0,"Unbenannt - Editor"), (WNDENUMPROC)MyEnumChildProc, 1234);
Oder einfach den Cast lassen und stattdessen
#ifndef STRICT #define STRICT #endif
[EDIT]
Wie du siehst, hättest du dir diesen Thread sparen können!
[/EDIT][ Dieser Beitrag wurde am 14.04.2003 um 23:32 Uhr von WebFritzi editiert. ]
-
Original erstellt von Jansen:
Callback-Funktionen dürfen m.E. nicht als Klassenmethoden deklariert werden.Wo siehst du dort sowas?
-
Original erstellt von WebFritzi:
**Sehr schlau gemacht scheinst du dich nicht zu haben:EnumChildWindows(FindWindow(0,"Unbenannt - Editor"), (WNDENUMPROC)MyEnumChildProc, 1234);
Oder einfach den Cast lassen und stattdessen
#ifndef STRICT #define STRICT #endif
[EDIT]
Wie du siehst, hättest du dir diesen Thread sparen können!
[/EDIT][ Dieser Beitrag wurde am 14.04.2003 um 23:32 Uhr von [qb]WebFritzi** editiert. ][/QB]
-
hab alles was ich weiss aus dem forum hier
koennt ihr mir nicht bitte an einem code beispiel zeigen wie es funktioniert? danke schonmal fuer eure hilfe.
gruesse aus frankreich
Ruby
-
Hä? Du musst halt alles so lassen wie es ist - nur entweder ein Cast nach WNDENUMPROC oder ein #define STRICT muss dazu. Sonst nix!
-
danke webfritzi, jetzt kann ich es kaum noch erwarten wieder nach deutschland zu kommen und das auszuprobieren
gruesse qus dem verregneten frankreich
Rubyps: die tastaturen hier sind schlimm