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
    Ruby

    ps: habe das ins bcb forum gepostet, weil ich denke das es vielleicht compilerspezifisch ist



  • Original erstellt von Ruby:
    MyEnumChildProc ist im header deklariert

    Wie 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
    Ruby

    ps: die tastaturen hier sind schlimm 😮


Anmelden zum Antworten