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).aspxCode 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
MarcusEdit1 : 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