Edit-Child - Text unlöschbar machen?



  • Moin,

    wie kann ich bei einem Edit-Child den Text für Benutzer zwar kopierbar aber nicht löschbar machen?

    Wenn es eine einfachere Ausgabe für ganze Texte gibt - ruhig erwähnen.

    Bitte mit Code-Bsp's.

    Euer ItsNotYou



  • Mit dem Style ES_READONLY sollte das gehen. beim Createn des Edit mit angeben.
    MfG schirrmie



  • ...und hier der Schnipsel 🤡:

    HWND hEdit=CreateWindow("edit","Readonlytext",WS_CHILD|WS_VISIBLE|ES_READONLY|
                            WS_BORDER,100,50,100,20,hWnd,NULL,
                            ((LPCREATESTRUCT)lParam)->hInstance,NULL);
    


  • Wie kriegt man mit ES_READONLY Style den weißen Hintergrund der Editbox wieder hin?



  • @Blackhawk

    geht auch jederzeit mit:

    SendMessage(hEdit, EM_SETREADONLY, TRUE, 0);
    

    schonmal danke für die hilfe, die frage von chaosdiener würde mich aber auch interresieren.

    Euer ItsNotYou



  • Es sendet WM_CTLCOLORSTATIC an das Elternfenster, wenn es Readonly ist. Als return-Wert darauf erwartet es ein Handle zu einem Pinsel.

    Folgender Code bewirkt, dass das edit immer gleich ausssieht, egal ob readonly, oder nicht (es werden allerdings die Farben aller edits und statics verändert, alternativ kann über lParam in den CTLCOLOR-Nachrichten das Handle abgefragt und bedingt die Fraben geändert werden):

    static HBRUSH hBrush=0;
    //....
    	case WM_CREATE:
    		hBrush=CreateSolidBrush(RGB(255, 128, 64));
    		CreateWindow(/* ...edit erstellen... */);
    		//...
    		return 0;
    
    //....
    
    	case WM_CTLCOLORSTATIC:
    		SetBkMode((HDC)wParam, TRANSPARENT);
    		SetTextColor((HDC)wParam, RGB(64, 128, 255));
    		return (long)hBrush;
    
    	case WM_CTLCOLOREDIT:
    		SetBkMode((HDC)wParam, TRANSPARENT);
    		SetTextColor((HDC)wParam, RGB(64, 128, 255));
    		return (long)hBrush;
    
    	case WM_DESTROY:
    		if(hBrush)DeleteObject(hBrush);
    		//...
    		return 0;
    
    //....
    

Anmelden zum Antworten