Nach Abfrage einen Text in den Edit schreiben.....
-
Hi Leute,
und zwar bin ich zurzeit an einem hTml-Editor V 1.00 Beta dran.
Man soll eifach auf verschiedene Button haben, die zum abspeichern in der Edit haben sollen.
Das heisst wenn ich jetzt den Button "Deklaration Header" drücke, soll natürlich die Abfrage gestartet werden und ein Text in den Edit geschrieben werden, in diesem Falle also die Header Deklaration.
Aber auch schon gleich hier bleib ich kleben.
Ich weiss nicht, wie ich etwas in den Edit Control schreiben lasse.
Also ich mach die V 1.00 Beta als OpenSource.
Allerdings werden die anderen V 1.02 - V 1.05 nicht Opensource sondern Closed Source.
Ab V 1.06 - V 1.07 gibt es wieder den OpenSource.
Also ich stell jetzt shconmal den Source Code heir rein, damit ihr euch ein Bild machen könnt.
Zur Hilfe anderer zuschauer hab ich noch gleich Comments mit in den Code geschriben (s. //).Code :
------------------------------------------------------------------#include <windows.h> LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); //Handle für's Fenster const char szAppName[] = "Html Editor V 1.00"; //Variable für den Namen des Programmes int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, //Initialisierung PSTR szCmdLine,int iCmdShow) { HWND hWnd; //Deklaration MSG msg; WNDCLASS wc; wc.lpfnWndProc = WndProc; wc.hInstance = hInstance; wc.style = CS_HREDRAW | CS_VREDRAW; wc.lpszClassName = szAppName; wc.lpszMenuName = NULL; wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); wc.hIcon = LoadIcon(NULL,IDI_APPLICATION); wc.hCursor = LoadCursor(NULL,IDC_ARROW); wc.cbClsExtra = 0; wc.cbWndExtra = 0; RegisterClass(&wc); //Wir Initialisieren das Fenster hWnd = CreateWindow(szAppName, //Der Befehl CreateWindow wird von der hWnd aus gestartet "Html Editor", //Name des Fensters WS_OVERLAPPEDWINDOW, //Sollte man generell machen, damit sich das Fenster überlappen lässt CW_USEDEFAULT, //Gewöhnliche Koordinaten nehmen CW_USEDEFAULT, 1000, //Breite des Fensters 800, // Höhe des Fenster's NULL, NULL, hInstance, NULL); ShowWindow(hWnd, iCmdShow); //Fenster darstellen UpdateWindow(hWnd); // Fenster immer neu aufladen while(GetMessage(&msg,NULL, 0, 0)) //weitere Registrierung des Fenster, ins besondere für die Abfrage { TranslateMessage(&msg); //Übersetzt das Programm DispatchMessage(&msg); } return msg.wParam; } LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam) // weitere Deklaration { static HWND hButton; // Die Static für den Button erstellen, in unserem Falle für das Edit-Control static HWND hButton_1; static HWND hButton_2; static HWND hButton_3; PAINTSTRUCT ps; HDC hDC; switch(message) // Abfrage wird gestartet, alle Message's vom FEnster landen hier zum Schluss { case WM_CREATE: { hButton = CreateWindow( "edit", "", WS_CHILD | WS_VISIBLE | ES_MULTILINE | ES_AUTOVSCROLL, 150,150,670,450, hWnd, NULL, ((LPCREATESTRUCT) lParam) -> hInstance, NULL); hButton = CreateWindow( "button", "Initialisierung Header", WS_CHILD | WS_VISIBLE, 842,0,150,20, hWnd, NULL, ((LPCREATESTRUCT) lParam) -> hInstance, NULL); return 0; } case WM_PAINT: { hDC = BeginPaint(hWnd,&ps); const char szText1[] = "Html Projekt-Source Code :"; TextOut(hDC, 150, 130, szText1, sizeof(szText1) - 1); EndPaint(hWnd,&ps); return 0; } case WM_DESTROY: // Destroy = Zerstören, wir sagen dem Programm also das wenn etwas passiert, das Programm eine Message zum CloseWindow läuft { PostQuitMessage(0); // Diese NAchricht läuft nach Abfrage zum Schluss und closet das Fenster return 0; } } return DefWindowProc(hWnd,message,wParam,lParam); // Hier wird das Fenster aufgelöst }----------------------------------------------------
Ich bin dankbar für jede mögliche Antworten und Tips.
NAtürlich danke ich schonmal allen im Vorraus.
-
Textinhalte unter Windows nur teilweise manipulieren ist tatsächlich eine Kunst. Am besten verwendet du EM_SETSEL und EM_REPLACESEL. Im Übrigens solltest du für deine Applikation doch lieber ein RichEdit-Control in Betracht ziehen (ändert zwar nichts an der Textmanipulation, aber du kannst damit schönere Dinge machen).
-
Hallo a(^^),
erstmal danke für deine Info's !
Aber ich bin noch noob und ich versteh grad nicht so ganz wie du das meinst, könntest du vlt. eine kleines Abfragen-Beispiel machen ?
Ich würde dir die Füße dafür küssen !
Und noch eine Frage an alle gerichtet.
Mein Editor soll Deklarationen,-Definitionen,-und manche KLassen erkennen,
ist es möglich das ich in einer Abfrage starte, wenn zb. eine Header kommt
<html>, das dies dann automatisch erkannt wird und blau geschribenen wird.
Kann ich das nun in einer Abfrage und SetTextColor verändern oder geht das nicht ?
Danke im Vorraus.
-
Hier hast du was zu lesen:
http://msdn2.microsoft.com/en-us/library/ms651760.aspx
http://msdn2.microsoft.com/en-us/library/bb509445.aspx#text_formatting
http://msdn2.microsoft.com/en-us/library/ms672103.aspx
http://msdn2.microsoft.com/en-us/library/ms672090.aspx
-
Danke !
Meint er mit Rich Edit Control das ich ein zweites EditFeld mit einbaue oder wie ?
-
Ich versteh nicht ganz, wie man auf Abfrage den Text speichert.
Bitte um Hilfe 311-479-266
-
Er meint das du statt nem normalen Edit-Control lieber ein RichEdit-Control nehmen solltest.
Das kann nämlich unterschiedliche Schriftformatierungen, ändern der Textfarbe, Textausrichtungen, es lassen sich über OLE Bilder einbetten, etc.
Gegenüber RichEdit ist das normale Edit-Control ne arme Wurst
-
Und wie ist so ein Rich Edit Control aufgebaut ?
Muss man das auf irgendeiner Art und Weise definieren oder deklarieren?
Aber das wichtigste was ich nicht erstehe, wie funzt das jetzt mit dem Befehl, das nach einer Abfrage in der Edit Control gespeichert wird ?
Hab das mal so aus gutem Wissen ausprobiert, was aber auch nicht funktioniert :
________________string::text;
text = "Blabla.";
SendMessage(hWnd, WM_SETTEXT, NULL, (LPARAM)text.c_str());_______________
das klappt aber auch nicht

-
Und wie ist so ein Rich Edit Control aufgebaut ?
Muss man das auf irgendeiner Art und Weise definieren oder deklarieren?
Aber das wichtigste was ich nicht erstehe, wie funzt das jetzt mit dem Befehl, das nach einer Abfrage in der Edit Control gespeichert wird ?
Hab das mal so aus gutem Wissen ausprobiert, was aber auch nicht funktioniert :
________________string::text;
text = "Blabla.";
SendMessage(hWnd, WM_SETTEXT, NULL, (LPARAM)text.c_str());_______________
das klappt aber auch nicht

-
Schau dir doch erstmal die Links von tenchou an

-
Daraus werd ich nicht schlau.
Da steht ja nicht mal ein beispel
-
msdn schrieb:
To create a rich edit control, call the CreateWindowEx function, specifying the rich edit window class. If you are using Microsoft Rich Edit 1.0 (Riched32.dll), specify "RichEdit" for the window class parameter. If you are using Rich Edit 2.0 or later (Riched20.dll), specify RICHEDIT_CLASS for the window class parameter.
...dafür wäre nen Beispiel absoluter Overkill

-
Also das Rich Edit Control hat mich eigentlich weniger interessiert, eigentlich wollte ich wissen wie man was nach einer Abfrage in den Edit schreibt.
-
SetWindowText()
-
Ok Danke.
Aber wie setze ich SetWindowText() in einer Abfrage ein ?
braucht man auch hier eine Structur oder ne definition !?
Bin dankbar für jede Antwort.
Also ich habe das mal so in einer ganz einfachen switch Abfrage versucht.
Hat aber nicht so ganz geklappt^^.
Also hier mein Versuch :case WM_COMMAND: { if(lParam ==(LPARAM)hButton_1) { hButton_1->SetWindowText("Neuer Text"); } return 0; }
-
-
Das ist doch ein Button Tutorial und kein SetWindowText() Befehl.

-
Ich kapier des einfach nicht.
Wie geht das ?
Ich hab es schon mit buffer'n versucht aber die kann ich nicht nochmal in einer switch Abfragen, weil man die nur da an ort und stelle deklaieren kann.
Also wie muss des bei SetWindowTExt() ausshauen ?
-
Was meinst du?
-
case muss einen block öffnen um variable zu deklarieren
case WM_WURSTBROT: { } break;