ActiveX-Control in Dialog



  • Stimmt, das habe ich auch gemacht und das funktioniert auch einwandfrei.
    Habe wahrscheinlich meine Frage falsch formuliert, ich meinte eigentlich, dass wenn ich dann den Dialog mit ActiveX auch starten will garnicht erst angezeigt wird. Ohne das Control funktioniert der Dialog völlig normal. Nach dem ATL-Beispiel in den WinApi FAQ funktioniert es mit einem manuell erstellten Fenster. Mit einer dialogbasierten Anwendung ( aus der Resource) jedoch nicht. 😞



  • Vielleicht hilft dir der Beitrag aus den FAQ



  • Der hat mir ja auch schon geholfen, aber leider funktioniert das nicht mit in der Resource eingebauten ActiveX-Controls ! Wenn ich mir manuell eine windowbasierte Anwendung mit CreateWindow, RegisterClass usw. baue funktioniert das reibungslos, nur eben nicht mit in der Resource erstellten Dialogen, und das ist mir ein echtes Rätsel. Ich hatte erst gedacht, es läge an den boolischen Rückgabewerten der DialogProc, nach dem Subclassing (neue WindowProc mit LRESULT-Rückgabe) änderte sich aber auch nichts. Mist !



  • Das ist wie mit dem RichEdit!
    Du musst die passende Dll in deinen Prozess laden mit LoadLibrary.
    Sonst wird der Dialog nicht angezeigt.

    Wie die Datei bei aar heist weiss ich net..

    cu para
    😃



  • quatsch



  • Original erstellt von <sch>:
    quatsch

    ? Gehts genauer?



  • Das mit dem DLL-Laden kann nicht sein, denn eine reine CreateWindow-Anwendung, benötigt ja auch keine zusätzliche dll oder lib.



  • Der Dialog wird nicht angezeigt, wenn ein Fenster nicht erstellt werden kann. Das passiert z.B. dann, wenn eine Fensterklasse nicht registriert ist. Wenn Du das Beispiel aus den FAQs nimmst, übernimmt die Funktion AtlAxWinInit() das Registrieren. Diese Funktion mußt Du bereits vor DialogBox() aufgerufen haben, in WM_INITDIALOG ist es bereits zu spät. In den Dialog fügst Du ein 'Benutzerdefiniertes Steuerelement' ein. Als Klassennamen verwendest Du "AtlAxWin" und als Titel die CLSID (oder ProgID).

    Wenn Du das aber tatsächlich nach Spacelords Vorschlag gemacht hast, kann ich Dir auch nichts genaueres sagen. In reinen Win32-Anwendungen funktioniert dieser Ansatz nämlich nicht.



  • Ich denke mal du liegst da einwenig falsch mein Fusel...

    Pass mal auf:
    [code]
    1. Erstell ein Projekt
    2. Schreib dein int WINAPI ... rein
    3. Rufe darin ein Dialog per DialogBox(...) auf (aus Resource)
    4. Starte das ganze => BINGO: Es geht, der Dialog wird angezeigt.
    5. Erstelle nun eine RichEdit im Dialog
    6. Starte => BINGO: Es geht nicht!
    7. Mach ein LoadLibrary("riched32.dll") rein
    8 Starte => BINGO: Es geht.[/code]

    Deshalb dachte ich es könnte gehen, denn schließlich ist es naheliegend!!
    Wie wäre es denn wenn man es einfach mal ausprobiert....

    cu para
    😃



  • Wie wäre es denn wenn man es einfach mal ausprobiert....

    Er braucht für das PDF-Control nicht die riched32.dll zu laden. Den Versuch kann er sich sparen.



  • Original erstellt von -King-:
    [quote]Wie wäre es denn wenn man es einfach mal ausprobiert....

    **
    Er braucht für das PDF-Control nicht die riched32.dll zu laden. Den Versuch kann er sich sparen.**[/QUOTE]

    Du kannst auch drauf rummreiten. Hättest du oben mal nachgesehen, dann hättest du festgestellt, dass ich das in Relation gesetzt hab. Natürlich müsste er in dem Fall eine andere Dll laden. Aber soweit kann mal wohl noch denken 🙄

    Ich habe nur geschrieben, wie es mit einem RichEdit war. Ein reiner Denkanstoß.

    Das du in Sachen ActiveX der -KING- bist ist mir schon klar, ich wollt nur helfen.

    also vergesst es halt.

    cu :p



  • Original erstellt von -King-:
    **Als Klassennamen verwendest Du "AtlAxWin" und als Titel die CLSID (oder ProgID).
    **

    Dies war mein Fehler, ich hatte nicht die AtlAxWin-Fensterklasse definiert ! Danke King ! und auch danke paranoiac.org !

    [ Dieser Beitrag wurde am 03.04.2003 um 15:17 Uhr von BiGFusel editiert. ]


Anmelden zum Antworten