Wie erstelle ich eine Form in einer DLL unter VC++?



  • Hallo,

    ich beschäftige mich eigentlich nur mit dem C++ Builder, daher kenne ich mich mit VC++ nicht aus. Ich habe mit dem C++ Builder ein Programm entwickelt, dass Plugins verwendet mit einer C-Schnittstelle. Plugins (dlls) funktionieren, die mit Delphi und C++Builder programmiert wurden.

    Nun will ich auch Plugins mit VC++ entwickeln. Ich habe damit angefangen und es funktioniert zur Zeit nur mit einer MessageBox. D.h. das Plugin wird geladen und eine MessageBox zeigt z.B. eine Zeichenkette. Das ist OK. Aber meine Frage nun:
    Wie verknüpfe ich z.B. bei Aufruf einer Funktion des Plugins ein Formular mit Komponenten?

    Bei C++Builder ist das simpel, man kann die IDE benutzen und dann z.B. über Form1->Show() die Form aufrufen. Geht das auch unter VC++ über die IDE?

    Ich will nicht viel Code schreiben um mit der WINAPI ein Formular zu erstellen.

    Beispiel der exportierten Plugin-Funktionen:

    extern "C"
    {
    	__declspec(dllexport) void InitPlugin(DWORD MDBHandle)
    	{
    		//Form1 = new TForm1(NULL);
    		mdbh=(HWND)MDBHandle;
    	}
    	//------------------------------------------------------------------------
    	__declspec(dllexport) void ExitPlugin()
    	{
    		//FreeLibrary(mdblib);
    	}
    	//------------------------------------------------------------------------
    	__declspec(dllexport) DWORD GetPluginVersion()
    	{
    		return (MAKELONG(0,1));
    	}
    
        //-------------------------------------------------------------------------
    	__declspec(dllexport) void ExecPlugin(DWORD Mode,char *SearchText)
    	{
    		//-------Handle zur ListView des Hauptprogramms
    		int lvhandle=0;
    		 SendMessage(mdbh,MSG_MDB_GET_MOVIELISTVIEW_HANDLE,WPARAM(&lvhandle),0);
    		//-------Anzhal der Einträge ermitteln
    		int itemscount=ListView_GetItemCount((HWND)lvhandle);
    		//-------Ausgabe der Einträge in einer MessageBox ausgeben
    		wchar_t buf[16];
    		_itow(itemscount,buf,10);
    		MessageBoxW(mdbh,buf,L"Anzahl Einträge in der Liste",0);
    
    	}
    }
    

    Gruß
    Hawk


  • Mod

    Willst Du das mit der MFC oder pur WinAPI machen.

    Das eine geht über die CDialog Klasse (entsprechende Wizards helfen hier).
    Das andere über CreateDialog...



  • Also ich wollte das ganze am besten mit MFC machen. Also ich will so wenig wie möglich programmieren also alle Komponenten per Drag & Drop auf ein Formular ziehen und dann mit den Funktionen der DLL verknüpfen. Geht das überhaupt oder muss man doch alles selbst machen durch viel Programmcode?


  • Mod

    Man muss immer etwas Programmcode schreiben. Du solltest unbedingt, aber die DLL als Regular DLL mit MFC mit dem Wizard erzeugen!

    Und Du solltest aufmerksam die Kommentare in dem erzeugten Code lesen.



  • OK, wie ich sehe gibt es keine einfache Möglichkeit dazu. Gegen etwas Programmcode habe ich nix, aber so bequem wie beim C++Builder geht es wohl nicht.

    Trotzdem Danke!


Anmelden zum Antworten