edit feldneu zeichnen



  • Hallo , habe mal angefangen mich mit edit boxen zu beschätigen allerdings taucht
    folgendes Problem auf.

    #define ed1 1
    
    static HWND hwnded;
    

    Ich erstelle mein erste edit feld:

    switch (message)                  /* handle the messages */
        {   case WM_CREATE:
    	   {		  hwnded = CreateWindowEx(WS_EX_CLIENTEDGE ,"edit", NULL,WS_CHILD | WS_VISIBLE | ES_LEFT|ES_AUTOHSCROLL|ES_AUTOVSCROLL|ES_MULTILINE,
    				  0, 0, 700, 250, hwnd, (HMENU) ed1,
    				  ((LPCREATESTRUCT) lParam) -> hInstance, NULL) ;
    
                      SendMessage(hwnded, WM_SETFONT,(WPARAM)GetStockObject(DEFAULT_GUI_FONT),0);
    	     }
    

    So in der zwischenzeit wird das ganze beschreiben und später möchte ich das ganze neu zeichnen :

    case IDM_DRAWNEW:
                        {
                                    DestroyWindow(hwnded);
    			                    hwnded = CreateWindowEx(WS_EX_CLIENTEDGE ,"edit", NULL,WS_CHILD | WS_VISIBLE | ES_LEFT|ES_AUTOHSCROLL|ES_AUTOVSCROLL|ES_MULTILINE,
    				 0, 0, 700, 250, hwnd, (HMENU) ed1,
    				  ((LPCREATESTRUCT) lParam) -> hInstance, NULL) ;
                                    SendMessage(hwnded, WM_SETFONT,(WPARAM)GetStockObject(DEFAULT_GUI_FONT),0);
    			        }
                   break;
    

    Der Compiler meldet keine Fehler doch wenn ich das programm starte und das Feld neu zeichnen lasse kommt der windows fehler:
    "ad.exe fubktioniert nicht mehr richtig"

    Hoffe jemand kann mir sagen wieso der Fehler kommt.

    Danke



  • Editfelder werden von Windows in der class "edit" selbst verwaltet. Sobald sich (durch Eingabe) darin etwas ändert, macht das Windows allein. Ein eigenes 'Neuzeichnen' ist nicht erforderlich.


Anmelden zum Antworten