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.





  • 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;
    

Anmelden zum Antworten