Wenn du das Edit mit subclassed und WM_PAINT überscheibst, müsstest du den Hintergrund SetBkMode transparent bekommen. Übrignes hast du viele überflüssige globale Variablen. Zum einen nutzt du sie nicht und zum anderen kannst du sie dir mit GetDlgItem holen, wenn du sie brauchst.
Und wenn du die Checkbox mit BS_AUTOCHECKBOX erzeugst, brauchst du dich nicht um den Status selber zu kümmern, das macht Windows dann für dich.
Noch was, wenn du Dialogressourcen nutzt, dann kannst du dir mit einem Ressourceneditor dein Fenster/Dialog einfach zusammenklicken und brauchst nicht alles mühsam zur Laufzeit erstellen.
Wenn du deine Nachrichtenchleife so erweiterst:
Delphi-Quellcode:
{Fenster erzeugen}
hAppWnd := CreateWindowEx(0, ClassName, AppName, WS_CAPTION or WS_VISIBLE or WS_SYSMENU or WS_MINIMIZEBOX,
Integer(CW_USEDEFAULT), Integer(CW_USEDEFAULT), WindowWidth, WindowHeight, 0, 0, hInstance, nil);
{Nachrichtenschleife aufrechterhalten}
while GetMessage(msg, 0, 0, 0) do
begin
if IsDialogMessage(hAppWnd, msg) = FALSE then
begin
TranslateMessage(msg);
DispatchMessage(msg);
end;
end;
Und den Steuerelementen den Stil WS_TABSTOP gibst, kann man auch mit der Tabulatortaste durch die Steuerelemente springen.
Ach, es nervt, dass die Checkbox, ob das Passwort in die Zwischenablage kopiert werden soll, standardmäßig aktiviert ist.