Jactry Zeng : comctl32: Implement WM_GETTEXTLENGTH for datetime picker.

Alexandre Julliard julliard at winehq.org
Thu Sep 24 15:49:05 CDT 2020


Module: wine
Branch: master
Commit: fd53a4b8e3082c8447d837d7681baf4fec2569ff
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=fd53a4b8e3082c8447d837d7681baf4fec2569ff

Author: Jactry Zeng <jzeng at codeweavers.com>
Date:   Fri Sep 18 14:20:13 2020 +0800

comctl32: Implement WM_GETTEXTLENGTH for datetime picker.

Signed-off-by: Jactry Zeng <jzeng at codeweavers.com>
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/comctl32/datetime.c       | 17 +++++++++++++++++
 dlls/comctl32/tests/datetime.c |  5 +++++
 2 files changed, 22 insertions(+)

diff --git a/dlls/comctl32/datetime.c b/dlls/comctl32/datetime.c
index 7b7ac8a86a..ace00c7550 100644
--- a/dlls/comctl32/datetime.c
+++ b/dlls/comctl32/datetime.c
@@ -1565,6 +1565,20 @@ DATETIME_GetText (const DATETIME_INFO *infoPtr, INT count, LPWSTR dst)
     return lstrlenW(dst);
 }
 
+static int DATETIME_GetTextLength(const DATETIME_INFO *info)
+{
+    int i, length = 0;
+    WCHAR buffer[80];
+
+    TRACE("%p.\n", info);
+
+    for (i = 0; i < info->nrFields; i++)
+    {
+        DATETIME_ReturnTxt(info, i, buffer, ARRAY_SIZE(buffer));
+        length += lstrlenW(buffer);
+    }
+    return length;
+}
 
 static LRESULT WINAPI
 DATETIME_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
@@ -1681,6 +1695,9 @@ DATETIME_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
     case WM_GETTEXT:
         return (LRESULT) DATETIME_GetText(infoPtr, wParam, (LPWSTR)lParam);
 
+    case WM_GETTEXTLENGTH:
+        return (LRESULT)DATETIME_GetTextLength(infoPtr);
+
     case WM_SETTEXT:
         return CB_ERR;
 
diff --git a/dlls/comctl32/tests/datetime.c b/dlls/comctl32/tests/datetime.c
index 88abce9ed6..111f0bee89 100644
--- a/dlls/comctl32/tests/datetime.c
+++ b/dlls/comctl32/tests/datetime.c
@@ -793,7 +793,12 @@ static void test_wm_set_get_text(void)
         if (ret == 0)
             skip("GetDateFormat failed, returned %ld, error %d\n", ret, GetLastError());
         else
+        {
             ok(!strcmp(buff, time), "Expected %s, got %s\n", time, buff);
+
+            ret = SendMessageA(hWnd, WM_GETTEXTLENGTH, 0, 0);
+            ok(ret == strlen(time), "Got wrong length: %ld, expected %d.\n", ret, strlen(time));
+        }
     }
 
     DestroyWindow(hWnd);




More information about the wine-cvs mailing list