Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Menü aus Dll

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 <
010
19.02.2004, 23:58 Uhr
mike
Pinguinhüpfer
(Operator)


Hi!
Also Link hab ich keinen - ich werds morgen aber probieren. Muss nur meine Windows Mühle wieder zum Laufen bekommen

edit: Ich hab noch ein paar interessant Links gefunden:
www.codeguru.com/misc/Plugins.html
www.codeproject.com/dll/plugin.asp

mfg
--

Dieser Post wurde am 20.02.2004 um 00:06 Uhr von mike editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
20.02.2004, 12:24 Uhr
~Dirk 23
Gast


Danke für deine beiden Links. Gerade den ersten fand ich sehr gut. Die Theorie ist nun denke ich klar.
In der Anwendung wird die dll oder sogar mehrere dynamisch geladen, falls sie vorhanden ist/sind.
Um eine Funktion innerhalb der dll aufrufen zu können, wird die Adresse dieser benötigt.
Wenn die Anwendung wieder geschlossen wird, müssen die Plug-ins wieder freigegeben werden.

Um jetzt noch GUI-Funktionalität mit in die DLL zu bringen, müsste man folgendes machen, wenn ich es richtig verstanden habe.
Man muss einer Funktion der dll einen Zeiger auf das Menü übergeben. Mit Hilfe dieses Zeigers könnte die dll dann das eigene Menü an das vorhandene Menü hintendranhängen.
Wie das genau geht, weiss ich leider nicht.
Wenn ein Event ausgelöst wird, so muss dieses in der Anwendung behandelt werden. Dort muss dann auf die entsprechende Funktion in der dll verwiesen werden. Diese ganze Sache gefällt mir noch nicht so gut. Aber wenn es funktionieren sollte, wäre es dennoch gut.
Am besten wäre es natürlich, wenn die Ereignisbehandlung dieses Zusatzmenüs in der dll stattfinden könnte.

Naja, was ich mit all diesem Text hier sagen will ist, dass ich nun durch deine Links schon einen etwas besseren Einblick darin habe, wie man es machen könnte. Doch von einer genauen Implementierung bin ich leider noch weit entfernt. Ich werde auf jeden Fall heute das ganze immer wieder ausprobieren.
Aber ich wäre dir auf jeden Fall sehr dankbar, wenn du eine Lösung findest, wenn du sie mir dann erklären bzw. zuschicken könntest.

Danke schonmal im Voraus

Dirk
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
20.02.2004, 22:50 Uhr
~Dirk23
Gast


Hi,

also ich habe es jetzt zumindest mal hinbekommen, dass ein Menü, welches sich innerhalb einer dll befindet, von der Anwendung aus aufgerufen wird und auch erfolgreich an das bestehende Menü der Anwendung hinten angehängt wird.
Aber egal wie ich es anstelle. Sobald ich auf den neuen Menüpunkt klicke kommt eine Assertion.
Viel weiter bin ich also noch nicht.

Programmcode in der Anwendung, wenn man auf einen Button drückt.

C++:
void CTestView::OnButton1()
{
    CMenu m_Beispielmenu;
    ExportData exportdata;
    CMenu* pMenuBar = GetParent()->GetMenu();
    exportdata.AddMenu(m_Beispielmenu);
    pMenuBar->InsertMenu(4,MF_BYPOSITION|MF_POPUP,(UINT)m_Beispielmenu.m_hMenu,"asdf");
    GetParent()->DrawMenuBar();
}



Programmcode in der Schnittstellenfunktion der DLL:

C++:
void ExportData::AddMenu(CMenu& m_Beispielmenu)
{
    m_Beispielmenu.LoadMenu(IDR_MENU_BEISPIEL);
}



IDR_MENU_BEISPIEL ist eine Menüressourece, die ich als Kontextmenü erstellt habe.

Woran könnte es liegen, dass diese Assertion kommt?

Vielen Dank im Voraus

Dirk
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
20.02.2004, 22:54 Uhr
~Dirk23
Gast


Sorry für die Frage gerade. Habs gerade rausgefunden, warum das nicht ging.
Die CMenu Variable darf ich natürlich nicht lokal in der OnButton-Funktion deklarieren. Ich habe sie jetzt in der Headerdatei deklariert und jetzt kommt die Assertion nicht mehr.
Jetzt muss ich mich nur noch um die Eventbehandlung kümmern. Das mache ich aber dann morgen.

Also, bis dann

Dirk
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
23.02.2004, 20:46 Uhr
~Dirk23
Gast


Hi,

ich hab die ganze Sache jetzt hinbekommen. Allerdings erst einmal mit statischem Einbinden der dll. Aber das dynamische sollte auch kein Problem mehr darstellen.
Das einzige was mich noch stört an meiner Lösung ist, dass ich die Nachrichtenbehandlung des Menüs, welches sich in der dll befindet, in der Anwendung abfangen muss. Dies mache ich, indem ich die OnCmdMsg überschrieben habe. Im zweiten Link von Mike ist es gut beschrieben. Von dort aus leite ich dann an die dll weiter. Diese kann dann indirekt die Nachrichten verarbeiten.
Gibt es irgendwie eine Möglichkeit, dass ich die Nachrichten des Menüs, welches sich in der dll befindet, direkt in der dll auswerten kann.
Bem.: Das Menü aus der dll habe ich an das Menü der Anwendung hinten angehängt.

Vielen Dank im Voraus

Dirk
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: