ActiveX Parameter verarbeiten



  • Hallo.
    Weiss jemand wie man in einem ActiveX Parameter, die beim Start übergeben werden,
    verarbeiten kann?
    Ist OnCmdMsg() dafür gedacht? Diese Funktion / Methode wird beim Ablauf des
    Programmes mehrmals aufgerufen!

    Danke für eure Antworten / Hilfe. Mfg.



  • Hi,

    ich kann dir leider nicht helfen, aber ich habe ein ähnliches problem,vielleicht bist du da schon weiter. Ich will den event meines activex buttons in der winproc(...) abfragen, machst du vielleicht auch so. Normalerweise wird da im LOWORD(wParam) die ID des objektes übergeben aber die ist bei mir immer 0, falls du da was weißt.

    Kannst du etwas genauer definieren was du machen willst, vielleicht hab ich ja doch was in meinem eigenen activex button für dich, wer weiß...

    Micha



  • Hallo OnlyMicha.
    Ja, ich fange auch den Event BN_CLICKED in der WinProc(...) ab. Falls du ebenfalls
    mit CreateWindow(...) arbeitest, musst du den <HMENU hMenu> Parameter als deine
    Button ID angeben. Also: (HMENU) ID_BUTTON
    Wobei ID_BUTTON der gewünschte Wert ist. Falls du nicht mit CreateWindow(...)
    arbeitest, kann ich dir leider nicht weiterhelfen, da ich nicht weiss wie man
    in der Klasse CButton diese ID angeben kann. In dem Fall arbeitet man aber direkt
    auf der Klasse und kann die Events ohne ID abfangen (denke ich 🙂 ).
    Hoffe ich konnte dir weiterhelfen.

    Mein Prob ist, ich konnte nichts dazu finden, wie man Parameter beim Start des
    Controls übergeben und im Control auslesen kann.

    Mfg.



  • Hi,

    CreateWindow wird soweit ich verstehe aber nur im Hauptprogramm aufgerufen, im AxtiveX gibts nur (also bei mir jedenfalls)

    BOOL My_ButtonCtrl::PreCreateWindow(CREATESTRUCT& cs)
    {
    cs.lpszClass = _T("BUTTON");
    return COleControl::PreCreateWindow(cs);
    }

    die CREATESTRUCT sieht wohl so aus:

    typedef struct tagCREATESTRUCT {
    LPVOID lpCreateParams;
    HANDLE hInstance;
    HMENU hMenu;
    HWND hwndParent;
    int cy;
    int cx;
    int y;
    int x;
    LONG style;
    LPCSTR lpszName;
    LPCSTR lpszClass;
    DWORD dwExStyle;
    } CREATESTRUCT;

    da hätten wir das hMenu, in dieser routine wird bei mir im moment nur die Klasse Button verändert, kein ding da noch hMenu zu ändern. Somit ergibt sich aber ein problem:

    diese routine steht im button, der button weiß in dem moment aber noch nix von sich also auch nicht welche id er hat, erst beim dialog öffnen wird er gezeichnet, in der recource des dialogs(.rc) ist per define dann eine ID zugeordnet, die müßte ich dann wohl dem button von hand mitteilen ? denn den button erzeuge ich ja nicht mit createwindow() sonder der ist ja im dialog drin.

    ich glaub dann haben wir beide das selbe problem ?

    normale parameterübergabe geht ja über DDX_**** also quasi verpasst man dem control ne member variable m_myValue und das kann man dann direkt aus dem erzeugen ändern, das meinst du aber nicht, oder?

    MfG Micha



  • Re.
    Leider kann ich dir dann nicht wirklich weiterhelfen 😞 . Hab in VS .NET 2003
    ein ActiveX per Wizard erstellen lassen und dann ein Button auf diesem Dialog
    Template in der Resource erstellt. Wenn man dann diesem Button per Wizard eine
    Variable zuordnet erscheint noch dies unter DoDataExchange(...):

    DDX_Control(pDX, IDC_BUTTON1, cb1);
    

    IDC_BUTTON1 ist die automatisch zugeordnete ID vom Wizard.

    CButton cb1;
    

    Das ist die Variable die zugeordnet wird. Wenn man nun einen Event verarbeiten
    will müsste man doch theoretisch auf dieser Variable arbeiten:

    cb1.OnClick(...);
    

    Vielleicht hat dir das noch etwas weitergeholfen, ansonsten weiss ich leider nix
    mehr, da ich mit MFC noch nicht wirklich viel zu tun hatte.
    Mfg.



  • bin mir da auch nich sicher, so oder so ähnlich schon aber wie gesagt, dann hast du ja den ocx button schon eingebunden, da weiß der wizard dann ja auch schon die id, bzw. der recourcen editor vergibt erstmal ne std. id. naja genau da liegt jedenfalls das problem. ich guck mal ob ich noch was finde, dir jedenfalls mal viel erfolg bei deinem projekt.

    Micha



  • Danke, dir auch :).


Anmelden zum Antworten