30
MMIX-Edit Felix Albrecht

MMIX-Edit Felix Albrecht. Inhalt Einleitung Was ist Scintilla Wie baut man eine Win32 Anwendung Wie integriert man Scintilla Wie integriert man MMIX

Embed Size (px)

Citation preview

Page 1: MMIX-Edit Felix Albrecht. Inhalt Einleitung Was ist Scintilla Wie baut man eine Win32 Anwendung Wie integriert man Scintilla Wie integriert man MMIX

MMIX-Edit

Felix Albrecht

Page 2: MMIX-Edit Felix Albrecht. Inhalt Einleitung Was ist Scintilla Wie baut man eine Win32 Anwendung Wie integriert man Scintilla Wie integriert man MMIX

Inhalt

• Einleitung• Was ist Scintilla• Wie baut man eine Win32 Anwendung• Wie integriert man Scintilla• Wie integriert man MMIX

Page 3: MMIX-Edit Felix Albrecht. Inhalt Einleitung Was ist Scintilla Wie baut man eine Win32 Anwendung Wie integriert man Scintilla Wie integriert man MMIX

Einleitung

• Bachelorarbeit

• Erstellung einer MMIX IDE für Windows Systeme mit Hilfe von Scintilla

Page 4: MMIX-Edit Felix Albrecht. Inhalt Einleitung Was ist Scintilla Wie baut man eine Win32 Anwendung Wie integriert man Scintilla Wie integriert man MMIX

Einleitung

Was war benötigt:

- Win32 Anwendung- Scintilla als Editorkomponente- MMIX im Hintergrund

Page 5: MMIX-Edit Felix Albrecht. Inhalt Einleitung Was ist Scintilla Wie baut man eine Win32 Anwendung Wie integriert man Scintilla Wie integriert man MMIX

Scintilla

• Texteditorkomponente

• Open-Source

Page 6: MMIX-Edit Felix Albrecht. Inhalt Einleitung Was ist Scintilla Wie baut man eine Win32 Anwendung Wie integriert man Scintilla Wie integriert man MMIX

Scintilla

Page 7: MMIX-Edit Felix Albrecht. Inhalt Einleitung Was ist Scintilla Wie baut man eine Win32 Anwendung Wie integriert man Scintilla Wie integriert man MMIX

Scintilla

• Enthalten in vielen Editoren wieNotepad++, SciTE, TeXnicCenter, usw.

• Mehrere Ports:Win32, MUI (AmigaOS),Gtk (GIMP-Toolkit), Qt (mit Gtk in X11),usw.

Page 8: MMIX-Edit Felix Albrecht. Inhalt Einleitung Was ist Scintilla Wie baut man eine Win32 Anwendung Wie integriert man Scintilla Wie integriert man MMIX

Scintilla

• Wichtige Funktionen von Scintilla:- Code-Highlighting- Marker-Setzung- Zeilennummern

Page 9: MMIX-Edit Felix Albrecht. Inhalt Einleitung Was ist Scintilla Wie baut man eine Win32 Anwendung Wie integriert man Scintilla Wie integriert man MMIX

Win32

• Win32 Funktionen arbeiten mit wchar_t

• char*/String müssen in wchar_t umgewandelt werden

• “String” => L”String”

Page 10: MMIX-Edit Felix Albrecht. Inhalt Einleitung Was ist Scintilla Wie baut man eine Win32 Anwendung Wie integriert man Scintilla Wie integriert man MMIX

Win32

int WINAPI WinMain([…])

- Einstiegspunkt in die Anwendung

- Enthält die Nachrichtenschleife

Page 11: MMIX-Edit Felix Albrecht. Inhalt Einleitung Was ist Scintilla Wie baut man eine Win32 Anwendung Wie integriert man Scintilla Wie integriert man MMIX

Win32

WNDCLASSEX windowClass

- speichert Informationen der Anwendung

- benötigt zum Erstellen des Hauptfensters

Page 12: MMIX-Edit Felix Albrecht. Inhalt Einleitung Was ist Scintilla Wie baut man eine Win32 Anwendung Wie integriert man Scintilla Wie integriert man MMIX

Win32

Atom WINAPI RegisterClassEx([…])

- Registrieren des Hauptfensters

- benötigt die WNDCLASSEX

Page 13: MMIX-Edit Felix Albrecht. Inhalt Einleitung Was ist Scintilla Wie baut man eine Win32 Anwendung Wie integriert man Scintilla Wie integriert man MMIX

Win32

HWND WINAPI CreateWindow([…])

- erstellt registriertes Hauptfenster

- gibt Handle des Fensters zurück

Page 14: MMIX-Edit Felix Albrecht. Inhalt Einleitung Was ist Scintilla Wie baut man eine Win32 Anwendung Wie integriert man Scintilla Wie integriert man MMIX

Win32

BOOL WINAPI ShowWindow([…])

- ändert Sichtbarkeit des angegebenen Fensters

- Minimierung oder Maximierung möglich

Page 15: MMIX-Edit Felix Albrecht. Inhalt Einleitung Was ist Scintilla Wie baut man eine Win32 Anwendung Wie integriert man Scintilla Wie integriert man MMIX

