comctl32: Introduce Edit control.

Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Nikolay Sivov 2018-02-01 10:09:05 +03:00 committed by Alexandre Julliard
parent 486bec2d86
commit 662f727a79
6 changed files with 5096 additions and 9 deletions

View File

@ -1,7 +1,7 @@
EXTRADEFS = -D_COMCTL32_
MODULE = comctl32.dll
IMPORTLIB = comctl32
IMPORTS = uuid user32 gdi32 advapi32
IMPORTS = uuid user32 gdi32 advapi32 usp10 imm32
DELAYIMPORTS = winmm uxtheme
C_SRCS = \
@ -13,6 +13,7 @@ C_SRCS = \
dpa.c \
draglist.c \
dsa.c \
edit.c \
flatsb.c \
header.c \
hotkey.c \

View File

@ -179,6 +179,7 @@ extern void COMBOEX_Register(void) DECLSPEC_HIDDEN;
extern void COMBOEX_Unregister(void) DECLSPEC_HIDDEN;
extern void DATETIME_Register(void) DECLSPEC_HIDDEN;
extern void DATETIME_Unregister(void) DECLSPEC_HIDDEN;
extern void EDIT_Register(void) DECLSPEC_HIDDEN;
extern void FLATSB_Register(void) DECLSPEC_HIDDEN;
extern void FLATSB_Unregister(void) DECLSPEC_HIDDEN;
extern void HEADER_Register(void) DECLSPEC_HIDDEN;

View File

@ -93,6 +93,20 @@ static const WCHAR strCC32SubclassInfo[] = {
'C','C','3','2','S','u','b','c','l','a','s','s','I','n','f','o',0
};
static void unregister_versioned_classes(void)
{
#define VERSION "6.0.2600.2982!"
static const char *classes[] =
{
VERSION WC_EDITA,
};
int i;
for (i = 0; i < sizeof(classes)/sizeof(classes[0]); i++)
UnregisterClassA(classes[i], NULL);
#undef VERSION
}
/***********************************************************************
* DllMain [Internal]
@ -153,6 +167,8 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
TREEVIEW_Register ();
UPDOWN_Register ();
EDIT_Register ();
/* subclass user32 controls */
THEMING_Initialize ();
break;
@ -185,6 +201,8 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
TREEVIEW_Unregister ();
UPDOWN_Unregister ();
unregister_versioned_classes ();
/* delete local pattern brush */
DeleteObject (COMCTL32_hPattern55AABrush);
DeleteObject (COMCTL32_hPattern55AABitmap);

5075
dlls/comctl32/edit.c Normal file

File diff suppressed because it is too large Load Diff

View File

@ -2755,7 +2755,6 @@ static void test_EM_GETHANDLE(void)
buffer = LocalLock(hmem);
ok(buffer != NULL, "got %p (expected != NULL)\n", buffer);
len = lstrlenW(buffer);
todo_wine
ok(len == lstrlenW(str1W) && !lstrcmpW(buffer, str1W), "Unexpected buffer contents %s, length %d.\n",
wine_dbgstr_w(buffer), len);
LocalUnlock(hmem);
@ -2780,7 +2779,6 @@ todo_wine
lstrcpyA(current, str0);
r = SendMessageA(hEdit, WM_GETTEXT, sizeof(current), (LPARAM)current);
todo_wine
ok(r == lstrlenA(str1_1) && !lstrcmpA(current, str1_1),
"Unexpected retval %d and text \"%s\" (expected %d and \"%s\")\n", r, current, lstrlenA(str1_1), str1_1);
@ -2789,7 +2787,6 @@ todo_wine
ok(r, "Failed to set text.\n");
buffer = LocalLock(hmem);
todo_wine
ok(buffer != NULL && buffer[0] == '1', "Unexpected buffer contents\n");
LocalUnlock(hmem);
@ -2797,7 +2794,6 @@ todo_wine
ok(r, "Failed to replace selection.\n");
buffer = LocalLock(hmem);
todo_wine
ok(buffer != NULL && buffer[0] == '2', "Unexpected buffer contents\n");
LocalUnlock(hmem);
@ -2819,12 +2815,10 @@ todo_wine
SendMessageA(hEdit, EM_SETHANDLE, (WPARAM)halloc, 0);
len = SendMessageA(hEdit, WM_GETTEXTLENGTH, 0, 0);
todo_wine
ok(len == lstrlenA(str2), "got %d (expected %d)\n", len, lstrlenA(str2));
lstrcpyA(current, str0);
r = SendMessageA(hEdit, WM_GETTEXT, sizeof(current), (LPARAM)current);
todo_wine
ok(r == lstrlenA(str2) && !lstrcmpA(current, str2),
"got %d and \"%s\" (expected %d and \"%s\")\n", r, current, lstrlenA(str2), str2);
@ -2949,7 +2943,6 @@ static void test_EM_GETLINE(void)
char buff[16];
int r;
todo_wine_if(i == 0)
ok(IsWindowUnicode(hwnd[i]), "Expected unicode window.\n");
SendMessageA(hwnd[i], WM_SETTEXT, 0, (LPARAM)str);

View File

@ -168,7 +168,6 @@ static BOOL is_builtin_class( const WCHAR *name )
{'B','u','t','t','o','n',0},
{'C','o','m','b','o','B','o','x',0},
{'C','o','m','b','o','L','B','o','x',0},
{'E','d','i','t',0},
{'I','M','E',0},
{'L','i','s','t','B','o','x',0},
{'M','D','I','C','l','i','e','n','t',0},