Color Coding (oder Syntax Hilighting) in Textboxen?



  • Hi, ich wollte mal Fragen ob jemand ein Tutorial / Example zu einem Color Coding (S.H) hat. Falls jemand jetzt nicht weis, was ich meine:

    Wenn ich z.B. "if" oder "else" in einer Textbox eingebe, soll dieses Wort hervorgehoben (FETT) werden. Ich hoffe ihr könnt mir helfen 🙂

    €dit: Ich benutze Microsoft Visual C++ 2005 Express

    mfg Nolf



  • Ich habe mit eine Etitor geschrieben der der Syntax-Highlighting kann.

    http://members.inode.at/anton.zechner/az/index.html

    Das Beispiel ist zwar sehr aufwändig aber man kann's schafen:

    1.) Kopiere die AZ_Lib nach ./MyProjects/Allgemein
    2.) Erstelle die AZ_Lib. (siehe ./MyProjects/AZ_Lib/AZ_Lib.dsw)
    3.) Trage die AZ_Editor_C.reg Datei aus Editor_exe.zip in die Registry ein.
    3.) Erstelle ein MFC-Programm
    4.) Erzeuge die Datei TextWnd.cpp:

    #include 	"StdAfx.h"
    #include	"Resource.h"
    #include 	"TextDlg.h"
    #include	"TextWnd.h"
    
    #define 	TO_TEXTWND
    
    #include	"..\Allgemein\ViewBase\TextBase.cpp"
    

    5.) Erzeuge die Datei TextWnd.h:

    #if !defined(AFX_TEXTWND_H__82341288_VXDA_1841_9273_144553540000__INCLUDED_)
    #define      AFX_TEXTWND_H__82341288_VXDA_1841_9273_144553540000__INCLUDED_
    
    #if _MSC_VER > 1000
    #pragma once
    #endif
    
    #include    "TextDlg.h"
    #include	"AnsiWnd.h"
    
    #define 	TO_TEXTWND
    
    #include	"..\Allgemein\ViewBase\TextBase.h"
    
    #endif
    

    6.) Erzeuge die Datei AnsiWnd.cpp:

    #include	"StdAfx.h"
    #include	"AnsiWnd.h"
    
    #define 	TO_ANSIWND
    
    #include	"..\Allgemein\ViewBase\AnsiBase.cpp"
    

    7.) Erzeuge die Datei AnsiWnd.h:

    #if !defined(AFX_ANSIWND_H__15785588_D3DA_1AD1_9273_494553540011__INCLUDED_)
    #define      AFX_ANSIWND_H__15785588_D3DA_1AD1_9273_494553540011__INCLUDED_
    
    #if _MSC_VER > 1000
    #pragma once
    #endif
    
    #define 	TO_ANSIWND
    
    #include    "..\Allgemein\ViewBase\FarbWahlDlg.h"	
    #include    "..\Allgemein\ViewBase\AnsiBase.h"
    
    #endif
    

    8.) Erzeuge die Datei TextWnd.cpp:

    #include	"StdAfx.h"
    #include	"TextDlg.h"
    #include	"AfxUtility.h"
    
    #include	"..\Allgemein\ViewBase\TextDlg.cpp"
    

    9.) Erzeuge die Datei TextWnd.h:

    #if !defined(AFX_VIEWDLG_H__81388878_D71A_4A51_9231_CC4553640044__INCLUDED_)
    #define      AFX_VIEWDLG_H__81388878_D71A_4A51_9231_CC4553640044__INCLUDED_
    
    #if				_MSC_VER >= 1000
    #pragma once
    #endif
    
    #include	"..\Allgemein\ViewBase\TextDlg.h"
    
    #endif
    

    10.) Füge folgende Dateien in dein Project ein

    ..\Allgemein\ViewBase\FarbWahlDlg.h
    ..\Allgemein\ViewBase\FarbWahlDlg.cpp
    .\TextDlg.h
    .\TextDlg.cpp
    .\TextWnd.h
    .\TextWnd.cpp
    .\AnsiWnd.h
    .\AnsiWnd.cpp

    11.) Füge diese Zeile in StdAfx.h ein:

    #include	"..\Allgemein\AZ_Lib.h"
    

    12.) Und zum Schluss ein Beispiel wie man das Fenster anzeigt.

    CTextWnd  *www;   // Zeiger auf Fenster in ElerenFensterKlasse anlegen.
            #define    IDC_WND_ID  1234
            ...
    
            // Beim Erzeugen des Elternfensters das ausführen    
            CRect  sRect(10,10,300,500);
    
            www = new CTextWnd;
            www->Create(WS_VISIBLE,sRect,this,IDC_WND_ID);	
            www->MoveWindow(sRect);
            www->TextInsert("\nif(x==5)\n\t{\n\tint x=0;\n\n\ty++;\n\t}\n",0,10000);
            www->ConfigLoad("#Software\\AZ\\Editor");  // Registry-Pfad für Formate setzen
            www->ConfigText(".c");     // Das Syntax-Highlighting auf C-Format
            www->SetCanModify(FALSE);  // Fenster nicht edtitierbar machen
    


  • Wow, dass is mir eigenltich zu gut, denn ich brauche ja nur die hervorhebung. Trotzdem thx.

    Ach ja: Da kommt mir diese Frage, weil bei deinen ganzen Projekten immer steht "afxwin.h" "afx..." no such file or directory - Was soll das? Muss ich da was linken? Und wenn ja: WIE? Wenn ich bei einem Konsolen Projekt #include "windows.h" eingebe, kann der diese Lib nich mal finden. Bei meinem Freund aber geht es? 😕



  • Du wirst ein Windowsforms Projekt eröffnet haben. Die Beispiellib schaut nach MFC aus. Du wirst Dir noch ein SDK downloaden müssen - such mal im Forum, gab es mehrmals andiskutiert teil mit links zum SDK.



  • Ich kann leider keine Passenden Themen dazu finden. Nur das hier:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-143003.html

    Das dumme ist, warum die LIB windows.h nicht erkannt wird. Ich habe mir nämlich ein Buch über Spiele erstellen (mit C++) gekauft. Der Author arbeitet mit Visual C++ 2003. Da werden die verschiedensten LIBS definiert (windows.h ddraw.h dsound.h usw.) Jetzt komme ich auf der 8. Seite nicht weiter =(. Mit anderen IDE's wirds noch problematischer. Jetzt bin ich nämlich total demotiviert aber ich bleibe hartnäckig. Warum ich demotiviert bin? Von 100 total coolen C++ Source Codes, die ich testen wollte haben vllt nur 2 Stück funktioniert (und das waren eher unwichtige). Deswegen regt mich das auch so auf >_>



  • Dabei hilft es mal zu schauen was Microsoft Visual C++ 2005 Express eigentlich mit bringt: Reine Windowsforms . Du musst Dir für den 2005 EE schon das SDK Downloaden.



  • Problem gelöst. Ich lass es trotzdem stehen.

    *Ja gut ich habs gesaugt und installiert aber es kommen Fehler!

    momentaner Code: (nur main.cpp)

    # include <windows.h>
    
    using namespace std;
    
    int main()
    {
    	return 0;
    }
    

    So würde ich das in Dev-C++ schreiben...

    Ich habe bereits eingestellt, das VC++ nach dem SDK "include" Ordner nach den Dateien suchen soll, aber jetzt hat er Probleme mit Dateien die Fehlen. Um genau zu sein: "------ Erstellen gestartet: Projekt: WIN, Konfiguration: Debug Win32 ------
    Verknüpfen...
    LINK : fatal error LNK1104: Datei "uuid.lib" kann nicht geöffnet werden.
    Das Buildprotokoll wurde unter "file://c:\Dokumente und Einstellungen\USER.USER-B0B86FD03D\Eigene Dateien\Visual Studio 2005\Projects\WIN\WIN\Debug\BuildLog.htm" gespeichert.
    WIN - 1 Fehler, 0 Warnung(en)
    ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen =========="*

    €dit: Musste nur noch was bei den LIBS machen! Jetz gehts. Vielen Dank für eure Hilfe!


Anmelden zum Antworten