Problem mit Style ES_PASSWORD in Editfeld



  • Hallo,

    ich möchte zur Laufzeit meines Programmes den Style eines Editfeldes auf ES_PASSWORD setzen. Jetzt hab ich in der MSDN gelesen, daß das Setzten des Styles den Aufruf von SetWindowPos nachsich ziehen muss, also sieht mein Code folgendermassen aus:

    DWORD		style;
    
    	style = GetWindowLong(hEdit, GWL_STYLE);
    	style |= ES_PASSWORD;
    	SetWindowLong(hEdit, GWL_STYLE, style);
    	SetWindowPos(hEdit, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED);
    

    Leider ist die Eingabe nach dem Ändern des Styles immer noch sichtbar und nicht mit *** gekennzeichnet. Um etwaige Fehler einzugrenzen hab ich mir den Wert für den Style vor und nach der Änderung in einem Hilfsfenster anzeigen lassen und diese Werte entsprechen genau den Werten die zutreffend sein sollten. Testhalber hab ich im Resourceneditor mal den Passwordstyle von Anfang an gesetzt und dann klappt es auch mit der *** Eingabe. Hat jemand eine Idee was ich da falsch mache? Bin für jede Hilfe dankbar.



  • SetWindowLong(hPass, GWL_STYLE, (LONG)GetWindowLong(hPass, GWL_STYLE) | ES_PASSWORD);
    SendMessage(hPass, EM_SETPASSWORDCHAR, (WPARAM)_T('*'), 0);
    InvalidateRect(hPass,0,0);
    


  • Ah danke hat geklappt


Anmelden zum Antworten