31#define ID_EDITTESTDBUTTON 0x123
32#define ID_EDITTEST2 99
72 static int num_ok_commands = 0;
139 else if (hfocus == hedit2)
141 else if (hfocus == hedit3)
147 if ((hfocus == hedit) && (num_ok_commands == 0))
283 if ((hfocus == hok) &&
len == 0)
292 else if (hfocus == hcancel)
294 else if (hfocus == hedit)
406 if ((hfocus == hedit) &&
len == 0)
413 if ((hfocus == hok) &&
len == 0)
528 if ((hfocus == hedit) &&
len == 0)
535 if ((hfocus == hok) &&
len == 0)
542 if ((hfocus == hedit) &&
len == 2)
582 ok (
handle !=
NULL,
"CreateWindow EDIT Control failed\n");
591 static const WCHAR testtextW[] = {
'T',
'e',
's',
't',
' ',
't',
'e',
'x',
't',0};
592 static const WCHAR editW[] = {
'E',
'd',
'i',
't',0};
609 ok(
b,
"AdjustWindowRect failed\n");
618 ok (parentWnd !=
NULL,
"CreateWindow EDIT Test failed\n");
627 ok (editWnd !=
NULL,
"CreateWindow EDIT Test Text failed\n");
639 trace(
"Edit control has no parent!\n");
669 RECT ClientRect, WindowRect;
693 "The client height should be %d, but is %ld\n",
706 trace(
"EDIT: Single line\n");
710 for (
i=0;
i<65535;
i++)
712 msMessage.wParam =
i;
715 "Expected DLGC_WANTCHARS | DLGC_HASSETSEL | DLGC_WANTARROWS got %lx\n",
r);
719 trace(
"EDIT: Single line want returns\n");
723 for (
i=0;
i<65535;
i++)
725 msMessage.wParam =
i;
728 "Expected DLGC_WANTCHARS | DLGC_HASSETSEL | DLGC_WANTARROWS got %lx\n",
r);
732 trace(
"EDIT: Multiline line\n");
736 for (
i=0;
i<65535;
i++)
738 msMessage.wParam =
i;
741 "Expected DLGC_WANTCHARS | DLGC_HASSETSEL | DLGC_WANTALLKEYS | DLGC_WANTARROWS got %lx\n",
r);
745 trace(
"EDIT: Multi line want returns\n");
749 for (
i=0;
i<65535;
i++)
751 msMessage.wParam =
i;
754 "Expected DLGC_WANTCHARS | DLGC_HASSETSEL | DLGC_WANTALLKEYS | DLGC_WANTARROWS got %lx\n",
r);
768 char szLocalString[
MAXLEN];
787 trace(
"EDIT: SETTEXT atomicity\n");
790 ok(1 ==
r,
"Expected: %d, got: %ld\n", 1,
r);
792 ok(1 ==
r,
"Expected: %d, got: %ld\n", 1,
r);
794 ok(1 ==
r,
"Expected: %d, got: %ld\n", 1,
r);
798 "Wrong contents of edit: %s\n", szLocalString);
802 todo_wine ok(0 ==
r,
"SetCaretPos succeeded unexpectedly, expected: 0, got: %ld\n",
r);
804 ok(phwnd !=
NULL,
"SetFocus failed unexpectedly, expected non-zero, got NULL\n");
806 ok(1 ==
r,
"SetCaretPos failed unexpectedly, expected: 1, got: %ld\n",
r);
808 ok(1 ==
r,
"GetCaretPos failed unexpectedly, expected: 1, got: %ld\n",
r);
809 ok(cpos.
x == 0 && cpos.
y == 0,
"Wrong caret position, expected: (0,0), got: (%ld,%ld)\n", cpos.
x, cpos.
y);
811 ok(1 ==
r,
"SetCaretPos failed unexpectedly, expected: 1, got: %ld\n",
r);
813 ok(1 ==
r,
"GetCaretPos failed unexpectedly, expected: 1, got: %ld\n",
r);
814 ok(cpos.
x == -1 && cpos.
y == -1,
"Wrong caret position, expected: (-1,-1), got: (%ld,%ld)\n", cpos.
x, cpos.
y);
816 ok(1 ==
r,
"SetCaretPos failed unexpectedly, expected: 1, got: %ld\n",
r);
818 ok(1 ==
r,
"GetCaretPos failed unexpectedly, expected: 1, got: %ld\n",
r);
819 ok(cpos.
x == (
w << 1) && cpos.
y == (
h << 1),
"Wrong caret position, expected: (%ld,%ld), got: (%ld,%ld)\n",
w << 1,
h << 1, cpos.
x, cpos.
y);
821 ok(1 ==
r,
"SetCaretPos failed unexpectedly, expected: 1, got: %ld\n",
r);
823 ok(1 ==
r,
"GetCaretPos failed unexpectedly, expected: 1, got: %ld\n",
r);
824 ok(cpos.
x ==
w && cpos.
y ==
h,
"Wrong caret position, expected: (%ld,%ld), got: (%ld,%ld)\n",
w,
h, cpos.
x, cpos.
y);
826 ok(1 ==
r,
"SetCaretPos failed unexpectedly, expected: 1, got: %ld\n",
r);
828 ok(1 ==
r,
"GetCaretPos failed unexpectedly, expected: 1, got: %ld\n",
r);
829 ok(cpos.
x == (
w - 1) && cpos.
y == (
h - 1),
"Wrong caret position, expected: (%ld,%ld), got: (%ld,%ld)\n",
w - 1,
h - 1, cpos.
x, cpos.
y);
837 char szLocalString[
MAXLEN];
840 if (
strcmp(szLocalString,
"foo")==0) {
841 strcpy(szLocalString,
"bar");
869#define test_notify(enchange, enmaxtext, enupdate) \
871 ok(notifications.en_change == enchange, "expected %d EN_CHANGE notifications, " \
872 "got %d\n", enchange, notifications.en_change); \
873 ok(notifications.en_maxtext == enmaxtext, "expected %d EN_MAXTEXT notifications, " \
874 "got %d\n", enmaxtext, notifications.en_maxtext); \
875 ok(notifications.en_update == enupdate, "expected %d EN_UPDATE notifications, " \
876 "got %d\n", enupdate, notifications.en_update); \
909 static const char *
str =
"this is a long string.";
910 static const char *
str2 =
"this is a long string.\r\nthis is a long string.\r\nthis is a long string.\r\nthis is a long string.";
916 trace(
"EDIT: Test notifications\n");
926 trace(
"EDIT: Single line, no ES_AUTOHSCROLL\n");
947 ok(1 ==
len,
"wrong text length, expected 1, got %d\n",
len);
970 ok(5 ==
len,
"text should have been truncated to limit, expected 5, got %d\n",
len);
981 trace(
"EDIT: Single line, ES_AUTOHSCROLL\n");
1021 ok(5 ==
len,
"text should have been truncated to limit, expected 5, got %d\n",
len);
1032 trace(
"EDIT: Multline, no ES_AUTOHSCROLL, no ES_AUTOVSCROLL\n");
1037 10, 10, (50 *
dpi) / 96, (50 *
dpi) / 96,
1048 ok(0 ==
len,
"text should have been truncated, expected 0, got %d\n",
len);
1071 ok(5 ==
len,
"text should have been truncated to limit, expected 5, got %d\n",
len);
1082 trace(
"EDIT: Multline, ES_AUTOHSCROLL, no ES_AUTOVSCROLL\n");
1087 10, 10, (50 *
dpi) / 96, (50 *
dpi) / 96,
1094 ok(0 ==
len,
"text should have been truncated, expected 0, got %d\n",
len);
1116 ok(5 ==
len,
"text should have been truncated to limit, expected 5, got %d\n",
len);
1127 trace(
"EDIT: Multline, ES_AUTOHSCROLL and ES_AUTOVSCROLL\n");
1154 ok(5 ==
len,
"text should have been truncated to limit, expected 5, got %d\n",
len);
1177 trace(
"EDIT: Test EM_CHARFROMPOS and EM_POSFROMCHAR\n");
1182 mid = lo + (hi - lo + 1) / 2;
1184 for (
i = lo;
i < mid;
i++) {
1186 ok(0 ==
ret,
"%d/%d/%d: expected 0 got %d\n", lo,
i, mid,
ret);
1188 for (
i = mid;
i <= hi;
i++) {
1190 ok(1 ==
ret,
"%d/%d/%d: expected 1 got %d\n", mid,
i, hi,
ret);
1193 ok(-1 ==
ret,
"expected -1 got %d\n",
ret);
1200 mid = lo + (hi - lo + 1) / 2;
1202 for (
i = lo;
i < mid;
i++) {
1204 ok(0 ==
ret,
"%d/%d/%d: expected 0 got %d\n", lo,
i, mid,
ret);
1206 for (
i = mid;
i <= hi;
i++) {
1208 ok(1 ==
ret,
"%d/%d/%d: expected 1 got %d\n", mid,
i, hi,
ret);
1211 ok(-1 ==
ret,
"expected -1 got %d\n",
ret);
1218 mid = lo + (hi - lo + 1) / 2;
1220 for (
i = lo;
i < mid;
i++) {
1222 ok(0 ==
ret,
"%d/%d/%d: expected 0 got %d\n", lo,
i, mid,
ret);
1224 for (
i = mid;
i <= hi;
i++) {
1226 ok(1 ==
ret,
"%d/%d/%d: expected 1 got %d\n", mid,
i, hi,
ret);
1229 ok(-1 ==
ret,
"expected -1 got %d\n",
ret);
1236 mid = lo + (hi - lo + 1) / 2;
1238 for (
i = lo;
i < mid;
i++) {
1241 "%d/%d/%d: expected 0 or 1 got %d\n", lo,
i, mid,
ret);
1243 for (
i = mid;
i <= hi;
i++) {
1246 ok(1 ==
ret ||
broken(0 ==
ret) ,
"%d/%d/%d: expected 0 or 1 got %d\n", mid,
i, hi,
ret);
1248 ok(1 ==
ret,
"%d/%d/%d: expected 1 got %d\n", mid,
i, hi,
ret);
1252 ok(-1 ==
ret,
"expected -1 got %d\n",
ret);
1259 mid = lo + (hi - lo + 1) / 2;
1261 for (
i = lo;
i < mid;
i++) {
1264 "%d/%d/%d: expected 0 or 1 got %d\n", lo,
i, mid,
ret);
1266 for (
i = mid;
i <= hi;
i++) {
1269 ok(1 ==
ret ||
broken(0 ==
ret) ,
"%d/%d/%d: expected 0 or 1 got %d\n", mid,
i, hi,
ret);
1271 ok(1 ==
ret,
"%d/%d/%d: expected 1 got %d\n", mid,
i, hi,
ret);
1275 ok(-1 ==
ret,
"expected -1 got %d\n",
ret);
1282 mid = lo + (hi - lo + 2) / 2;
1284 for (
i = lo;
i < mid;
i++) {
1287 "%d/%d/%d: expected 0 or 1 got %d\n", lo,
i, mid,
ret);
1289 for (
i = mid;
i <= hi;
i++) {
1291 ok(1 ==
ret,
"%d/%d/%d: expected 1 got %d\n", mid,
i, hi,
ret);
1294 ok(-1 ==
ret,
"expected -1 got %d\n",
ret);
1311 ok(
ret == lo,
"Unexpected position %d vs %d.\n", lo,
ret);
1321 static const char *
str =
"test\r\ntest";
1325 RECT rc1 = { 10, 10, 11, 11};
1338 ok( rc.
right - rc.
left > 20,
"size of the window (%ld) is smaller than expected\n",
1387 static const char *
str =
"test\r\ntest";
1407 ok(
ret == 0,
"Expected 0, got %ld\n",
ret);
1413 ok(
ret == 0,
"Expected 0, got %ld\n",
ret);
1415 ok(
ret == 0,
"Expected 0, got len %ld\n",
ret);
1427 trace(
"EDIT: buffer limit for single-line\n");
1430 ok(
r == 30000,
"Incorrect default text limit, expected 30000 got %lu\n",
r);
1433 ok(
r == 2147483646,
"got limit %lu (expected 2147483646)\n",
r);
1437 trace(
"EDIT: buffer limit for multi-line\n");
1440 ok(
r == 30000,
"Incorrect default text limit, expected 30000 got %lu\n",
r);
1443 ok(
r == 4294967295U,
"got limit %lu (expected 4294967295)\n",
r);
1450 static const char *single_line_str =
"a";
1451 static const char *multiline_str =
"Test\r\nText";
1468 ok(!
ret,
"Returned %lx, expected 0.\n",
ret);
1471 ok(!
ret,
"Returned %lx, expected 0.\n",
ret);
1474 ok(!
ret,
"Returned %lx, expected 0.\n",
ret);
1477 ok(!
ret,
"Returned %lx, expected 0.\n",
ret);
1493 ok(!
ret,
"Returned %lx, expected 0.\n",
ret);
1501 case 932:
case 936:
case 949:
case 950:
case 1361:
1520 memset(&lf, 0,
sizeof(lf));
1530 hwnd =
CreateWindowExA(0,
"Edit",
"A",
WS_POPUP, 0, 0, 5000, 1000,
NULL,
NULL,
NULL,
NULL);
1559 empty_expect = threshold > 80 ? small_margins :
expect;
1562 hwnd =
CreateWindowExA(0,
"Edit",
"A",
WS_POPUP, 0, 0, threshold - 1, 100,
NULL,
NULL,
NULL,
NULL);
1578 hwnd =
CreateWindowExA(0,
"Edit",
"A",
WS_POPUP, 0, 0, threshold, 100,
NULL,
NULL,
NULL,
NULL);
1594 hwnd =
CreateWindowExA(0,
"Edit",
"A",
WS_POPUP, 0, 0, 0, 0,
NULL,
NULL,
NULL,
NULL);
1617 (
fs.fsCsb[0] & FS_DBCS_MASK));
1623 if (side_bearing < 0)
1624 margin =
min(-side_bearing,
width/2);
1658 BOOL cjk_charset, cjk_font;
1664 const WCHAR EditW[] = {
'E',
'd',
'i',
't',0},
strW[] = {
'W',0};
1674 memset(&lf, 0,
sizeof(lf));
1684 hwnd =
CreateWindowExW(0, EditW,
strW,
WS_POPUP, 0, 0, 5000, 1000,
NULL,
NULL,
NULL,
NULL);
1703 if ((cjk_charset || cjk_font) &&
1704 pGetCharWidthInfo && pGetCharWidthInfo(
hdc, &
info)) {
1714 font_expect = small_margins;
1727 ok(
margins == font_expect,
"%s:%d: expected %d, %d, got %d, %d\n", facename,
charset,
HIWORD(font_expect),
LOWORD(font_expect),
HIWORD(
margins),
LOWORD(
margins));
1731 ok(
margins ==
expect,
"%s:%d: expected %d, %d, got %d, %d\n", facename,
charset,
HIWORD(
expect),
LOWORD(
expect),
HIWORD(
margins),
LOWORD(
margins));
1735 hwnd =
CreateWindowExA(0,
"Edit",
"A",
WS_POPUP, 0, 0, 5000, 1000,
NULL,
NULL,
NULL,
NULL);
1746 font_expect = small_margins;
1759 ok(
margins == font_expect,
"%s:%d: expected %d, %d, got %d, %d\n", facename,
charset,
HIWORD(font_expect),
LOWORD(font_expect),
HIWORD(
margins),
LOWORD(
margins));
1763 ok(
margins ==
expect,
"%s:%d: expected %d, %d, got %d, %d\n", facename,
charset,
HIWORD(
expect),
LOWORD(
expect),
HIWORD(
margins),
LOWORD(
margins));
1800 ok(!
rect.right && !
rect.bottom,
"Invalid size after NCCREATE: %ld x %ld\n",
rect.right,
rect.bottom);
1805 ok(
r == 1,
"Returned %Id, expected 1.\n",
r);
1809 ok(
r == 1,
"Returned %Id, expected 1.\n",
r);
1817 ok(
r == 1,
"Returned %Id, expected 1.\n",
r);
1821 ok(
r == 1,
"Returned %Id, expected 1.\n",
r);
1838 ok(
FALSE,
"FIXME: ReactOS crashes on this test!\n");
1843 ok(
ret,
"Failed to get class info.\n");
1850 ok(atom != 0,
"Failed to register class.\n");
1855 ok(hwEdit !=
NULL,
"Failed to create a window.\n");
1864 RECT old_rect, new_rect;
1865 INT old_right_margin;
1866 DWORD old_margins, new_margins;
1871 old_right_margin =
HIWORD(old_margins);
1877 ok(
LOWORD(new_margins) == 10,
"Wrong left margin: %d\n",
LOWORD(new_margins));
1878 ok(
HIWORD(new_margins) == old_right_margin,
"Wrong right margin: %d\n",
HIWORD(new_margins));
1882 ok(
LOWORD(new_margins) == 10,
"Wrong left margin: %d\n",
LOWORD(new_margins));
1883 ok(
HIWORD(new_margins) == 10,
"Wrong right margin: %d\n",
HIWORD(new_margins));
1891 ok(new_rect.
left == old_rect.
left + 10,
"The left border of the rectangle is wrong\n");
1892 ok(new_rect.
right == old_rect.
right - 15,
"The right border of the rectangle is wrong\n");
1893 ok(new_rect.
top == old_rect.
top,
"The top border of the rectangle must not change\n");
1894 ok(new_rect.
bottom == old_rect.
bottom,
"The bottom border of the rectangle must not change\n");
1900 SetRect(&old_rect, 1, 1, 99, 99);
1905 ok(
EqualRect(&old_rect, &new_rect),
"The border of the rectangle has changed\n");
1912 ok(
EqualRect(&old_rect, &new_rect),
"The border of the rectangle has changed\n");
1915 ok(
EqualRect(&old_rect, &new_rect),
"The border of the rectangle has changed\n");
1918 ok(
EqualRect(&old_rect, &new_rect),
"The border of the rectangle has changed\n");
1921 ok(
EqualRect(&old_rect, &new_rect),
"The border of the rectangle has changed\n");
1947 skip(
"MS PGothic is not available, skipping some margin tests\n");
1954 skip(
"Ume P Gothic is not available, skipping some margin tests\n");
1961 skip(
"SimSun is not available, skipping some margin tests\n");
1973 skip(
"Arial not found - skipping font change margin tests\n");
1981 memset(&lf, 0,
sizeof(lf));
2067#define edit_pos_ok(exp, got, txt) edit_pos_ok_(__LINE__, exp, got, #txt)
2070 ok_(__FILE__,
line)(
exp == got,
"wrong %s expected %ld got %ld\n", txt,
exp, got);
2073#define check_pos(hwEdit, set_height, test_top, test_height, test_left) \
2077 set_client_height(hwEdit, set_height); \
2078 SendMessageA(hwEdit, EM_GETRECT, 0, (LPARAM) &format_rect); \
2079 left_margin = LOWORD(SendMessageA(hwEdit, EM_GETMARGINS, 0, 0)); \
2080 edit_pos_ok(test_top, format_rect.top, vertical position); \
2081 edit_pos_ok((int)test_height, format_rect.bottom - format_rect.top, height); \
2082 edit_pos_ok(test_left, format_rect.left - left_margin, left); \
2101 ok (
font !=
NULL,
"GetStockObject SYSTEM_FONT failed\n");
2103 ok (
dc !=
NULL,
"GetDC() failed\n");
2106 ok (xb,
"GetTextMetrics failed\n");
2208 trace(
"EDIT: Text position (Single line)\n");
2210 trace(
"EDIT: Text position (Multi line)\n");
2223 ok(
r ==
ES_PASSWORD,
"Wrong style expected ES_PASSWORD got: 0x%lx\n",
r);
2231 ok(1 ==
r,
"Expected: %d, got: %ld\n", 1,
r);
2248 ok(1 ==
r,
"Expected: %d, got: %ld\n", 1,
r);
2250 ok(1 ==
r,
"Expected: %d, got: %ld\n", 1,
r);
2255 ok(
r == 0,
"Expected: 0, got: %ld\n",
r);
2267 const char*
text =
"undo this";
2271 ok(0 ==
r,
"Wrong style expected 0x%x got: 0x%lx\n", 0,
r);
2278 cpMin = cpMax = 0xdeadbeef;
2282 ok(0 == cpMin,
"Expected: %d, got %ld\n", 0, cpMin);
2283 ok(9 == cpMax,
"Expected: %d, got %ld\n", 9, cpMax);
2287 ok(1 ==
r,
"Expected: %d, got: %ld\n", 1,
r);
2292 ok(0 ==
r,
"Expected: %d, got len %ld\n", 0,
r);
2297 ok(1 ==
r,
"Expected: %d, got: %ld\n", 1,
r);
2307 ok(1 ==
r,
"Expected: %d, got: %ld\n", 1,
r);
2312 ok(
r == 0,
"Expected: %d, got len %ld\n", 0,
r);
2327 ok(
ES_MULTILINE ==
r,
"Wrong style expected ES_MULTILINE got: 0x%lx\n",
r);
2334 ok(1 ==
r,
"Expected: %d, got: %ld\n", 1,
r);
2339 ok(2 ==
r,
"Expected: %d, got len %ld\n", 2,
r);
2347 ok(0 ==
r,
"Wrong style expected 0x%x got: 0x%lx\n", 0,
r);
2354 ok(1 ==
r,
"Expected: %d, got: %ld\n", 1,
r);
2359 ok(0 ==
r,
"Expected: %d, got len %ld\n", 0,
r);
2374 ok(1 ==
r,
"Expected: %d, got: %ld\n", 1,
r);
2379 ok(0 ==
r,
"Expected: %d, got len %ld\n", 0,
r);
2394 ok(
ES_MULTILINE ==
r,
"Wrong style expected ES_MULTILINE got: 0x%lx\n",
r);
2401 ok(1 ==
r,
"Expected: %d, got: %ld\n", 1,
r);
2406 ok(1 ==
r,
"Expected: %d, got len %ld\n", 1,
r);
2414 ok(0 ==
r,
"Wrong style expected 0x%x got: 0x%lx\n", 0,
r);
2421 ok(1 ==
r,
"Expected: %d, got: %ld\n", 1,
r);
2426 ok(0 ==
r,
"Expected: %d, got len %ld\n", 0,
r);
2438 ok(333 ==
r,
"Expected %d, got %d\n", 333,
r);
2440 ok(111 ==
r,
"Expected %d, got %d\n", 111,
r);
2442 ok(444 ==
r,
"Expected %d, got %d\n", 444,
r);
2446 ok(444 ==
r,
"Expected %d, got %d\n", 444,
r);
2448 ok(444 ==
r,
"Expected %d, got %d\n", 444,
r);
2450 ok(444 ==
r,
"Expected %d, got %d\n", 444,
r);
2454 ok(444 ==
r,
"Expected %d, got %d\n", 444,
r);
2456 ok(444 ==
r,
"Expected %d, got %d\n", 444,
r);
2458 ok(444 ==
r,
"Expected %d, got %d\n", 444,
r);
2462 ok(333 ==
r,
"Expected %d, got %d\n", 333,
r);
2464 ok(111 ==
r,
"Expected %d, got %d\n", 111,
r);
2466 ok(444 ==
r,
"Expected %d, got %d\n", 444,
r);
2470 ok(444 ==
r,
"Expected %d, got %d\n", 444,
r);
2472 ok(444 ==
r,
"Expected %d, got %d\n", 444,
r);
2474 ok(444 ==
r,
"Expected %d, got %d\n", 444,
r);
2478 ok(444 ==
r,
"Expected %d, got %d\n", 444,
r);
2480 ok(444 ==
r,
"Expected %d, got %d\n", 444,
r);
2482 ok(444 ==
r,
"Expected %d, got %d\n", 444,
r);
2486 ok(22 ==
r,
"Expected %d, got %d\n", 22,
r);
2488 ok(33 ==
r,
"Expected %d, got %d\n", 33,
r);
2497 ok(2222 ==
r,
"Expected %d, got %d\n", 2222,
r);
2499 ok(1111 ==
r,
"Expected %d, got %d\n", 1111,
r);
2501 ok(2222 ==
r,
"Expected %d, got %d\n", 2222,
r);
2503 ok(11 ==
r,
"Expected %d, got %d\n", 11,
r);
2512 ok(333 ==
r,
"Expected %d, got %d\n", 333,
r);
2514 ok(444 ==
r,
"Expected %d, got %d\n", 444,
r);
2516 ok(444 ==
r,
"Expected %d, got %d\n", 444,
r);
2520 ok(444 ==
r,
"Expected %d, got %d\n", 444,
r);
2522 ok(444 ==
r,
"Expected %d, got %d\n", 444,
r);
2524 ok(444 ==
r,
"Expected %d, got %d\n", 444,
r);
2528 ok(444 ==
r,
"Expected %d, got %d\n", 444,
r);
2530 ok(444 ==
r,
"Expected %d, got %d\n", 444,
r);
2532 ok(444 ==
r,
"Expected %d, got %d\n", 444,
r);
2541 ok(222 ==
r,
"Expected %d, got %d\n", 222,
r);
2543 ok(111 ==
r,
"Expected %d, got %d\n", 111,
r);
2545 ok(444 ==
r,
"Expected %d, got %d\n", 444,
r);
2549 ok(444 ==
r,
"Expected %d, got %d\n", 444,
r);
2551 ok(444 ==
r,
"Expected %d, got %d\n", 444,
r);
2553 ok(444 ==
r,
"Expected %d, got %d\n", 444,
r);
2557 ok(222 ==
r,
"Expected %d, got %d\n", 222,
r);
2559 ok(111 ==
r,
"Expected %d, got %d\n", 111,
r);
2561 ok(444 ==
r,
"Expected %d, got %d\n", 444,
r);
2565 ok(222 ==
r,
"Expected %d, got %d\n", 222,
r);
2567 ok(111 ==
r,
"Expected %d, got %d\n", 111,
r);
2569 ok(444 ==
r,
"Expected %d, got %d\n", 444,
r);
2573 ok(444 ==
r,
"Expected %d, got %d\n", 444,
r);
2575 ok(444 ==
r,
"Expected %d, got %d\n", 444,
r);
2577 ok(444 ==
r,
"Expected %d, got %d\n", 444,
r);
2581 ok(222 ==
r,
"Expected %d, got %d\n", 222,
r);
2583 ok(111 ==
r,
"Expected %d, got %d\n", 111,
r);
2585 ok(444 ==
r,
"Expected %d, got %d\n", 444,
r);
2607 HWND hwEdit, hwParent;
2614 ok(1 ==
r,
"expected 1, got %d\n",
r);
2652 memset(&mbi, 0,
sizeof(mbi));
2653 mbi.
cbSize =
sizeof(mbi);
2656 ok(
ret,
"GetMenuBarInfo failed\n");
2665 memset(&mbi, 0,
sizeof(mbi));
2666 mbi.
cbSize =
sizeof(mbi);
2669 ok(
ret,
"GetMenuBarInfo failed\n");
2763 "Expected no WM_COMMAND messages, got %d\n",
menu_messages.wm_command);
2765 "Expected 1 EM_SETSEL message, got %d\n",
menu_messages.em_setsel);
2780 test2.cbClsExtra = 0;
2781 test2.cbWndExtra = 0;
2792 test3.cbClsExtra = 0;
2793 test3.cbWndExtra = 0;
2804 test4.cbClsExtra = 0;
2805 test4.cbWndExtra = 0;
2844 char szLocalString[
MAXLEN];
2857 trace(
"EDIT: Oversized font (Multi line)\n");
2868 ok(1 ==
r,
"Expected: %d, got: %ld\n", 1,
r);
2870 ok(1 ==
r,
"Expected: %d, got: %ld\n", 1,
r);
2872 ok(1 ==
r,
"Expected: %d, got: %ld\n", 1,
r);
2875 ok(
strcmp(szLocalString,
"ABC")==0,
2876 "Wrong contents of edit: %s\n", szLocalString);
2879 ok(
r != -1,
"EM_POSFROMCHAR failed index 0\n");
2881 ok(
r != -1,
"EM_POSFROMCHAR failed index 1\n");
2883 ok(
r != -1,
"EM_POSFROMCHAR failed index 2\n");
2885 ok(
r == -1,
"EM_POSFROMCHAR succeeded index 3\n");
2906#define test_dm_messages(wmcommand, wmclose, wmgetdefid, wmnextdlgctl) \
2907 ok(dm_messages.wm_command == wmcommand, "expected %d WM_COMMAND messages, " \
2908 "got %d\n", wmcommand, dm_messages.wm_command); \
2909 ok(dm_messages.wm_close == wmclose, "expected %d WM_CLOSE messages, " \
2910 "got %d\n", wmclose, dm_messages.wm_close); \
2911 ok(dm_messages.wm_getdefid == wmgetdefid, "expected %d WM_GETDIFID messages, " \
2912 "got %d\n", wmgetdefid, dm_messages.wm_getdefid);\
2913 ok(dm_messages.wm_nextdlgctl == wmnextdlgctl, "expected %d WM_NEXTDLGCTL messages, " \
2914 "got %d\n", wmnextdlgctl, dm_messages.wm_nextdlgctl)
2939 HWND hwEdit, hwParent, hwButton;
2945 ok(1 ==
r,
"expected 1, got %d\n",
r);
2947 ok(11 ==
len,
"expected 11, got %d\n",
len);
2950 ok(0x8d ==
r,
"expected 0x8d, got 0x%x\n",
r);
2953 ok(1 ==
r,
"expected 1, got %d\n",
r);
2955 ok(13 ==
len,
"expected 13, got %d\n",
len);
2958 ok(0x8d ==
r,
"expected 0x8d, got 0x%x\n",
r);
2960 ok(1 ==
r,
"expected 1, got %d\n",
r);
2962 ok(13 ==
len,
"expected 13, got %d\n",
len);
2965 ok(1 ==
r,
"expected 1, got %d\n",
r);
2967 ok(13 ==
len,
"expected 13, got %d\n",
len);
2974 ok(1 ==
r,
"expected 1, got %d\n",
r);
2976 ok(11 ==
len,
"expected 11, got %d\n",
len);
2981 msg.lParam = 0xe0001;
2983 ok(0x8d ==
r,
"expected 0x8d, got 0x%x\n",
r);
2986 ok(1 ==
r,
"expected 1, got %d\n",
r);
2988 ok(11 ==
len,
"expected 11, got %d\n",
len);
2998 ok(1 ==
r,
"expected 1, got %d\n",
r);
3003 ok(1 ==
r,
"expected 1, got %d\n",
r);
3010 msg.lParam = 0xf0001;
3012 ok(0x89 ==
r,
"expected 0x89, got 0x%x\n",
r);
3017 ok(1 ==
r,
"expected 1, got %d\n",
r);
3028 ok(1 ==
r,
"expected 1, got %d\n",
r);
3035 msg.lParam = 0x10001;
3037 ok(0x8d ==
r,
"expected 0x8d, got 0x%x\n",
r);
3042 ok(1 ==
r,
"expected 1, got %d\n",
r);
3047 ok(1 ==
r,
"expected 1, got %d\n",
r);
3052 ok(1 ==
r,
"expected 1, got %d\n",
r);
3061 ok(1 ==
r,
"expected 1, got %d\n",
r);
3071 static const char str0[] =
"untouched";
3072 static const char str1[] =
"1111+1111+1111#";
3073 static const char str1_1[] =
"2111+1111+1111#";
3074 static const char str2[] =
"2222-2222-2222-2222#";
3075 static const char str3[] =
"3333*3333*3333*3333*3333#";
3085 trace(
"EDIT: EM_GETHANDLE\n");
3092 ok(hmem ==
NULL,
"got %p (expected NULL)\n", hmem);
3111 ok(hmem !=
NULL,
"got %p (expected != NULL)\n", hmem);
3143 "Unexpected retval %d and text \"%s\" (expected %d and \"%s\")\n",
r,
current,
lstrlenA(str1_1), str1_1);
3147 ok(
r,
"Failed to set text.\n");
3154 ok(
r,
"Failed to replace selection.\n");
3162 ok(halloc !=
NULL,
"got %p (expected != NULL)\n", halloc);
3173 ok(hmem2 !=
NULL,
"got %p (expected != NULL)\n", hmem2);
3193 "got %d and \"%s\" (expected %d and \"%s\")\n",
r,
current,
lstrlenA(str3), str3);
3213 ok(hmem2 == hmem,
"got %p (expected %p)\n", hmem2, hmem);
3224#define check_paste(a, b) _check_paste(__LINE__, (a), (b))
3237 }
while (--tries > 0);
3247 static const char *
str =
"this is a simple text";
3248 static const char *
str2 =
"first line\r\nsecond line";
3255 ok(hmem !=
NULL,
"got %p (expected != NULL)\n", hmem);
3266 ok(hmem_ret == hmem,
"expected %p, got %p\n", hmem, hmem_ret);
3275 ok(hmem !=
NULL,
"got %p (expected != NULL)\n", hmem);
3286 ok(hmem_ret == hmem,
"expected %p, got %p\n", hmem, hmem_ret);
3311 static const WCHAR strW[] = {
't',
'e',
'x',
't',0};
3312 static const char *
str =
"text";
3336 memset(buffW, 0,
sizeof(buffW));
3342 memset(buffW, 0,
sizeof(buffW));
3369 ok(
ret == 1,
"Unexpected return value %Id.\n",
ret);
3375 ok(
ret == 1,
"Unexpected return value %Id.\n",
ret);
3387 WCHAR textW[] = { 0x4e00, 0x4e8c, 0x4e09, 0 };
3388 unsigned char bytes[7];
3400 skip(
"Skipping DBCS WM_CHAR test in the %d codepage\n",
cp);
3408 const unsigned char*
p;
3418 ok(
r,
"SetWindowText failed\n");
3428 ok(
n > 0,
"GetWindowTextW failed\n");
3433 ok(
n > 0,
"GetWindowText failed\n");
3456 {0, {0, 0, 0, 0}, 1},
3457 {0, {0, 0, 10, 10}, 1},
3458 {0, {1, 1, 10, 10}, 1},
3459 {0, {1, 1, 10, 250}, 1},
3460 {0, {1, 1, 250, 10}, 1},
3461 {0, {1, 1, 10, 1000}, 1},
3462 {0, {1, 1, 1000, 10}, 1},
3463 {0, {1, 1, 1000, 1000}, 0},
3479 SetWindowTextA(edit,
"Test Test Test\r\n\r\nTest Test Test Test Test Test Test Test Test Test Test Test\r\n\r\nTest Test Test");
3483 if (
tests[
i].expected_equal)
3484 ok(
EqualRect(&old_rect, &
rect),
"Expected format rectangle to be equal to client rectangle.\n");
3486 ok((
rect.right -
rect.left) > (old_rect.right - old_rect.left),
"Expected format rect to be larger than client rectangle.\n");
3497 ok (
b,
"RegisterWindowClasses failed\n");
static unsigned char bytes[4]
static const char * wine_dbgstr_rect(const RECT *prc)
static int get_cjk_fontinfo_margin(int width, int side_bearing)
#define GetProcAddress(x, y)
#define WideCharToMultiByte
#define ERROR_ACCESS_DENIED
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
int WINAPI lstrcmpA(LPCSTR str1, LPCSTR str2)
BOOL WINAPI IsDBCSLeadByteEx(UINT codepage, BYTE testchar)
INT WINAPI GetLocaleInfoW(LCID lcid, LCTYPE lctype, LPWSTR buffer, INT len)
ULONG WINAPI DECLSPEC_HOTPATCH GetTickCount(void)
_ACRTIMP int __cdecl wcscmp(const wchar_t *, const wchar_t *)
_ACRTIMP size_t __cdecl strlen(const char *)
_ACRTIMP int __cdecl strcmp(const char *, const char *)
unsigned short(__cdecl typeof(TIFFCurrentDirectory))(struct tiff *)
static unsigned char buff[32768]
GLuint GLuint GLsizei GLenum type
GLdouble GLdouble GLdouble r
GLint GLint GLsizei width
GLsizei GLenum const GLvoid GLuint GLsizei GLfloat * metrics
GLboolean GLboolean GLboolean b
GLenum GLuint GLenum GLsizei const GLchar * buf
GLuint GLsizei GLsizei * length
GLenum GLenum GLenum input
GLubyte GLubyte GLubyte GLubyte w
GLfloat GLfloat GLfloat GLfloat h
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
BOOL NTAPI GlobalUnlock(HGLOBAL hMem)
HLOCAL NTAPI LocalAlloc(UINT uFlags, SIZE_T dwBytes)
LPVOID NTAPI LocalLock(HLOCAL hMem)
BOOL NTAPI LocalUnlock(HLOCAL hMem)
HGLOBAL NTAPI GlobalAlloc(UINT uFlags, SIZE_T dwBytes)
HLOCAL NTAPI LocalFree(HLOCAL hMem)
#define WC_NO_BEST_FIT_CHARS
static ERESOURCE GlobalLock
LPSTR WINAPI lstrcpyA(LPSTR lpString1, LPCSTR lpString2)
int WINAPI lstrlenA(LPCSTR lpString)
const char * winetest_platform
void __cdecl void __cdecl void __cdecl void __cdecl void __cdecl void winetest_pop_context(void)
void __cdecl void __cdecl void __cdecl void __cdecl void __cdecl winetest_push_context(const char *fmt,...) __WINE_PRINTF_ATTR(1
struct task_struct * current
static struct test_info tests[]
static struct dialog_mode_messages dm_messages
static LRESULT CALLBACK ET2_WndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
static void test_edit_control_limittext(void)
static void test_edit_dialog(void)
static INT_PTR CALLBACK child_edit_wmkeydown_proc(HWND hdlg, UINT msg, WPARAM wparam, LPARAM lparam)
static HWND create_editcontrol(DWORD style, DWORD exstyle)
static const char szEditTest2Class[]
static HWND create_child_editcontrol(DWORD style, DWORD exstyle)
static LRESULT CALLBACK dialog_mode_wnd_proc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
static void test_margins_usefontinfo(UINT charset)
static void test_paste(void)
static struct context_menu_messages menu_messages
static void zero_notify(void)
static HWND create_editcontrolW(DWORD style, DWORD exstyle)
#define check_pos(hwEdit, set_height, test_top, test_height, test_left)
static void zero_dm_messages(void)
static void test_edit_control_3(void)
static struct edit_notify notifications
static void test_EM_GETLINE(void)
static void UnregisterWindowClasses(void)
static LRESULT CALLBACK child_edit_menu_proc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
static LRESULT CALLBACK edit4_wnd_procA(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
static void test_multi_edit_dialog(void)
static void test_wantreturn_edit_dialog(void)
static DWORD get_cjk_font_margins(HDC hdc)
static BOOL got_wm_capturechanged
static void test_edit_control_5(void)
static void test_margins_font_change(void)
static void test_edit_control_6(void)
static void test_contextmenu(void)
static void ET2_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
static INT_PTR CALLBACK edit_wantreturn_dialog_proc(HWND hdlg, UINT msg, WPARAM wparam, LPARAM lparam)
static LRESULT CALLBACK edit3_wnd_procA(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
static void test_margins_default(const char *facename, UINT charset)
static BOOL got_en_setfocus
static void test_char_from_pos(void)
static void set_client_height(HWND Wnd, unsigned Height)
static void test_dialogmode(void)
static const char szEditTextPositionClass[]
static void test_wordbreak_proc(void)
static void test_edit_control_scroll(void)
static void destroy_child_editcontrol(HWND hwndEdit)
static void test_singleline_wantreturn_edit_dialog(void)
static void test_espassword(void)
static const char szEditTest4Class[]
static INT CALLBACK find_font_proc(const LOGFONTA *elf, const TEXTMETRICA *ntm, DWORD type, LPARAM lParam)
#define ID_EDITTESTDBUTTON
static const char szEditTest3Class[]
static void test_child_edit_wmkeydown(void)
static LONG get_edit_style(HWND hwnd)
static void test_edit_control_1(void)
#define test_notify(enchange, enmaxtext, enupdate)
static INT_PTR CALLBACK multi_edit_dialog_proc(HWND hdlg, UINT msg, WPARAM wparam, LPARAM lparam)
static int CALLBACK test_wordbreak_procA(char *text, int current, int length, int code)
static void test_undo(void)
static void test_margins(void)
static INT_PTR CALLBACK edit_singleline_dialog_proc(HWND hdlg, UINT msg, WPARAM wparam, LPARAM lparam)
static void test_enter(void)
static void ET2_check_change(void)
static BOOL is_font_installed(const char *name)
static void test_EM_GETHANDLE(void)
static void test_text_position_style(DWORD style)
static int child_edit_wmkeydown_num_messages
static void test_text_position(void)
static INT_PTR CALLBACK edit_dialog_proc(HWND hdlg, UINT msg, WPARAM wparam, LPARAM lparam)
#define test_dm_messages(wmcommand, wmclose, wmgetdefid, wmnextdlgctl)
static void test_fontsize(void)
static void test_edit_control_2(void)
static void test_tab(void)
static const WCHAR textW[]
static CRYPT_DATA_BLOB b3[]
static CRYPT_DATA_BLOB b2[]
static UINT UINT LPWORD LPABC abc
static DWORD *static HFONT(WINAPI *pCreateFontIndirectExA)(const ENUMLOGFONTEXDVA *)
#define open_clipboard(hwnd)
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
static const WCHAR testtextW[]
static WNDPROC orig_class_proc
static LRESULT CALLBACK test_class_proc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
static BOOL is_cjk_charset(HDC dc)
#define check_paste(a, b)
static void _check_paste(unsigned int line, HWND hedit, const char *content)
static void test_initialization(void)
static void edit_pos_ok_(unsigned line, DWORD exp, DWORD got, const char *txt)
static void test_format_rect(void)
static BOOL is_cjk_font(HDC dc)
static LRESULT CALLBACK edit_proc_proxy(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
static BOOL RegisterWindowClasses(void)
static void test_dbcs_WM_CHAR(void)
#define WS_OVERLAPPEDWINDOW
const char int int int static __inline const char * wine_dbgstr_a(const char *s)
XML_HIDDEN void xmlParserErrors const char const xmlChar const xmlChar * str2
XML_HIDDEN void xmlParserErrors const char const xmlChar * str1
CHAR lfFaceName[LF_FACESIZE]
VOID WINAPI DECLSPEC_HOTPATCH Sleep(IN DWORD dwMilliseconds)
TW_UINT32 TW_UINT16 TW_UINT16 MSG
_In_ HFONT _Out_ PUINT Height
static const WCHAR editW[]
int WINAPI GetWindowTextA(HWND hWnd, LPSTR lpString, int nMaxCount)
int WINAPI GetWindowTextW(HWND hWnd, LPWSTR lpString, int nMaxCount)
DWORD WINAPI GetLastError(void)
HGDIOBJ WINAPI GetStockObject(_In_ int)
BOOL WINAPI GetCharABCWidthsA(_In_ HDC hdc, _In_ UINT wFirst, _In_ UINT wLast, _Out_writes_(wLast - wFirst+1) LPABC lpABC)
int WINAPI GetTextCharsetInfo(_In_ HDC, _Out_opt_ LPFONTSIGNATURE, _In_ DWORD)
int WINAPI GetDeviceCaps(_In_opt_ HDC, _In_ int)
HFONT WINAPI CreateFontIndirectA(_In_ const LOGFONTA *)
LONG WINAPI GdiGetCharDimensions(HDC, LPTEXTMETRICW, LONG *)
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
int WINAPI EnumFontFamiliesA(_In_ HDC, _In_opt_ LPCSTR, _In_ FONTENUMPROCA, _In_ LPARAM)
#define CHINESEBIG5_CHARSET
DWORD WINAPI GdiGetCodePage(HDC)
BOOL WINAPI GetTextMetricsA(_In_ HDC, _Out_ LPTEXTMETRICA)
BOOL WINAPI GetTextExtentPoint32A(_In_ HDC hdc, _In_reads_(c) LPCSTR lpString, _In_ int c, _Out_ LPSIZE psizl)
#define EASTEUROPE_CHARSET
BOOL WINAPI GetCharABCWidthsW(_In_ HDC hdc, _In_ UINT wFirst, _In_ UINT wLast, _Out_writes_(wLast - wFirst+1) LPABC lpABC)
#define LOCALE_IDEFAULTANSICODEPAGE
HWND WINAPI GetFocus(void)
HWND WINAPI SetCapture(_In_ HWND hWnd)
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
LRESULT WINAPI DispatchMessageA(_In_ const MSG *)
BOOL WINAPI EndMenu(void)
#define SetWindowLongPtrA
HKL WINAPI GetKeyboardLayout(_In_ DWORD)
BOOL WINAPI SetWindowTextA(_In_ HWND, _In_opt_ LPCSTR)
HWND WINAPI CreateWindowExA(_In_ DWORD dwExStyle, _In_opt_ LPCSTR lpClassName, _In_opt_ LPCSTR lpWindowName, _In_ DWORD dwStyle, _In_ int X, _In_ int Y, _In_ int nWidth, _In_ int nHeight, _In_opt_ HWND hWndParent, _In_opt_ HMENU hMenu, _In_opt_ HINSTANCE hInstance, _In_opt_ LPVOID lpParam)
#define EM_GETWORDBREAKPROC
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
BOOL WINAPI UnregisterClassA(_In_ LPCSTR, HINSTANCE)
int(CALLBACK * EDITWORDBREAKPROCA)(LPSTR, int, int, int)
LONG WINAPI GetWindowLongA(_In_ HWND, _In_ int)
BOOL WINAPI AdjustWindowRect(_Inout_ LPRECT, _In_ DWORD, _In_ BOOL)
LRESULT WINAPI DefWindowProcA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define WM_CAPTURECHANGED
#define CreateWindowA(a, b, c, d, e, f, g, h, i, j, k)
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
struct tagMENUITEMINFOA MENUITEMINFOA
BOOL WINAPI SetWindowPos(_In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
HANDLE WINAPI SetClipboardData(_In_ UINT, _In_opt_ HANDLE)
int WINAPI GetClassNameA(_In_ HWND hWnd, _Out_writes_to_(nMaxCount, return) LPSTR lpClassName, _In_ int nMaxCount)
HWND WINAPI GetOpenClipboardWindow(void)
BOOL WINAPI CloseClipboard(void)
LRESULT WINAPI SendMessageA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI IsRectEmpty(_In_ LPCRECT)
BOOL WINAPI OpenClipboard(_In_opt_ HWND)
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
struct tagMENUBARINFO MENUBARINFO
BOOL WINAPI IsWindowUnicode(_In_ HWND)
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
ATOM WINAPI RegisterClassA(_In_ CONST WNDCLASSA *)
HWND WINAPI SetFocus(_In_opt_ HWND)
HWND WINAPI CreateWindowExW(_In_ DWORD dwExStyle, _In_opt_ LPCWSTR lpClassName, _In_opt_ LPCWSTR lpWindowName, _In_ DWORD dwStyle, _In_ int X, _In_ int Y, _In_ int nWidth, _In_ int nHeight, _In_opt_ HWND hWndParent, _In_opt_ HMENU hMenu, _In_opt_ HINSTANCE hInstance, _In_opt_ LPVOID lpParam)
BOOL WINAPI EmptyClipboard(void)
#define EM_SETWORDBREAKPROC
BOOL WINAPI GetCaretPos(_Out_ LPPOINT)
HDC WINAPI GetDC(_In_opt_ HWND)
BOOL WINAPI GetClassInfoA(_In_opt_ HINSTANCE, _In_ LPCSTR, _Out_ LPWNDCLASSA)
HWND WINAPI GetParent(_In_ HWND)
BOOL WINAPI PeekMessageA(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT, _In_ UINT)
BOOL WINAPI GetMenuItemInfoA(_In_ HMENU, _In_ UINT, _In_ BOOL, _Inout_ LPMENUITEMINFOA)
BOOL WINAPI SetCaretPos(_In_ int, _In_ int)
LRESULT(CALLBACK * WNDPROC)(HWND, UINT, WPARAM, LPARAM)
BOOL WINAPI DestroyWindow(_In_ HWND)
BOOL WINAPI GetMenuBarInfo(_In_ HWND, _In_ LONG, _In_ LONG, _Inout_ PMENUBARINFO)
BOOL WINAPI PostMessageA(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI EqualRect(_In_ LPCRECT, _In_ LPCRECT)
int WINAPI GetSystemMetrics(_In_ int)
LRESULT WINAPI CallWindowProcA(_In_ WNDPROC, _In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
INT_PTR WINAPI DialogBoxParamA(_In_opt_ HINSTANCE, _In_ LPCSTR, _In_opt_ HWND, _In_opt_ DLGPROC, _In_ LPARAM)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
HCURSOR WINAPI LoadCursorA(_In_opt_ HINSTANCE, _In_ LPCSTR)
BOOL WINAPI SetRect(_Out_ LPRECT, _In_ int, _In_ int, _In_ int, _In_ int)
BOOL WINAPI EndDialog(_In_ HWND, _In_ INT_PTR)