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 ]
000
18.02.2004, 10:34 Uhr
~Dirk23
Gast


Hi,

ich möcht ein Menü, welches sich in einer DLL befindet von einer Anwendung aus aufrufen. Leider klappt es nicht. Es kommt aber auch keine Fehlermeldung.

Der Inhalt der Schnittstellenfunktion innerhalb der DLL lautet so:


C++:
CMenu Beispielmenu;
Beispielmenu.LoadMenu(IDR_MENU_BEISPIEL);



Muss ich noch mehr tun, um das Menü anzeigen zu lassen? Denn momentan passiert gar nichts,wenn ich in der Anwendung auf einen Button drücke, um von dort aus diese Schnittstellenfunktion aufzurufen.

Vielen Dank im Voraus

Dirk
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
18.02.2004, 10:48 Uhr
mike
Pinguinhüpfer
(Operator)


Hi!
Also ich glaube das Resource Handle dürfte Fehlen:

C++:
HINSTANCE hInst = AfxGetResourceHandle();
AfxSetResourceHandle(::GetModuleHandle("myddl.dll"));
//Menü
AfxSetResourceHandle(hInst);



mfg
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
18.02.2004, 11:01 Uhr
~Dirk23
Gast


Hi,

erstmal Danke für deine Antwort. Aber es tut sich leider immer noch nichts. Wahrscheinlich habe ich es aber auch falsch gemacht.
Ich habe deinen Code jetzt innerhalb der Schnittstellenfunktion innerhalb der DLL eingefügt. Ich habe keine Fehlermeldung, aber es passiert genau wie vorher nichts, wenn ich auf den Button in der Anwendung klicke, mit dem dann die Schnittstellenfunktion aufgerufen werden soll, die das Menü aufruft.

Wo muss ich deinen Code einbinden?
Worauf muss ich vielleicht sonst noch achten?

Danke schonmal

Dirk
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
19.02.2004, 11:07 Uhr
~Dirk23
Gast


Oder anders:

Ich habe das Beispiel aus www.mindcracker.com/mindcracker/c_cafe/dll/extn_dll_dlg.asp, dass Mike mal empfohlen hatte ausprobiert. Und es hat funktioniert.
Was muss ich tun, um anstatt eines modalen Dialogs ein Menü in der DLL zu erstellen und dieses dann durch eine Schnittstellenfunktion der Klasse Export Data aufzurufen?

Vielen Dank im Voraus

Dirk
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
19.02.2004, 12:19 Uhr
mike
Pinguinhüpfer
(Operator)


Hi!
Vielleicht funtzts noch mit FindRessource. Ich hab bei mir ein ganzes Frame (View&Doc) aus einer DLL geladen und es hat gut funktioniert. Vielleicht geht es ja, dass du in der DLL das Menü lädst und dann nur das Handle per Funktion übergibst.

mfg
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
19.02.2004, 14:00 Uhr
~Dirk23
Gast


Hi,

danke für deine Antwort. Aber ich bin mir nicht sicher, ob dann noch meine Zielsetzung geht.
Also, ich habe folgendes vor:
Ich möchte ein Menü und ein paar Dialoge in ein DLL stecken. Von irgendeiner Anwendung aus, möchte ich dann die Schnittstellefunktion der DLL aufrufen, um das Menü zu laden. Und dann wenn das Menü da ist, soll wenn der Benutzer auf irgendeinen Menüpunkt klickt, einer der Dialoge aus der gleichen DLL erscheinen.
Ich hatte es mir eigentlich so vorgestellt, dass die Anwendung lediglich die Funktion zum Aufrufen des Menüs tätigt, und der ganze Rest dann mit Hilfe dieser DLL alleine läuft. Mit ganzem Rest meine ich das Aufrufen eines Menüpunktes und das öffnen des jeweiligen Dialoges.

