Frage zu Win XP und Fensterstyle



  • Geht das etwa so? (habe hier immoment keinen Compiler)

    if(GetProcAddress(LoadLibrary("irgendeine"), "IsThemeActive()") != NULL)
    {
         //...
    }
    

    Aber wie rufe ich dann die Funktion hinter dem if auf?
    Mache ich einen Protoypen oben hin und sage dann einfach IsThemeActive() oder wie? Und wie heisst die Lib die ich Prüfen muss??

    Gruss ~cp

    (ups hab mich mit dem link oben rechts vertan)



  • return value in funktionszeiger speichern.



  • unreg schrieb:

    return value in funktionszeiger speichern.

    Hi!
    Hiesse also:

    FARPROC *XPTheme;
    
    XPTheme = GetProcAddress(LoadLibrary("UxTheme.dll"), "IsThemeActive()")
    
    if(XPTheme != NULL) 
    { 
         //und weiter??
    }
    

    ??? aber wie rufe ich die funktion nun auf? und: ist die DLL "UxTheme.dll" korrekt?



  • Hier im Forum und in der MSDN gibt es genügend Beispiele. Wie wäre es, wenn du da mal nachgucken könntest ? 😡 😡



  • unreg schrieb:

    Hier im Forum und in der MSDN gibt es genügend Beispiele. Wie wäre es, wenn du da mal nachgucken könntest ? 😡 😡

    Ja, danke für die Standard-Antwort, die man fast immer erhält.
    Ich habe nur gefragt ob es so richtig ist.

    IST DIESER CODE RICHTIG:

    typedef void (_stdcall* WinXPStyle)(void);
    
            //Püfung, ob System Windows XP ist
            WinXPStyle IsThemeActive = reinterpret_cast<WinXPStyle>(GetProcAddress(LoadLibrary("UxTheme.dll"), "IsThemeActive"));
            if(IsThemeActive != NULL)
            {
                    if(IsThemeActive() == true)
                    {
                            XPStylesActive = true;
                    }
            }
    

    Wie gesagt ich habe hier keinen Compiler zum testen, den hab ich zuhause!!!

    Gruss, ~cp



  • BOOL !



  • Bei einem BS < WinXP gibt es diese Funktion ja gar nicht. Deswegen musst zuerst mit VerifyVersionInfo oder evtl. GetVersionEx das BS ermitteln und dann falls >= WinXP LoadLibrary und GetProcAddress verwenden (in welcher DLL sich die Funktion befindet siehst du auf der Seite, auf die -King- gelinkt hat - UxTheme.dll), damit du keinen Fehler wegen nicht Vorhandensein der dll auf BS < XP bekommst (wie bei statischen linken - so nennt man das doch, oder?). Wie du die Funktionen anzuwenden hast findest du hier in den FAQ im Beitrag von John unter Punkt 2 😉



  • flenders schrieb:

    Deswegen musst zuerst mit VerifyVersionInfo oder evtl. GetVersionEx das BS ermitteln

    Das kann er sich sparen. Auf älteren Systemen gibt es, wie Du richtig sagst, diese Funktionen gar nicht. Nicht mal die Dll ist auf älteren Systemen vorhanden. LoadLibrary gibt hier einfach NULL zurück. Ein einfaches Testen des Rückgabewertes reicht hin.



  • hi!
    hmm also ich habs eben erfolgreich unter win 98 kompilieren und ausführen können, muss es jetzt nurnoch auf nem XP rechner testen ...



  • @-King-: Stimmt, ich hätte es mir wieder mal komplizierter gemacht, als es ist 😃


Anmelden zum Antworten