Syntaxhervorhebung
-
Hallo bin neu hier und
ziemlicher Anfänger in c/c++. Möchte aber
einen Editor für .uc dateien (UnrealScript für die unreal engine)
machen.Den Texteditor habe ich, brauche nur noch Syntaxhervorhebung
und das der keine .txt dateien öffnet sondern .uc dateien.Habe erstmal das text - Editor beispiel von Bloodshed dev-cpp genommen.
Das besteht aus-Menu.rc
-Main.c
-Main.hhier die quellcodes:
Menu.rc :
#include "Main.h" MAINMENU MENU { POPUP "&File" { MENUITEM "&Open...", CM_FILE_OPEN MENUITEM "Save &As...", CM_FILE_SAVEAS MENUITEM SEPARATOR MENUITEM "E&xit", CM_FILE_EXIT } POPUP "&Help" { MENUITEM "&About", CM_ABOUT } }Main.c :
#include <windows.h> #include "Main.h" static char g_szClassName[] = "MyWindowClass"; static HINSTANCE g_hInst = NULL; #define IDC_MAIN_TEXT 1001 BOOL LoadFile(HWND hEdit, LPSTR pszFileName) { HANDLE hFile; BOOL bSuccess = FALSE; hFile = CreateFile(pszFileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, 0); if(hFile != INVALID_HANDLE_VALUE) { DWORD dwFileSize; dwFileSize = GetFileSize(hFile, NULL); if(dwFileSize != 0xFFFFFFFF) { LPSTR pszFileText; pszFileText = (LPSTR)GlobalAlloc(GPTR, dwFileSize + 1); if(pszFileText != NULL) { DWORD dwRead; if(ReadFile(hFile, pszFileText, dwFileSize, &dwRead, NULL)) { pszFileText[dwFileSize] = 0; // Null terminator if(SetWindowText(hEdit, pszFileText)) bSuccess = TRUE; // It worked! } GlobalFree(pszFileText); } } CloseHandle(hFile); } return bSuccess; } BOOL SaveFile(HWND hEdit, LPSTR pszFileName) { HANDLE hFile; BOOL bSuccess = FALSE; hFile = CreateFile(pszFileName, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0); if(hFile != INVALID_HANDLE_VALUE) { DWORD dwTextLength; dwTextLength = GetWindowTextLength(hEdit); if(dwTextLength > 0)// No need to bother if there's no text. { LPSTR pszText; pszText = (LPSTR)GlobalAlloc(GPTR, dwTextLength + 1); if(pszText != NULL) { if(GetWindowText(hEdit, pszText, dwTextLength + 1)) { DWORD dwWritten; if(WriteFile(hFile, pszText, dwTextLength, &dwWritten, NULL)) bSuccess = TRUE; } GlobalFree(pszText); } } CloseHandle(hFile); } return bSuccess; } BOOL DoFileOpenSave(HWND hwnd, BOOL bSave) { OPENFILENAME ofn; char szFileName[MAX_PATH]; ZeroMemory(&ofn, sizeof(ofn)); szFileName[0] = 0; ofn.lStructSize = sizeof(ofn); ofn.hwndOwner = hwnd; ofn.lpstrFilter = "Text Files (*.txt)\0*.txt\0All Files (*.*)\0*.*\0\0"; ofn.lpstrFile = szFileName; ofn.nMaxFile = MAX_PATH; ofn.lpstrDefExt = "txt"; if(bSave) { ofn.Flags = OFN_EXPLORER | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT; if(GetSaveFileName(&ofn)) { if(!SaveFile(GetDlgItem(hwnd, IDC_MAIN_TEXT), szFileName)) { MessageBox(hwnd, "Save file failed.", "Error", MB_OK | MB_ICONEXCLAMATION); return FALSE; } } } else { ofn.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY; if(GetOpenFileName(&ofn)) { if(!LoadFile(GetDlgItem(hwnd, IDC_MAIN_TEXT), szFileName)) { MessageBox(hwnd, "Load of file failed.", "Error", MB_OK | MB_ICONEXCLAMATION); return FALSE; } } } return TRUE; } LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) { switch(Message) { case WM_CREATE: CreateWindow("EDIT", "", WS_CHILD | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL | ES_MULTILINE | ES_WANTRETURN, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hwnd, (HMENU)IDC_MAIN_TEXT, g_hInst, NULL); SendDlgItemMessage(hwnd, IDC_MAIN_TEXT, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), MAKELPARAM(TRUE, 0)); break; case WM_SIZE: if(wParam != SIZE_MINIMIZED) MoveWindow(GetDlgItem(hwnd, IDC_MAIN_TEXT), 0, 0, LOWORD(lParam), HIWORD(lParam), TRUE); break; case WM_SETFOCUS: SetFocus(GetDlgItem(hwnd, IDC_MAIN_TEXT)); break; case WM_COMMAND: switch(LOWORD(wParam)) { case CM_FILE_OPEN: DoFileOpenSave(hwnd, FALSE); break; case CM_FILE_SAVEAS: DoFileOpenSave(hwnd, TRUE); break; case CM_FILE_EXIT: PostMessage(hwnd, WM_CLOSE, 0, 0); break; case CM_\1: MessageBox (NULL, "File Editor for Windows !\n Using the Win32 API" , "About...", 0); } break; case WM_CLOSE: DestroyWindow(hwnd); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hwnd, Message, wParam, lParam); } return 0; } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { WNDCLASSEX WndClass; HWND hwnd; MSG Msg; g_hInst = hInstance; WndClass.cbSize = sizeof(WNDCLASSEX); WndClass.style = 0; WndClass.lpfnWndProc = WndProc; WndClass.cbClsExtra = 0; WndClass.cbWndExtra = 0; WndClass.hInstance = g_hInst; WndClass.hIcon = LoadIcon(NULL, IDI_APPLICATION); WndClass.hCursor = LoadCursor(NULL, IDC_ARROW); WndClass.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); WndClass.lpszMenuName = "MAINMENU"; WndClass.lpszClassName = g_szClassName; WndClass.hIconSm = LoadIcon(NULL, IDI_APPLICATION); if(!RegisterClassEx(&WndClass)) { MessageBox(0, "Window Registration Failed!", "Error!", MB_ICONEXCLAMATION | MB_OK | MB_SYSTEMMODAL); return 0; } hwnd = CreateWindowEx( WS_EX_CLIENTEDGE, g_szClassName, "File Editor Example Program", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 320, 240, NULL, NULL, g_hInst, NULL); if(hwnd == NULL) { MessageBox(0, "Window Creation Failed!", "Error!", MB_ICONEXCLAMATION | MB_OK | MB_SYSTEMMODAL); return 0; } ShowWindow(hwnd, nCmdShow); UpdateWindow(hwnd); while(GetMessage(&Msg, NULL, 0, 0)) { TranslateMessage(&Msg); DispatchMessage(&Msg); } return Msg.wParam; }Main.h
#define CM_FILE_SAVEAS 9072 #define CM_FILE_EXIT 9071 #define CM_FILE_OPEN 9070 #define CM_ABOUT 9069Kann mir vllt. jemand ein
beispiel für eine Syntaxhervorhebung
posten das ich nur noch die codes und
die farben ändern muss? Und mir schreiben wie
ich das da einfüge?Und kann mir jemand sagen wie ich das machen kann das
der .uc dateien öffnet und keine txt dateien?Hoffe ich habe ins richtige Forum gepostet

