static VOID GetUserGeneralData(HWND hwndDlg, PGENERAL_USER_DATA pUserData) { PUSER_INFO_3 pUserInfo = NULL; SetDlgItemText(hwndDlg, IDC_USER_GENERAL_NAME, pUserData->szUserName); NetUserGetInfo(NULL, pUserData->szUserName, 3, (LPBYTE*)&pUserInfo); SetDlgItemText(hwndDlg, IDC_USER_GENERAL_FULL_NAME, pUserInfo->usri3_full_name); SetDlgItemText(hwndDlg, IDC_USER_GENERAL_DESCRIPTION, pUserInfo->usri3_comment); pUserData->dwFlags = pUserInfo->usri3_flags; pUserData->dwPasswordExpired = pUserInfo->usri3_password_expired; NetApiBufferFree(pUserInfo); UpdateUserOptions(hwndDlg, pUserData, TRUE); }
INT_PTR CALLBACK NewUserDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { PUSER_INFO_3 userInfo; INT nLength; UNREFERENCED_PARAMETER(wParam); userInfo = (PUSER_INFO_3)GetWindowLongPtr(hwndDlg, DWLP_USER); switch (uMsg) { case WM_INITDIALOG: userInfo = (PUSER_INFO_3)lParam; SetWindowLongPtr(hwndDlg, DWLP_USER, lParam); SendDlgItemMessage(hwndDlg, IDC_USER_NEW_NAME, EM_SETLIMITTEXT, 20, 0); UpdateUserOptions(hwndDlg, userInfo, TRUE); break; case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_USER_NEW_NAME: if (HIWORD(wParam) == EN_CHANGE) { nLength = SendDlgItemMessage(hwndDlg, IDC_USER_NEW_NAME, WM_GETTEXTLENGTH, 0, 0); EnableWindow(GetDlgItem(hwndDlg, IDOK), (nLength > 0)); } break; case IDC_USER_NEW_FORCE_CHANGE: userInfo->usri3_password_expired = !userInfo->usri3_password_expired; UpdateUserOptions(hwndDlg, userInfo, FALSE); break; case IDC_USER_NEW_CANNOT_CHANGE: userInfo->usri3_flags ^= UF_PASSWD_CANT_CHANGE; UpdateUserOptions(hwndDlg, userInfo, FALSE); break; case IDC_USER_NEW_NEVER_EXPIRES: userInfo->usri3_flags ^= UF_DONT_EXPIRE_PASSWD; UpdateUserOptions(hwndDlg, userInfo, FALSE); break; case IDC_USER_NEW_DISABLED: userInfo->usri3_flags ^= UF_ACCOUNTDISABLE; break; case IDOK: if (!CheckAccountName(hwndDlg, IDC_USER_NEW_NAME, NULL)) { SetFocus(GetDlgItem(hwndDlg, IDC_USER_NEW_NAME)); SendDlgItemMessage(hwndDlg, IDC_USER_NEW_NAME, EM_SETSEL, 0, -1); break; } if (!CheckPasswords(hwndDlg, IDC_USER_NEW_PASSWORD1, IDC_USER_NEW_PASSWORD2)) { SetDlgItemText(hwndDlg, IDC_USER_NEW_PASSWORD1, TEXT("")); SetDlgItemText(hwndDlg, IDC_USER_NEW_PASSWORD2, TEXT("")); break; } /* Store the user name */ nLength = SendDlgItemMessage(hwndDlg, IDC_USER_NEW_NAME, WM_GETTEXTLENGTH, 0, 0); if (nLength > 0) { userInfo->usri3_name = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, (nLength + 1) * sizeof(WCHAR)); GetDlgItemText(hwndDlg, IDC_USER_NEW_NAME, userInfo->usri3_name, nLength + 1); } /* Store the full user name */ nLength = SendDlgItemMessage(hwndDlg, IDC_USER_NEW_FULL_NAME, WM_GETTEXTLENGTH, 0, 0); if (nLength > 0) { userInfo->usri3_full_name = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, (nLength + 1) * sizeof(WCHAR)); GetDlgItemText(hwndDlg, IDC_USER_NEW_FULL_NAME, userInfo->usri3_full_name, nLength + 1); } /* Store the description */ nLength = SendDlgItemMessage(hwndDlg, IDC_USER_NEW_DESCRIPTION, WM_GETTEXTLENGTH, 0, 0); if (nLength > 0) { userInfo->usri3_comment = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, (nLength + 1) * sizeof(WCHAR)); GetDlgItemText(hwndDlg, IDC_USER_NEW_DESCRIPTION, userInfo->usri3_comment, nLength + 1); } /* Store the password */ nLength = SendDlgItemMessage(hwndDlg, IDC_USER_NEW_PASSWORD1, WM_GETTEXTLENGTH, 0, 0); if (nLength > 0) { userInfo->usri3_password = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, (nLength + 1) * sizeof(WCHAR)); GetDlgItemText(hwndDlg, IDC_USER_NEW_PASSWORD1, userInfo->usri3_password, nLength + 1); } EndDialog(hwndDlg, IDOK); break; case IDCANCEL: EndDialog(hwndDlg, IDCANCEL); break; } break; default: return FALSE; } return TRUE; }
INT_PTR CALLBACK UserGeneralPageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { PGENERAL_USER_DATA pUserData; UNREFERENCED_PARAMETER(lParam); UNREFERENCED_PARAMETER(wParam); UNREFERENCED_PARAMETER(hwndDlg); pUserData= (PGENERAL_USER_DATA)GetWindowLongPtr(hwndDlg, DWLP_USER); switch (uMsg) { case WM_INITDIALOG: pUserData = (PGENERAL_USER_DATA)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(GENERAL_USER_DATA) + lstrlen((LPTSTR)((PROPSHEETPAGE *)lParam)->lParam) * sizeof(TCHAR)); lstrcpy(pUserData->szUserName, (LPTSTR)((PROPSHEETPAGE *)lParam)->lParam); SetWindowLongPtr(hwndDlg, DWLP_USER, (INT_PTR)pUserData); GetUserGeneralData(hwndDlg, pUserData); break; case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_USER_GENERAL_FULL_NAME: case IDC_USER_GENERAL_DESCRIPTION: if (HIWORD(wParam) == EN_CHANGE) PropSheet_Changed(GetParent(hwndDlg), hwndDlg); break; case IDC_USER_GENERAL_FORCE_CHANGE: pUserData->dwPasswordExpired = !pUserData->dwPasswordExpired; UpdateUserOptions(hwndDlg, pUserData, FALSE); PropSheet_Changed(GetParent(hwndDlg), hwndDlg); break; case IDC_USER_GENERAL_CANNOT_CHANGE: pUserData->dwFlags ^= UF_PASSWD_CANT_CHANGE; UpdateUserOptions(hwndDlg, pUserData, FALSE); PropSheet_Changed(GetParent(hwndDlg), hwndDlg); break; case IDC_USER_GENERAL_NEVER_EXPIRES: pUserData->dwFlags ^= UF_DONT_EXPIRE_PASSWD; UpdateUserOptions(hwndDlg, pUserData, FALSE); PropSheet_Changed(GetParent(hwndDlg), hwndDlg); break; case IDC_USER_GENERAL_DISABLED: pUserData->dwFlags ^= UF_ACCOUNTDISABLE; PropSheet_Changed(GetParent(hwndDlg), hwndDlg); break; case IDC_USER_GENERAL_LOCKED: pUserData->dwFlags ^= UF_LOCKOUT; PropSheet_Changed(GetParent(hwndDlg), hwndDlg); break; } break; case WM_NOTIFY: if (((LPPSHNOTIFY)lParam)->hdr.code == PSN_APPLY) { SetUserGeneralData(hwndDlg, pUserData); return TRUE; } break; case WM_DESTROY: HeapFree(GetProcessHeap(), 0, pUserData); break; } return FALSE; }