Win32

Nachrichtenschleife

- while mit GetMessage

- leitet Nachrichten weiter

Page 16: MMIX-Edit Felix Albrecht. Inhalt Einleitung Was ist Scintilla Wie baut man eine Win32 Anwendung Wie integriert man Scintilla Wie integriert man MMIX

Win32

BOOL WINAPI GetMessage([…])

- holt oberste Nachricht von Messagequeue

- filtert Nachrichten nach Kriterien

Page 17: MMIX-Edit Felix Albrecht. Inhalt Einleitung Was ist Scintilla Wie baut man eine Win32 Anwendung Wie integriert man Scintilla Wie integriert man MMIX

Win32

LRESULT WINAPI DispatchMessage([…])

- leitet Nachricht an richtiges Fenster weiter

- bei Hauptfenster an WndProc

Page 18: MMIX-Edit Felix Albrecht. Inhalt Einleitung Was ist Scintilla Wie baut man eine Win32 Anwendung Wie integriert man Scintilla Wie integriert man MMIX

Win32

LRESULT CALLBACK WndProc([…])

- verarbeitet Nachrichten an Fenster

- muss WNDCLASSEX zugeordnet werden

Page 19: MMIX-Edit Felix Albrecht. Inhalt Einleitung Was ist Scintilla Wie baut man eine Win32 Anwendung Wie integriert man Scintilla Wie integriert man MMIX

Win32

DWORD WINAPI GetLastError()

- Holt letzten Fehler des Threads

- eine Kennnummer wird zurück gegeben

Page 20: MMIX-Edit Felix Albrecht. Inhalt Einleitung Was ist Scintilla Wie baut man eine Win32 Anwendung Wie integriert man Scintilla Wie integriert man MMIX

Win32

DWORD WINAPI FormatMessage([...])

- Fehler Kennnummer => Fehlermeldung

- Rückgabe in einem Parameter

Page 21: MMIX-Edit Felix Albrecht. Inhalt Einleitung Was ist Scintilla Wie baut man eine Win32 Anwendung Wie integriert man Scintilla Wie integriert man MMIX

Scintilla Integration

• Scintilla.hmuss includiert werden

• Scintilla.dllbrauch nicht eingebunden werdenmuss nur in Ordner sein

Page 22: MMIX-Edit Felix Albrecht. Inhalt Einleitung Was ist Scintilla Wie baut man eine Win32 Anwendung Wie integriert man Scintilla Wie integriert man MMIX

Scintilla Integration

• Neuer Editor mit CreateWindow

• lpClassName = L“Scintilla“

Page 23: MMIX-Edit Felix Albrecht. Inhalt Einleitung Was ist Scintilla Wie baut man eine Win32 Anwendung Wie integriert man Scintilla Wie integriert man MMIX

Scintilla Integration

• SciLexer.h muss eingebunden sein

• SciLexer.DLL muss mit LoadLibrary geladen werden

Page 24: MMIX-Edit Felix Albrecht. Inhalt Einleitung Was ist Scintilla Wie baut man eine Win32 Anwendung Wie integriert man Scintilla Wie integriert man MMIX

Scintilla Integration

• MMIX Lexer existiert bereits

• SendMessage zum Ändern des Lexers

• SCI_SETLEXER und SCLEX_MMIXAL

Page 25: MMIX-Edit Felix Albrecht. Inhalt Einleitung Was ist Scintilla Wie baut man eine Win32 Anwendung Wie integriert man Scintilla Wie integriert man MMIX

MMIX Integration

• MMIX Quellcode in .w Dateien

• Änderungen in .ch Dateien

• Mit Ctangle zu .c Dateien kompilieren

Page 26: MMIX-Edit Felix Albrecht. Inhalt Einleitung Was ist Scintilla Wie baut man eine Win32 Anwendung Wie integriert man Scintilla Wie integriert man MMIX

MMIX Integration

@xalter Text@yneuer Text@z

Page 27: MMIX-Edit Felix Albrecht. Inhalt Einleitung Was ist Scintilla Wie baut man eine Win32 Anwendung Wie integriert man Scintilla Wie integriert man MMIX

MMIX Integration

• Änderungen müssen in richtiger Reihenfolge sein

Page 28: MMIX-Edit Felix Albrecht. Inhalt Einleitung Was ist Scintilla Wie baut man eine Win32 Anwendung Wie integriert man Scintilla Wie integriert man MMIX

MMIX Integration

• Exit und Return müssen geändert werden

• Sourcecode muss direkt übergeben werden können

Page 29: MMIX-Edit Felix Albrecht. Inhalt Einleitung Was ist Scintilla Wie baut man eine Win32 Anwendung Wie integriert man Scintilla Wie integriert man MMIX

MMIX Integration

• Einstiegsfunktionen müssen Prototyp in cpp haben

• Einbindung als EXTERN_C Funktion

Page 30: MMIX-Edit Felix Albrecht. Inhalt Einleitung Was ist Scintilla Wie baut man eine Win32 Anwendung Wie integriert man Scintilla Wie integriert man MMIX

Fragen!