ActiveX Formview ?



  • Hallo

    Wie kann man in ein ActiveX Steuerelement ein FormView einbetten ?
    Also es geht darum wenn ich ein neues Projekt (MFC Activex) erstelle.
    Dann könnte ich in der OnDraw(..) Methode meine Sachen zeichen.
    Aber ich will z.B ein paar Buttons in das Control hineinziehen ohne das ich das im Quellcode machen muss. Geht das ? Deswegen hab ich mir gedacht ich erstelle eine Resource (Dialog oder Formview) auf dem ich meine Elemente platziere und dann irgende wie ??? Naja tja ... einbette 🙂 geht das ?
    Oder geht das irgendwie anderes einfacher ?

    Gruß Martin



  • Das geht. Du kannst einen CDialog anzeigen.

    Um einen CDialog anzuzeigen sollest Du folgendes tun / beachten..

    1. In der "PreCreateWindow" der ..Ctl.cpp auf Dialog (32770) SubClassen

    siehe hierzu

    http://msdn.microsoft.com/en-us/library/9s2s80tk.aspx
    http://msdn.microsoft.com/en-us/library/ms633574(VS.85).aspx

    Code Beispiel :

    BOOL CMyCtrl::PreCreateWindow(CREATESTRUCT& cs) 
    {
        cs.lpszClass = _T("#32770");
        cs.style |= WS_BORDER;
    
        return COleControl::PreCreateWindow(cs);
    }
    

    In der OnCreate den Dialog erzeugen und anzeigen

    m_pMyDlg->Create(CMyDlg::IDD, this);
        m_pMyDlg->ShowWindow(SW_HIDE);
    

    natürlich noch ein "new" und "delete" in den De/Konstruktoren.

    Ob es eine einfachere Möglichkeit gibt weiß ich nicht..

    Grüße
    Marcus

    Edit1 : Tippfehler 🙂



  • Hallo

    Ich hab das jetzt mal soweit probiert. Mir ist aber nicht ganz klar an welchen Stellen das man das einbaut. Wenn ich mit dem Studio ein MFC-ActiveX Steuerlement erzeuge. Dann erstellt mir das Studio ein paar Klassen.

    Z.b: CTestCtrl
    PreCreateWindow(CREATESTRUCT& cs) hab ich dort eingebaut.
    Dann erstelle ich einen Dialog ohne Rahmen z.B.: IDD_DIALOG1 ...
    Laut deiner Links gibts auch noch:

    BOOL CTestCtrl::IsSubclassedControl()
    {
        return TRUE;
    }
    

    Habe ich auch noch gemacht.
    Aber an welchem OnCreate brauche ich dann den letzten Teil ein ?
    Ganz verstehe ich das jetzt nicht ??? 🙄

    CTestCtrl::OnCreate(..)

    Ausserdem verlangt Create(...) mehrere Parameter ...
    Was fehlt noch ?

    Gruß
    Martin



  • Hi

    Ich habs jetzt noch mal in einer Pause probiert.
    Ich hatte ein Eintrag in der MessageMap vergessen.
    Ja das funktioniert 😃 😃

    thx
    Martin


Anmelden zum Antworten