Zdravím,
mám vytvořený editbox a checkbox:
edit5 = CreateWindow(TEXT("EDIT"), TEXT(""), WS_VISIBLE | WS_CHILD | ES_PASSWORD, RESx2 / 2 - 60, 30 + 35 + 35, 120, 15, hwnd2, (HMENU)ID_EDIT5, NULL, NULL);
checkbox2 = CreateWindow(TEXT("Button"), TEXT("Show Password"), BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE, RESx2 / 2 - 60, 17 + 35 + 35 + 35 + 35, 13, 13, hwnd2, (HMENU)ID_CHECKBOX2, NULL, NULL);
SendMessage(checkbox2, WM_SETFONT, (WPARAM)font, TRUE);
Defaultně je checkbox nezaškrtnutý.
Když uživatel zadá heslo do edit5, chtěl bych, aby se zobrazovaly pouze tečky (maska hesla) a když zaškrtne checkbox, tak aby se zobrazil text. To zatím funguje, ale když uživatel znovu checkbox odškrtne, chtěl bych, aby se heslo znovu zamaskovalo tak, jak bylo.
if(uMsg == WM_COMMAND && LOWORD(wParam) == ID_CHECKBOX2)
{
HWND hwnd2 = (HWND)lParam;
int state = SendMessage(hwnd2, BM_GETCHECK, wParam, lParam);
if(state == BST_CHECKED)
{
SendMessage(edit5, EM_SETPASSWORDCHAR, FALSE, FALSE);
SetFocus(edit5);
}
else
{
LONG style = GetWindowLong(edit5, GWL_STYLE);
SetWindowLong(edit5, GWL_STYLE, style & ES_PASSWORD);
ShowWindow(edit5, 1);
}
}
Zkoušel jsem i SendMessage(edit5, EM_SETPASSWORDCHAR, (WPARAM)'•', FALSE); ale to mi zamaskuje jinak, než původně - nečitelně a vypadá to jinak.
Předem díky za pomoc ;-)