und danke im voraus für alle Antworten!!
Hoffe mir kann jemand helfenAlso wie gesagt, das text programm ist ein
beispiel von Bloodshed Dev-cpp, findet ihr unter
\Dev-Cpp\Examples\FileEditor falls jemand das Programm hat.
-
Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Rund um die Programmierung in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Lukas.. schrieb:
Hallo bin neu hier und
ziemlicher Anfänger in c/c++. Möchte aber
einen Editor für .uc dateien (UnrealScript für die unreal engine)
machen.Den Texteditor habe ich, brauche nur noch Syntaxhervorhebung
und das der keine .txt dateien öffnet sondern .uc dateien.Habe erstmal das text - Editor beispiel von Bloodshed dev-cpp genommen.
Das besteht aus
[...]
Kann mir vllt. jemand ein
beispiel für eine Syntaxhervorhebung
posten das ich nur noch die codes und
die farben ändern muss? Und mir schreiben wie
ich das da einfüge?Und kann mir jemand sagen wie ich das machen kann das
der .uc dateien öffnet und keine txt dateien?Programmieren 2008: Man kopiert sich Code den man überhaupt nicht versteht und postet ihn dann in einem Forum, damit andere den Rest der Arbeit für einen machen...

-
warum immer alles selber machen

[url]
http://notepad-plus.sourceforge.net/de/site.htm[/url] :xmas2:
-
Nein ist nicht so das ich nix versteh, bin halt noch
anfänger. Das is ja längst nicht alles was geändert wird, das
ist nur das was ich nicht kann.
Und ich muss den selber machen weil ich bis jetzt
keinen Editor gefunden hat der Syntaxhervorhebung für
UnrealScript hat.
-
Jo, würde txt++ zustimmen und dir empfehlen, Notepad++ zu nehmen. Da kann man relativ einfach neue Sprachen definieren.
Und dann fängst du mit was einfacherem an. Sonst wird das nämlich erfahrungsgemäß nichts

-
mad_martin schrieb:
Jo, würde txt++ zustimmen und dir empfehlen, Notepad++ zu nehmen. Da kann man relativ einfach neue Sprachen definieren.
Und dann fängst du mit was einfacherem an. Sonst wird das nämlich erfahrungsgemäß nichts

Ja ok, suche dann mal nach tutorials dafür. Danke für eure Hilfe!
Edit: Habe jetzt gesucht aber nix brauchbares gefunden an Tutorials.
Wenn jemand ein leicht verständliches Tutorial weiß, bitte link
posten. Danke im voraus.
-
Einen Editor zu bauen mit Syntaxcheck gehört mit Sicherheit nicht zu Dingen die Anfänger anzuraten sind. Das ist wirklich komplex!
Insofern findest Du garantiert kein Tutorial sondern höchstens fertigen Code.
-
Meinen Vorrednern kann ich im Prinzip nur zustimmen.
Es gibt jedoch ein Tutorial als absolute Ausnahme:
"Design and Implementation of a Win32 Text Editor" http://www.catch22.net/tuts/neatpadDieses mehrteilige Tutorial ist zwar leicht verständlich, setzt aber weiterhin grundlegende Vorkenntnisse des Win32 API voraus!
Martin
-
Mmacher schrieb:
Meinen Vorrednern kann ich im Prinzip nur zustimmen.
Es gibt jedoch ein Tutorial als absolute Ausnahme:
"Design and Implementation of a Win32 Text Editor" http://www.catch22.net/tuts/neatpadDieses mehrteilige Tutorial ist zwar leicht verständlich, setzt aber weiterhin grundlegende Vorkenntnisse des Win32 API voraus!
Martin
Danke. Ich kann ja mal gucken wie weit ich komme,
ich lern ja auch schön weiter, also werd ich das vllt.
bald können