ES_PASSWORD nachträglich setzen



  • Hallo,

    Ich möchte, das man in meiner App das Passwort-Feld zu einem nicht Passwort-Feld machen kann, indem man eine Checkbox checked, auch wie man es über EM_SETPASSWORDCHAR rückgängig macht weiß ich. Das Problem ist, dass meine Anwendung durch ES_PASSWORD Kreise als Passwordchar nimmt, durch EM_SETPASSWORDCHAR kann ich diese allerdings nichtmehr nutzen :O. Ich weiß, dass es gehen muss, der WLAN-Verbindungsmanager (unter Win7) kann es auch 😃

    Danke



  • Wenn das Editfeld ein Unicodefenster ist, kannst du mit EM_SETPASSWORDCHAR arbeiten, indem du vorher den Standardwert mit EM_GETPASSWORDCHAR in einem wchar_t speicherst.

    Falls das nicht der Fall ist, bleibt dir imho nur der Weg, den Text und Position des Controls zu speichern, das Control zu zerstören und ein neues zu erzeugen.


  • Mod

    Ich denke auch, dass Du ein neues Control erzeugen musst.



  • Ich habe gerade einmal ausprobiert, einfach mit den W-Varianten zu arbeiten. Klappt:

    case WM_COMMAND:
    	switch(LOWORD(wParam))
    	{
    		case /*ID der Checkbox*/:
    		{
    			static wchar_t defPasswordChar = SendDlgItemMessageW(hwnd, /*ID des Editfensters*/,EM_GETPASSWORDCHAR, 0, 0);
    
    			if(IsDlgButtonChecked(hwnd, /*ID der Checkbox*/))
    			{
    				SendDlgItemMessageW(hwnd, /*ID des Editfensters*/, EM_SETPASSWORDCHAR, defPasswordChar, 0);
    			}
    			else
    			{
    				SendDlgItemMessageW(hwnd, /*ID des Editfensters*/, EM_SETPASSWORDCHAR, 0, 0);
    			}
    		}
    	}
    	break;
    

Anmelden zum Antworten