Rob Shearman : credui: Split CredDialogProc out into separate functions.
Alexandre Julliard
julliard at winehq.org
Mon Nov 19 08:19:39 CST 2007
Module: wine
Branch: master
Commit: bb529a493848a6fa0b98ca7fca4900d732c418f7
URL: http://source.winehq.org/git/wine.git/?a=commit;h=bb529a493848a6fa0b98ca7fca4900d732c418f7
Author: Rob Shearman <rob at codeweavers.com>
Date: Sat Nov 17 17:30:39 2007 +0000
credui: Split CredDialogProc out into separate functions.
---
dlls/credui/credui_main.c | 160 ++++++++++++++++++++++++---------------------
1 files changed, 85 insertions(+), 75 deletions(-)
diff --git a/dlls/credui/credui_main.c b/dlls/credui/credui_main.c
index 29fe574..03550ba 100644
--- a/dlls/credui/credui_main.c
+++ b/dlls/credui/credui_main.c
@@ -130,6 +130,89 @@ struct cred_dialog_params
DWORD dwFlags;
};
+static BOOL CredDialogInit(HWND hwndDlg, struct cred_dialog_params *params)
+{
+ SetWindowLongPtrW(hwndDlg, DWLP_USER, (LONG_PTR)params);
+ if (params->pszMessageText)
+ SetDlgItemTextW(hwndDlg, IDC_MESSAGE, params->pszMessageText);
+ else
+ {
+ WCHAR format[256];
+ WCHAR message[256];
+ LoadStringW(hinstCredUI, IDS_MESSAGEFORMAT, format, sizeof(format)/sizeof(format[0]));
+ snprintfW(message, sizeof(message)/sizeof(message[0]), format, params->pszTargetName);
+ SetDlgItemTextW(hwndDlg, IDC_MESSAGE, message);
+ }
+ SetDlgItemTextW(hwndDlg, IDC_USERNAME, params->pszUsername);
+ SetDlgItemTextW(hwndDlg, IDC_PASSWORD, params->pszPassword);
+
+ if (params->pszUsername[0])
+ SetFocus(GetDlgItem(hwndDlg, IDC_PASSWORD));
+ else
+ SetFocus(GetDlgItem(hwndDlg, IDC_USERNAME));
+
+ if (params->pszCaptionText)
+ SetWindowTextW(hwndDlg, params->pszCaptionText);
+ else
+ {
+ WCHAR format[256];
+ WCHAR title[256];
+ LoadStringW(hinstCredUI, IDS_TITLEFORMAT, format, sizeof(format)/sizeof(format[0]));
+ snprintfW(title, sizeof(title)/sizeof(title[0]), format, params->pszTargetName);
+ SetWindowTextW(hwndDlg, title);
+ }
+
+ if (params->dwFlags & (CREDUI_FLAGS_DO_NOT_PERSIST|CREDUI_FLAGS_PERSIST))
+ ShowWindow(GetDlgItem(hwndDlg, IDC_SAVE), SW_HIDE);
+ else if (params->fSave)
+ CheckDlgButton(hwndDlg, IDC_SAVE, BST_CHECKED);
+
+ return FALSE;
+}
+
+static void CredDialogCommandOk(HWND hwndDlg, struct cred_dialog_params *params)
+{
+ HWND hwndUsername = GetDlgItem(hwndDlg, IDC_USERNAME);
+ LPWSTR user;
+ INT len;
+ INT len2;
+
+ len = GetWindowTextLengthW(hwndUsername);
+ user = HeapAlloc(GetProcessHeap(), 0, (len + 1) * sizeof(WCHAR));
+ GetWindowTextW(hwndUsername, user, len + 1);
+
+ if (!user[0])
+ {
+ HeapFree(GetProcessHeap(), 0, user);
+ return;
+ }
+
+ if (!strchrW(user, '\\') && !strchrW(user, '@'))
+ {
+ INT len_target = strlenW(params->pszTargetName);
+ memcpy(params->pszUsername, params->pszTargetName,
+ min(len_target, params->ulUsernameMaxChars) * sizeof(WCHAR));
+ if (len_target + 1 < params->ulUsernameMaxChars)
+ params->pszUsername[len_target] = '\\';
+ if (len_target + 2 < params->ulUsernameMaxChars)
+ params->pszUsername[len_target + 1] = '\0';
+ }
+ else if (params->ulUsernameMaxChars > 0)
+ params->pszUsername[0] = '\0';
+
+ len2 = strlenW(params->pszUsername);
+ memcpy(params->pszUsername + len2, user, min(len, params->ulUsernameMaxChars - len2) * sizeof(WCHAR));
+ if (params->ulUsernameMaxChars)
+ params->pszUsername[len2 + min(len, params->ulUsernameMaxChars - len2 - 1)] = '\0';
+
+ HeapFree(GetProcessHeap(), 0, user);
+
+ GetDlgItemTextW(hwndDlg, IDC_PASSWORD, params->pszPassword,
+ params->ulPasswordMaxChars);
+
+ EndDialog(hwndDlg, IDOK);
+}
+
static INT_PTR CALLBACK CredDialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam,
LPARAM lParam)
{
@@ -139,42 +222,7 @@ static INT_PTR CALLBACK CredDialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam,
{
struct cred_dialog_params *params = (struct cred_dialog_params *)lParam;
- SetWindowLongPtrW(hwndDlg, DWLP_USER, (LONG_PTR)params);
- if (params->pszMessageText)
- SetDlgItemTextW(hwndDlg, IDC_MESSAGE, params->pszMessageText);
- else
- {
- WCHAR format[256];
- WCHAR message[256];
- LoadStringW(hinstCredUI, IDS_MESSAGEFORMAT, format, sizeof(format)/sizeof(format[0]));
- snprintfW(message, sizeof(message)/sizeof(message[0]), format, params->pszTargetName);
- SetDlgItemTextW(hwndDlg, IDC_MESSAGE, message);
- }
- SetDlgItemTextW(hwndDlg, IDC_USERNAME, params->pszUsername);
- SetDlgItemTextW(hwndDlg, IDC_PASSWORD, params->pszPassword);
-
- if (params->pszUsername[0])
- SetFocus(GetDlgItem(hwndDlg, IDC_PASSWORD));
- else
- SetFocus(GetDlgItem(hwndDlg, IDC_USERNAME));
-
- if (params->pszCaptionText)
- SetWindowTextW(hwndDlg, params->pszCaptionText);
- else
- {
- WCHAR format[256];
- WCHAR title[256];
- LoadStringW(hinstCredUI, IDS_TITLEFORMAT, format, sizeof(format)/sizeof(format[0]));
- snprintfW(title, sizeof(title)/sizeof(title[0]), format, params->pszTargetName);
- SetWindowTextW(hwndDlg, title);
- }
-
- if (params->dwFlags & (CREDUI_FLAGS_DO_NOT_PERSIST|CREDUI_FLAGS_PERSIST))
- ShowWindow(GetDlgItem(hwndDlg, IDC_SAVE), SW_HIDE);
- else if (params->fSave)
- CheckDlgButton(hwndDlg, IDC_SAVE, BST_CHECKED);
-
- return FALSE;
+ return CredDialogInit(hwndDlg, params);
}
case WM_COMMAND:
switch (wParam)
@@ -183,45 +231,7 @@ static INT_PTR CALLBACK CredDialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam,
{
struct cred_dialog_params *params =
(struct cred_dialog_params *)GetWindowLongPtrW(hwndDlg, DWLP_USER);
- HWND hwndUsername = GetDlgItem(hwndDlg, IDC_USERNAME);
- LPWSTR user;
- INT len;
- INT len2;
-
- len = GetWindowTextLengthW(hwndUsername);
- user = HeapAlloc(GetProcessHeap(), 0, (len + 1) * sizeof(WCHAR));
- GetWindowTextW(hwndUsername, user, len + 1);
-
- if (!user[0])
- {
- HeapFree(GetProcessHeap(), 0, user);
- return TRUE;
- }
-
- if (!strchrW(user, '\\') && !strchrW(user, '@'))
- {
- INT len_target = strlenW(params->pszTargetName);
- memcpy(params->pszUsername, params->pszTargetName,
- min(len_target, params->ulUsernameMaxChars) * sizeof(WCHAR));
- if (len_target + 1 < params->ulUsernameMaxChars)
- params->pszUsername[len_target] = '\\';
- if (len_target + 2 < params->ulUsernameMaxChars)
- params->pszUsername[len_target + 1] = '\0';
- }
- else if (params->ulUsernameMaxChars > 0)
- params->pszUsername[0] = '\0';
-
- len2 = strlenW(params->pszUsername);
- memcpy(params->pszUsername + len2, user, min(len, params->ulUsernameMaxChars - len2) * sizeof(WCHAR));
- if (params->ulUsernameMaxChars)
- params->pszUsername[len2 + min(len, params->ulUsernameMaxChars - len2 - 1)] = '\0';
-
- HeapFree(GetProcessHeap(), 0, user);
-
- GetDlgItemTextW(hwndDlg, IDC_PASSWORD, params->pszPassword,
- params->ulPasswordMaxChars);
-
- EndDialog(hwndDlg, IDOK);
+ CredDialogCommandOk(hwndDlg, params);
return TRUE;
}
case MAKELONG(IDCANCEL, BN_CLICKED):
More information about the wine-cvs
mailing list