Geht das so, wie ich mir das vorstelle mit deinem Lösungsansatz?
Wenn ja, kannst du mir es bitte etwas genauer erklären, mit dem FindRessource. Ich kenne mich leider in der MFC noch nicht so gut aus.
Wo müsste ich das FindRessource einbauen?

Vielen Dank im Voraus

Dirk
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
19.02.2004, 21:48 Uhr
~Dirk23
Gast


Oder mal noch eine andere Frage:
Die Anwendung, die das Menü aus der Dll aufrufen soll, hat bereits selbst ein Menü. Wo erscheint dann eigentlich das Menü aus der Dll?
Kann eine Anwendung überhaupt 2 Menüs gleichzeitig anzeigen?

Vielen Dank im Voraus

Dirk
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
19.02.2004, 22:22 Uhr
mike
Pinguinhüpfer
(Operator)


Hi!
Also wenn es sich nur um ein Menü handelt würde ich das Menü im Client lassen.
Wenn die DLL "unabhängig" vom Client arbeiten soll (also auf keinen "zugeschnitzen" Clients), dann hast du imho 2 Möglichkeiten:
1.) Du erstellt in der DLL ein komplettes Frame: Das heißt, dass du einen View, eine Doc und eine Frameklasse erstellen kannst (siehe InitInstance deines Clients).
Der Vorteil ist, wenn du das aufrufst, dass das Menü des Clients verschwindet und das in der DLL definierte Menü erscheint.
Nach meiner Erklärung nach würde ich das auch nicht verstehen - daher ein Bildchen
http://schueler.bulme.at/~vodep_mi/Unbenannt1.png
Das ist der Client. Rechts das Menü. Wenn du auf ein Menü Item klickst (z.B. Angebot erstellen) wird aus der DLL ein Frame geladen + Menü:
http://schueler.bulme.at/~vodep_mi/Unbenannt5.png
Das Menü des Cleints ist verschwunden + neue Symbolleiste. Wenn du auf ein Item in der Symbollieste klickst kommt ein Dialog (auch aus der DLL).
2.) Du holst dir das Handle des DLL Menüs und versuchst es im Client Menü anzuhängen -> so wie z.B. Makros im Word

Ich hoffe, das hilft dir weiter. Wenn Methode 1 das ist was du brauchst, schicke ich dir den Src.

mfg
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
19.02.2004, 22:58 Uhr
~Dirk23
Gast


Hi,

danke für deine Antwort. Jetzt verstehe ich zumindest die Theorie schon besser.
Meine Zielsetzung ist es eigentlich ein Plug-in zu schreiben, welches unabhängig von der Anwendung ist.
Die Anwendung soll bei Start schauen, ob die dll des Plug-ins vorhanden ist. Wenn ja, dann soll das Menü dieses Plug-ins aufgerufen werden und über dieses Menü die Funktionalität dieses Plug-ins verfügbar sein.
Wenn die dll nicht da ist, dann soll die Anwendung so arbeiten wie vorher auch.

Momentan ist es mir aber erstmal wichtig, dass die Sache mit dem Menü klappt. Das dynamische Einbinden der dll in die Anwendung spielt ja für die Sache gerade keine Rolle.

Nun aber zum Menüproblem.
Da es mein Ziel ist, dass das Menü des Clients unverändert bleibt und lediglich das Menü aus der dll hinzukommt, wird wohl Methode 1 nicht funktionieren. Der Sourcecode dazu würde mich aber dennoch interessieren. Es ist auf jeden Fall interessant. Und irgendwann werde ich es schon brauchen können.

Was mir leider nur bleibt, ist Methode 2. Leider habe ich nur wenig Ahnung davon. Hast du mir da vielleicht einen Link oder noch ein paar weitere Tips dazu. Denn, wenn ich das nicht habe, kann ich gar nicht richtig anfangen das Plug-in zu implementieren.

Danke für die Hilfe

Dirk
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
19.02.2004, 22:59 Uhr
~Dirk23
Gast


Achso, hab meine eMail-Adresse noch vergessen.

dj-21 at web dot de
 
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: