Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Schnittstelle von Phase 5 von Ulli Meybohm

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 <
000
02.02.2003, 11:48 Uhr
Christian
C/C++ Master
(Operator)


Hallo!

Da ich den HTML Editor Phase 5 auch selbst verwende und einen Syntaxhighlightner für Quellcode geschrieben habe würde ich gerne diesen als Plugin dort integrieren. Leider klappt es nicht so ganz, der HTML Editor ruft meine Funktionen nicht auf...
Dieses Stück Code soll mit dem Borland Builder super funktionieren, doch wie gesagt, den habe ich nicht. Was müsste ich denn dort noch abändern (für den VC++ 6.0):


C++:
// Diese Konstanten müssen definiert werden, damit
// HTML Editor mit den Rückgaben der DLL zurechtkommt
// Wer die langen Namen nicht mag, kann sie natürlich
// auch ändern. Wichtig ist nur, daß die Werte gleich
// bleiben!
const int INTERFACEVERSION = 1;
const int KEINE_RUECKGABE = 0;
const int RUECKGABE_ERSETZT_MARKIERUNG = 1;
const int RUECKGABE_ERSETZT_EDITORTEXT = 2;
  

int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*)
{

return 1;
}
// Das hier ist das eigentlich Wichtige: Die Export-
// Anweisungen der DLL. Damit werden die exportierten
// Funktionen von außen (=von HTML Editor) zugreifbar.
// Ich benutze C++ Builder (== Delhi?!). Die Deklaration
// kann evtl. bei anderen C++-Umgebungen ein wenig aussehen.

extern "C" __declspec(dllexport) PChar__stdcall pluginStart( PChar text, int selstart, int sellength );
extern "C" __declspec(dllexport) int__stdcall pluginRueckgabetyp();
extern "C" __declspec(dllexport) int __stdcall pluginInterfaceVersion();
  

// pluginStart() wird von HTML Editor als erstes aufgerufen, um das
// Plug-in zu starten. Hier kann ein Fenster aufgebaut werden etc.

PChar__stdcall pluginStart( PChar text, int selstart, int sellength )
{

// Der Speicherbereich, der zurückgegeben wird.
// Natürlich kann man das auch anders machen.
PChar Arbeitspuffer;
try {
// hier kann das Fenster erzeugt werden oder
// auf anderen Code gesprungen werden.
}
catch ( ... ) {
// "..." steht für "alle Exceptions auffangen"
// wenn ein Fehler beim Erzeugen oder
// ausführen des Forms aufgetreten ist
// KEINE_RUECKGABE zurückgeben (sicherheitshalber casten!)
return (PChar)KEINE_RUECKGABE;
}
// Wichtig ist, dass ein Zeiger auf einen Textpuffer
// an HTML-Editor zurückgegeben wird, der den Ergebnis.
// text enthält.
return Arbeitspuffer;
}
  
// Diese Funktion wird von HTML Editor aufgerufen
// Es kann wahlweise RUECKGABE_ERSETZT_EDITORTEXT
// oder RUECKGABE_ERSETZT_MARKIERUNG zurückgegeben
// werden (je nach Art des Plugins)

int __stdcall pluginRueckgabetyp()
{

return RUECKGABE_ERSETZT_EDITORTEXT;
}
  
// Rückgabe der Interfaceversion des Plugins
// derzeit const INTERFACEVERSION = 1

int __stdcall pluginInterfaceVersion()
{

return INTERFACEVERSION;
}


Danke euch.
--
Grüße, Christian
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
02.02.2003, 18:08 Uhr
Christian
C/C++ Master
(Operator)


Hallo!

Ich glaub ich spinn...
Jetzt habe ich den Fehler gefunden. Ich habe jetzt selbst eine DLL erstellt mit einer DEF Datei. Und siehe da, es macht einen Unterschied, ob man schreibt:


C++:
LIBRARY highlight

EXPORTS

pluginInterfaceVersion @ 1
pluginRueckgabetyp @ 2
pluginStart @ 3



oder


C++:
LIBRARY highlight

EXPORTS

pluginInterfaceVersion @1
pluginRueckgabetyp @2
pluginStart @3



Das haut mich schon ein wenig vom Hocker. Man darf also keine Leerzeichen zwischen dem @ und der Ordinalnummer lassen.

Grüße, Christian
--
Grüße, Christian
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


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: