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