38#define EXPECT_TODO_WINE 0x80000000UL
62 IRichEditOleCallback_AddRef(iface);
111 "unexpected call to IRichEditOleCallback_QueryInsertObject\n");
113 This->expect_queryinsertobject--;
117 "QueryInsertObject clsid expected %s, got %s\n",
121 "QueryInsertObject clsid expected %p, got %p\n",
This->clsid,
clsid );
122 ok_(__FILE__,
This->line)(
This->stg ==
stg,
"QueryInsertObject stg expected %p, got %p\n",
This->stg,
stg );
123 ok_(__FILE__,
This->line)(
This->cp ==
cp,
"QueryInsertObject cp expected %ld, got %ld\n",
This->cp,
cp );
124 return This->queryinsertobject_result;
133 CLIPFORMAT *cf_format,
DWORD reco,
BOOL really,
153 if (effect) *effect = DROPEFFECT_COPY;
216 "expected IRichEditOleCallback_QueryInsertObject to be called\n" );
221DEFINE_GUID(CLSID_testoleobj, 0x4484082e, 0x6d18, 0x4932, 0xa0, 0x86, 0x5b, 0x4d, 0xcf, 0x36, 0xb3, 0xde);
251 *
obj = &
This->IViewObject_iface;
282 if (
This->advise_holder)
284 IOleAdviseHolder_Release(
This->advise_holder );
287 if (
This->clientsite)
289 IOleClientSite_Release(
This->clientsite );
303 if (
This->clientsite) IOleClientSite_Release(
This->clientsite );
305 if (
This->clientsite) IOleClientSite_AddRef(
This->clientsite );
315 if (
This->clientsite) IOleClientSite_AddRef(
This->clientsite );
322 LPCOLESTR container_app,
323 LPCOLESTR container_obj )
348 return IOleClientSite_GetMoniker(
This->clientsite, assign, which_moniker, mk );
389 *
clsid = CLSID_testoleobj;
395 static const OLECHAR typename[] =
L"richole testoleobj";
400 memcpy( *user_type,
typename,
sizeof(
typename) );
408 if (draw_aspect != DVASPECT_CONTENT)
return E_FAIL;
410 This->extent = *sizel;
418 if (draw_aspect != DVASPECT_CONTENT)
return E_FAIL;
420 *sizel =
This->extent;
430 if (
SUCCEEDED(
hr ))
hr = IOleAdviseHolder_Advise(
This->advise_holder, adv_sink, connection );
439 return IOleAdviseHolder_Unadvise(
This->advise_holder, connection );
446 if (!
This->advise_holder)
451 return IOleAdviseHolder_EnumAdvise(
This->advise_holder, enum_advise );
500 return IOleObject_QueryInterface( &
This->IOleObject_iface,
riid,
obj );
506 return IOleObject_AddRef( &
This->IOleObject_iface );
512 return IOleObject_Release( &
This->IOleObject_iface );
516 LONG index,
void *aspect, DVTARGETDEVICE *td,
517 HDC hdc_target_dev,
HDC hdc_draw,
525 if (draw_aspect != DVASPECT_CONTENT ||
index != -1)
return E_NOTIMPL;
527 ok_(__FILE__,
This->line)( td ==
NULL,
"expected td to be NULL, got %p\n", td );
528 ok_(__FILE__,
This->line)( hdc_target_dev ==
NULL,
"expected hdc_target_dev to be NULL, got %p\n", hdc_target_dev );
529 ok_(__FILE__,
This->line)( wbounds ==
NULL,
"expected wbounds to be NULL, got %p\n", wbounds );
535 "bounds->right (= %ld) - bounds->left (= %ld) != "
536 "MulDiv( This->extent.cx (= %ld), dpi.cx (= %ld), 2540 )\n",
539 "bounds->bottom (= %ld) - bounds->top (= %ld) != "
540 "MulDiv( This->extent.cy (= %ld), dpi.cy (= %ld), 2540 )\n",
550 LONG index,
void *aspect, DVTARGETDEVICE *td,
622DEFINE_GUID(
GUID_NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
623DEFINE_GUID(
IID_ITextServices, 0x8d33f740, 0xcf58, 0x11ce, 0xa8, 0x9d, 0x00, 0xaa, 0x00, 0x6c, 0xad, 0xc5);
627#define EXPECT_REF(obj,ref) _expect_ref((IUnknown*)obj, ref, __LINE__)
631 IUnknown_AddRef(
obj);
632 rc = IUnknown_Release(
obj);
633 ok_(__FILE__,
line)(rc ==
ref,
"expected refcount %ld, got %ld\n",
ref, rc);
680 IRichEditOle_QueryInterface(*reOle, &IID_ITextDocument,
682 ITextDocument_GetSelection(*txtDoc, txtSel);
689 ITextSelection_Release(*txtSel);
690 ITextDocument_Release(*txtDoc);
691 IRichEditOle_Release(*reOle);
697 IUnknown_AddRef(iface);
698 return IUnknown_Release(iface);
701#define CHECK_TYPEINFO(disp,expected_riid) _check_typeinfo((IDispatch *)disp, expected_riid, __LINE__)
710 hr = IDispatch_GetTypeInfoCount(disp, &
count);
711 ok_(__FILE__,
line)(
hr ==
S_OK,
"IDispatch_GetTypeInfoCount failed: 0x%08lx.\n",
hr);
715 ok_(__FILE__,
line)(
hr ==
S_OK,
"IDispatch_GetTypeInfo failed: 0x%08lx.\n",
hr);
717 hr = ITypeInfo_GetTypeAttr(
typeinfo, &typeattr);
718 ok_(__FILE__,
line)(
hr ==
S_OK,
"ITypeInfo_GetTypeAttr failed: 0x%08lx.\n",
hr);
722 ITypeInfo_ReleaseTypeAttr(
typeinfo, typeattr);
741 skip(
"Couldn't create window\n");
746 ok(
res,
"SendMessage\n");
747 ok(reOle !=
NULL,
"EM_GETOLEINTERFACE\n");
751 ok(
res == 1,
"SendMessage\n");
752 ok(reOle1 == reOle,
"Should not return a new IRichEditOle interface\n");
755 hres = IRichEditOle_QueryInterface(reOle, &IID_ITextDocument,
757 ok(
hres ==
S_OK,
"IRichEditOle_QueryInterface\n");
758 ok(txtDoc !=
NULL,
"IRichEditOle_QueryInterface\n");
761 hres = ITextDocument_GetSelection(txtDoc,
NULL);
766 hres = ITextDocument_GetSelection(txtDoc, &txtSel);
771 hres = ITextSelection_QueryInterface(txtSel, &
IID_IUnknown, (
void **)&unk2);
773 ok(unk != unk2,
"unknowns are the same\n");
774 IUnknown_Release(unk2);
775 IUnknown_Release(unk);
780 hres = ITextDocument_GetSelection(txtDoc, &txtSel2);
782 ok(txtSel2 == txtSel,
"got %p, %p\n", txtSel, txtSel2);
787 ITextSelection_Release(txtSel2);
790 hres = ITextSelection_QueryInterface(txtSel, &IID_ITextSelection, (
void **) &
punk);
791 ok(
hres ==
S_OK,
"ITextSelection_QueryInterface\n");
792 ok(
punk !=
NULL,
"ITextSelection_QueryInterface\n");
793 IUnknown_Release(
punk);
796 hres = ITextSelection_QueryInterface(txtSel, &IID_ITextRange, (
void **) &
punk);
797 ok(
hres ==
S_OK,
"ITextSelection_QueryInterface\n");
798 ok(
punk !=
NULL,
"ITextSelection_QueryInterface\n");
799 IUnknown_Release(
punk);
803 ok(
hres ==
S_OK,
"ITextSelection_QueryInterface\n");
804 ok(
punk !=
NULL,
"ITextSelection_QueryInterface\n");
805 IUnknown_Release(
punk);
819 hres = IRichEditOle_QueryInterface(reOle, &IID_ITextDocument2Old, (
void **)&txtDoc2Old);
820 ok(
hres ==
S_OK,
"IRichEditOle_QueryInterface\n");
821 ok(txtDoc2Old !=
NULL,
"IRichEditOle_QueryInterface\n");
822 ok((
ITextDocument *)txtDoc2Old == txtDoc,
"interface pointer isn't equal.\n");
827 ITextDocument2Old_Release(txtDoc2Old);
829 ITextDocument_Release(txtDoc);
830 IRichEditOle_Release(reOle);
831 refcount = IRichEditOle_Release(reOle);
832 ok(refcount == 1,
"got wrong ref count: %ld\n", refcount);
837 hres = ITextSelection_CanEdit(txtSel,
NULL);
840 ITextSelection_Release(txtSel);
844 ok(
res,
"SendMessage\n");
845 ok(reOle !=
NULL,
"EM_GETOLEINTERFACE\n");
847 hres = IRichEditOle_QueryInterface(reOle, &IID_ITextDocument2Old, (
void **)&txtDoc2Old);
848 ok(
hres ==
S_OK,
"IRichEditOle_QueryInterface failed: 0x%08lx.\n",
hres);
849 ok(txtDoc2Old !=
NULL,
"IRichEditOle_QueryInterface\n");
851 ITextDocument2Old_Release(txtDoc2Old);
852 IRichEditOle_Release(reOle);
868 static const CHAR chACP[] =
"TestSomeText";
869 static const CHAR chUTF8[] =
"\xef\xbb\xbfTextWithUTF8BOM";
870 static const WCHAR chUTF16[] = {0xfeff,
'T',
'e',
's',
't',
'S',
'o',
'm',
871 'e',
'T',
'e',
'x',
't', 0};
873#define MAX_BUF_LEN 1024
877 static const int tomConstantsSingle[] =
884 static const int tomConstantsMulti[] =
894 int tomNumSingle =
ARRAY_SIZE(tomConstantsSingle);
895 int tomNumMulti =
ARRAY_SIZE(tomConstantsMulti);
901 for(
i=0;
i < tomNumSingle;
i++)
905 hres = ITextDocument_Open(txtDoc, &testfile, tomConstantsSingle[
i],
CP_ACP);
906 todo_wine ok(
hres ==
S_OK,
"ITextDocument_Open: Filename:test.txt Flags:0x%x Codepage:CP_ACP hres:0x%lx\n",
907 tomConstantsSingle[
i],
hres);
913 hres = ITextDocument_Open(txtDoc, &testfile, tomConstantsSingle[
i],
CP_UTF8);
914 todo_wine ok(
hres ==
S_OK,
"ITextDocument_Open: Filename:test.txt Flags:0x%x Codepage:CP_UTF8 hres:0x%lx\n",
915 tomConstantsSingle[
i],
hres);
920 for(
i=0;
i < tomNumMulti;
i++)
924 hres = ITextDocument_Open(txtDoc, &testfile, tomConstantsMulti[
i],
CP_ACP);
925 todo_wine ok(
hres ==
S_OK,
"ITextDocument_Open: Filename:test.txt Flags:0x%x Codepage:CP_ACP hres:0x%lx\n",
926 tomConstantsMulti[
i],
hres);
932 hres = ITextDocument_Open(txtDoc, &testfile, tomConstantsMulti[
i],
CP_UTF8);
933 todo_wine ok(
hres ==
S_OK,
"ITextDocument_Open: Filename:test.txt Flags:0x%x Codepage:CP_UTF8 hres:0x%lx\n",
934 tomConstantsMulti[
i],
hres);
1067 todo_wine ok(
result == 0,
"ITextDocument_Open: Test ASCII set wrong text: Result: %s\n", bufACP);
1082 todo_wine ok(
result == 0,
"ITextDocument_Open: Test UTF-8 set wrong text: Result: %s\n", bufACP);
1113 static const CHAR test_text1[] =
"TestSomeText";
1114 static const WCHAR bufW1[] = {
'T',
'e',
's',
't', 0};
1115 static const WCHAR bufW2[] = {
'T',
'e',
'x',
't',
'\r', 0};
1116 static const WCHAR bufW3[] = {
'T',
'e',
'x',
't', 0};
1117 static const WCHAR bufW4[] = {
'T',
'e',
's',
't',
'S',
'o',
'm',
1118 'e',
'T',
'e',
'x',
't',
'\r', 0};
1119 static const WCHAR bufW5[] = {
'\r', 0};
1120 static const WCHAR bufW6[] = {
'T',
'e',
's',
't',
'S',
'o',
'm',
'e',
'T',0};
1121 BOOL is64bit =
sizeof(
void *) >
sizeof(
int);
1130 hres = ITextSelection_GetText(txtSel, &bstr);
1131 ok(
hres ==
S_OK,
"ITextSelection_GetText\n");
1137 hres = ITextSelection_GetText(txtSel, &bstr);
1138 ok(
hres ==
S_OK,
"ITextSelection_GetText\n");
1144 hres = ITextSelection_GetText(txtSel, &bstr);
1145 ok(
hres ==
S_OK,
"ITextSelection_GetText\n");
1150 hres = ITextSelection_GetText(txtSel,
NULL);
1154 first = 8; lim = 12;
1156 hres = ITextSelection_GetText(txtSel, &bstr);
1157 ok(
hres ==
S_OK,
"ITextSelection_GetText\n");
1161 first = 8; lim = 13;
1163 hres = ITextSelection_GetText(txtSel, &bstr);
1164 ok(
hres ==
S_OK,
"ITextSelection_GetText\n");
1168 first = 12; lim = 13;
1170 hres = ITextSelection_GetText(txtSel, &bstr);
1171 ok(
hres ==
S_OK,
"ITextSelection_GetText\n");
1175 first = 0; lim = -1;
1177 hres = ITextSelection_GetText(txtSel, &bstr);
1178 ok(
hres ==
S_OK,
"ITextSelection_GetText\n");
1182 first = -1; lim = 9;
1184 hres = ITextSelection_GetText(txtSel, &bstr);
1185 ok(
hres ==
S_OK,
"ITextSelection_GetText\n");
1189 hres = ITextDocument_Range(txtDoc, 0, 4, &
range);
1191 hres = ITextRange_GetText(
range, &bstr);
1196 ITextRange_Release(
range);
1198 hres = ITextDocument_Range(txtDoc, 4, 0, &
range);
1200 hres = ITextRange_GetText(
range, &bstr);
1205 ITextRange_Release(
range);
1207 hres = ITextDocument_Range(txtDoc, 1, 1, &
range);
1209 hres = ITextRange_GetText(
range, &bstr);
1217 ITextRange_Release(
range);
1219 hres = ITextDocument_Range(txtDoc, 8, 12, &
range);
1221 hres = ITextRange_GetText(
range, &bstr);
1226 ITextRange_Release(
range);
1228 hres = ITextDocument_Range(txtDoc, 8, 13, &
range);
1230 hres = ITextRange_GetText(
range, &bstr);
1235 ITextRange_Release(
range);
1237 hres = ITextDocument_Range(txtDoc, 12, 13, &
range);
1239 hres = ITextRange_GetText(
range, &bstr);
1244 ITextRange_Release(
range);
1246 hres = ITextDocument_Range(txtDoc, 0, -1, &
range);
1248 hres = ITextRange_GetText(
range, &bstr);
1251 ITextRange_Release(
range);
1253 hres = ITextDocument_Range(txtDoc, -1, 9, &
range);
1255 hres = ITextRange_GetText(
range, &bstr);
1265 bstr = (
void*)0xdeadbeef;
1266 hres = ITextSelection_GetText(txtSel, &bstr);
1269 ok(bstr ==
NULL,
"got %p\n", bstr);
1271 bstr = (
void*)0xdeadbeef;
1272 hres = ITextRange_GetText(
range, &bstr);
1275 ok(bstr ==
NULL,
"got %p\n", bstr);
1278 hres = ITextSelection_GetText(txtSel,
NULL);
1285 ITextRange_Release(
range);
1286 ITextSelection_Release(txtSel);
1291 static const CHAR test_text1[] =
"TestSomeText";
1300 hres = ITextDocument_Range(txtDoc, 0, 0, &txtRge);
1304 hres = ITextDocument_Range(txtDoc, 0, 0, &range2);
1306 ok(range2 != txtRge,
"A new pointer should be returned\n");
1307 ITextRange_Release(range2);
1309 hres = ITextDocument_Range(txtDoc, 0, 0,
NULL);
1314 hres = ITextDocument_Range(txtDoc, 8, 30, &range2);
1316 hres = ITextRange_GetStart(range2, &
value);
1320 hres = ITextRange_GetEnd(range2, &
value);
1323 ITextRange_Release(range2);
1326 hres = ITextRange_CanEdit(txtRge,
NULL);
1328 ITextRange_Release(txtRge);
1340 static const CHAR test_text1[] =
"TestSomeText";
1345 hres = ITextDocument_Range(txtDoc,
first, lim, &txtRge);
1348 hres = ITextRange_GetChar(txtRge, &
pch);
1350 ok(
pch ==
'T',
"got wrong char: %c\n", (
char)
pch);
1351 ITextRange_Release(txtRge);
1357 hres = ITextDocument_Range(txtDoc,
first, lim, &txtRge);
1360 hres = ITextRange_GetChar(txtRge, &
pch);
1362 ok(
pch ==
'T',
"got wrong char: %c\n", (
char)
pch);
1363 ITextRange_Release(txtRge);
1366 first = 12; lim = 12;
1369 hres = ITextDocument_Range(txtDoc,
first, lim, &txtRge);
1372 hres = ITextRange_GetChar(txtRge, &
pch);
1374 ok(
pch ==
'\r',
"got wrong char: %c\n", (
char)
pch);
1375 ITextRange_Release(txtRge);
1378 first = 13; lim = 13;
1381 hres = ITextDocument_Range(txtDoc,
first, lim, &txtRge);
1384 hres = ITextRange_GetChar(txtRge, &
pch);
1386 ok(
pch ==
'\r',
"got wrong char: %c\n", (
char)
pch);
1387 ITextRange_Release(txtRge);
1392 first = 12; lim = 12;
1393 hres = ITextDocument_Range(txtDoc,
first, lim, &txtRge);
1395 hres = ITextRange_GetChar(txtRge,
NULL);
1400 hres = ITextRange_GetChar(txtRge,
NULL);
1403 hres = ITextRange_GetChar(txtRge, &
pch);
1406 ITextRange_Release(txtRge);
1411 LONG bStart,
int expected_nonzero)
1420 hres = ITextDocument_Range(doc,
first, lim, &txtRge);
1422 hres = ITextRange_ScrollIntoView(txtRge, bStart);
1425 if (expected_nonzero) {
1427 "Scrollbar at 0, should be >0. (TextRange %d-%d, scroll range %d-%d.)\n",
1431 "Scrollbar at %d, should be 0. (TextRange %d-%d, scroll range %d-%d.)\n",
1443 static const CHAR test_text1[] =
"1\n2\n3\n4\n5\n6\n7\n8\n9\n10";
1464 hres = ITextDocument_Range(txtDoc, 0, 0, &txtRge);
1469 ITextRange_Release(txtRge);
1481 static const CHAR test_text1[] =
"TestSomeText";
1489 hres = ITextSelection_GetChar(txtSel, &
pch);
1490 ok(
hres ==
S_OK,
"ITextSelection_GetChar\n");
1491 ok(
pch ==
'T',
"got wrong char: %c\n", (
char)
pch);
1496 hres = ITextSelection_GetChar(txtSel, &
pch);
1497 ok(
hres ==
S_OK,
"ITextSelection_GetChar\n");
1498 ok(
pch ==
'T',
"got wrong char: %c\n", (
char)
pch);
1500 first = 12; lim = 12;
1503 hres = ITextSelection_GetChar(txtSel, &
pch);
1504 ok(
hres ==
S_OK,
"ITextSelection_GetChar\n");
1505 ok(
pch ==
'\r',
"got wrong char: %c\n", (
char)
pch);
1507 first = 13; lim = 13;
1510 hres = ITextSelection_GetChar(txtSel, &
pch);
1511 ok(
hres ==
S_OK,
"ITextSelection_GetChar\n");
1512 ok(
pch ==
'\r',
"got wrong char: %c\n", (
char)
pch);
1514 hres = ITextSelection_GetChar(txtSel,
NULL);
1519 hres = ITextSelection_GetChar(txtSel,
NULL);
1522 hres = ITextSelection_GetChar(txtSel, &
pch);
1525 ITextSelection_Release(txtSel);
1537 static const CHAR test_text1[] =
"TestSomeText";
1543 hres = ITextDocument_Range(txtDoc,
first, lim, &txtRge);
1546 hres = ITextRange_GetStart(txtRge, &
start);
1550 hres = ITextRange_GetEnd(txtRge, &
end);
1552 ok(
end == 6,
"got wrong end value: %ld\n",
end);
1553 ITextRange_Release(txtRge);
1556 hres = ITextDocument_Range(txtDoc,
first, lim, &txtRge);
1559 hres = ITextRange_GetStart(txtRge, &
start);
1563 hres = ITextRange_GetEnd(txtRge, &
end);
1565 ok(
end == 6,
"got wrong end value: %ld\n",
end);
1566 ITextRange_Release(txtRge);
1568 first = -1; lim = 13;
1569 hres = ITextDocument_Range(txtDoc,
first, lim, &txtRge);
1572 hres = ITextRange_GetStart(txtRge, &
start);
1576 hres = ITextRange_GetEnd(txtRge, &
end);
1578 ok(
end == 13,
"got wrong end value: %ld\n",
end);
1579 ITextRange_Release(txtRge);
1581 first = 13; lim = 13;
1582 hres = ITextDocument_Range(txtDoc,
first, lim, &txtRge);
1585 hres = ITextRange_GetStart(txtRge, &
start);
1587 ok(
start == 12,
"got wrong start value: %ld\n",
start);
1589 hres = ITextRange_GetEnd(txtRge, &
end);
1591 ok(
end == 12,
"got wrong end value: %ld\n",
end);
1594 hres = ITextRange_SetStart(txtRge, 0);
1598 hres = ITextRange_SetStart(txtRge, 0);
1601 hres = ITextRange_SetStart(txtRge, 1);
1606 hres = ITextRange_SetStart(txtRge, -1);
1609 hres = ITextRange_SetStart(txtRge, -1);
1612 hres = ITextRange_SetStart(txtRge, 0);
1616 hres = ITextRange_GetStart(txtRge, &
start);
1621 hres = ITextRange_SetStart(txtRge, 1);
1624 hres = ITextRange_SetEnd(txtRge, 3);
1627 hres = ITextRange_SetStart(txtRge, 10);
1631 hres = ITextRange_GetStart(txtRge, &
start);
1636 hres = ITextRange_GetEnd(txtRge, &
end);
1641 hres = ITextRange_SetStart(txtRge, 50);
1645 hres = ITextRange_GetStart(txtRge, &
start);
1650 hres = ITextRange_GetEnd(txtRge, &
end);
1655 hres = ITextRange_SetStart(txtRge, 0);
1659 hres = ITextRange_SetEnd(txtRge, 5);
1662 hres = ITextRange_SetEnd(txtRge, 5);
1666 hres = ITextRange_SetEnd(txtRge, -1);
1670 hres = ITextRange_GetEnd(txtRge, &
end);
1675 hres = ITextRange_GetStart(txtRge, &
start);
1680 hres = ITextRange_SetStart(txtRge, 3);
1683 hres = ITextRange_SetEnd(txtRge, 1);
1687 hres = ITextRange_GetStart(txtRge, &
start);
1692 hres = ITextRange_GetEnd(txtRge, &
end);
1697 hres = ITextRange_SetEnd(txtRge, 50);
1701 hres = ITextRange_GetStart(txtRge, &
start);
1706 hres = ITextRange_GetEnd(txtRge, &
end);
1711 hres = ITextRange_SetEnd(txtRge, 0);
1715 hres = ITextRange_GetStart(txtRge, &
start);
1720 hres = ITextRange_GetEnd(txtRge, &
end);
1727 hres = ITextRange_SetStart(txtRge, 0);
1730 hres = ITextRange_SetEnd(txtRge, 3);
1733 hres = ITextRange_GetStart(txtRge, &
start);
1736 hres = ITextRange_GetStart(txtRge,
NULL);
1739 hres = ITextRange_GetEnd(txtRge, &
end);
1742 hres = ITextRange_GetEnd(txtRge,
NULL);
1745 ITextRange_Release(txtRge);
1757 static const CHAR test_text1[] =
"TestSomeText";
1765 hres = ITextSelection_GetStart(txtSel, &
start);
1766 ok(
hres ==
S_OK,
"ITextSelection_GetStart\n");
1769 hres = ITextSelection_GetEnd(txtSel, &
end);
1771 ok(
end == 5,
"got wrong end value: %ld\n",
end);
1776 hres = ITextSelection_GetStart(txtSel, &
start);
1777 ok(
hres ==
S_OK,
"ITextSelection_GetStart\n");
1780 hres = ITextSelection_GetEnd(txtSel, &
end);
1782 ok(
end == 5,
"got wrong end value: %ld\n",
end);
1784 first = 0; lim = -1;
1787 hres = ITextSelection_GetStart(txtSel, &
start);
1788 ok(
hres ==
S_OK,
"ITextSelection_GetStart\n");
1791 hres = ITextSelection_GetEnd(txtSel, &
end);
1793 ok(
end == 13,
"got wrong end value: %ld\n",
end);
1795 first = 13; lim = 13;
1798 hres = ITextSelection_GetStart(txtSel, &
start);
1799 ok(
hres ==
S_OK,
"ITextSelection_GetStart\n");
1800 ok(
start == 12,
"got wrong start value: %ld\n",
start);
1802 hres = ITextSelection_GetEnd(txtSel, &
end);
1804 ok(
end == 12,
"got wrong end value: %ld\n",
end);
1807 hres = ITextSelection_SetStart(txtSel, 0);
1811 hres = ITextSelection_SetStart(txtSel, 0);
1814 hres = ITextSelection_SetStart(txtSel, 1);
1819 hres = ITextSelection_SetStart(txtSel, -1);
1822 hres = ITextSelection_SetStart(txtSel, -1);
1825 hres = ITextSelection_SetStart(txtSel, 0);
1829 hres = ITextSelection_GetStart(txtSel, &
start);
1834 hres = ITextSelection_SetStart(txtSel, 1);
1837 hres = ITextSelection_SetEnd(txtSel, 3);
1840 hres = ITextSelection_SetStart(txtSel, 10);
1844 hres = ITextSelection_GetStart(txtSel, &
start);
1849 hres = ITextSelection_GetEnd(txtSel, &
end);
1854 hres = ITextSelection_SetStart(txtSel, 50);
1858 hres = ITextSelection_GetStart(txtSel, &
start);
1863 hres = ITextSelection_GetEnd(txtSel, &
end);
1868 hres = ITextSelection_SetStart(txtSel, 0);
1872 hres = ITextSelection_SetEnd(txtSel, 5);
1875 hres = ITextSelection_SetEnd(txtSel, 5);
1879 hres = ITextSelection_SetEnd(txtSel, -1);
1883 hres = ITextSelection_GetEnd(txtSel, &
end);
1888 hres = ITextSelection_GetStart(txtSel, &
start);
1893 hres = ITextSelection_SetStart(txtSel, 3);
1896 hres = ITextSelection_SetEnd(txtSel, 1);
1900 hres = ITextSelection_GetStart(txtSel, &
start);
1905 hres = ITextSelection_GetEnd(txtSel, &
end);
1910 hres = ITextSelection_SetEnd(txtSel, 50);
1914 hres = ITextSelection_GetStart(txtSel, &
start);
1919 hres = ITextSelection_GetEnd(txtSel, &
end);
1924 hres = ITextSelection_SetEnd(txtSel, 0);
1928 hres = ITextSelection_GetStart(txtSel, &
start);
1933 hres = ITextSelection_GetEnd(txtSel, &
end);
1940 hres = ITextSelection_GetStart(txtSel,
NULL);
1943 hres = ITextSelection_GetStart(txtSel, &
start);
1946 hres = ITextSelection_GetEnd(txtSel,
NULL);
1949 hres = ITextSelection_GetEnd(txtSel, &
end);
1952 ITextSelection_Release(txtSel);
1964 static const CHAR test_text1[] =
"TestSomeText";
1969 hres = ITextDocument_Range(txtDoc,
first, lim, &txtRge);
1972 hres = ITextRange_GetDuplicate(txtRge, &txtRgeDup);
1973 ok(
hres ==
S_OK,
"ITextRange_GetDuplicate\n");
1974 ok(txtRgeDup != txtRge,
"A new pointer should be returned\n");
1975 hres = ITextRange_GetStart(txtRgeDup, &
start);
1978 hres = ITextRange_GetEnd(txtRgeDup, &
end);
1980 ok(
end == lim,
"got wrong value: %ld\n",
end);
1982 ITextRange_Release(txtRgeDup);
1984 hres = ITextRange_GetDuplicate(txtRge,
NULL);
1989 hres = ITextRange_GetDuplicate(txtRge,
NULL);
1992 hres = ITextRange_GetDuplicate(txtRge, &txtRgeDup);
1995 ITextRange_Release(txtRge);
2006 static const CHAR test_text1[] =
"TestSomeText";
2012 hres = ITextDocument_Range(txtDoc,
first, lim, &txtRge);
2016 hres = ITextRange_GetStart(txtRge, &
start);
2019 hres = ITextRange_GetEnd(txtRge, &
end);
2021 ok(
end == 4,
"got wrong end value: %ld\n",
end);
2022 ITextRange_Release(txtRge);
2024 hres = ITextDocument_Range(txtDoc,
first, lim, &txtRge);
2028 hres = ITextRange_GetStart(txtRge, &
start);
2031 hres = ITextRange_GetEnd(txtRge, &
end);
2033 ok(
end == 4,
"got wrong end value: %ld\n",
end);
2034 ITextRange_Release(txtRge);
2036 hres = ITextDocument_Range(txtDoc,
first, lim, &txtRge);
2040 hres = ITextRange_GetStart(txtRge, &
start);
2043 hres = ITextRange_GetEnd(txtRge, &
end);
2045 ok(
end == 8,
"got wrong end value: %ld\n",
end);
2046 ITextRange_Release(txtRge);
2048 hres = ITextDocument_Range(txtDoc,
first, lim, &txtRge);
2052 hres = ITextRange_GetStart(txtRge, &
start);
2055 hres = ITextRange_GetEnd(txtRge, &
end);
2057 ok(
end == 8,
"got wrong end value: %ld\n",
end);
2058 ITextRange_Release(txtRge);
2061 hres = ITextDocument_Range(txtDoc,
first, lim, &txtRge);
2063 hres = ITextRange_Collapse(txtRge, 256);
2065 hres = ITextRange_GetStart(txtRge, &
start);
2068 hres = ITextRange_GetEnd(txtRge, &
end);
2070 ok(
end == 4,
"got wrong end value: %ld\n",
end);
2071 ITextRange_Release(txtRge);
2074 hres = ITextDocument_Range(txtDoc,
first, lim, &txtRge);
2078 hres = ITextRange_GetStart(txtRge, &
start);
2081 hres = ITextRange_GetEnd(txtRge, &
end);
2083 ok(
end == 6,
"got wrong end value: %ld\n",
end);
2084 ITextRange_Release(txtRge);
2087 hres = ITextDocument_Range(txtDoc,
first, lim, &txtRge);
2091 hres = ITextRange_GetStart(txtRge, &
start);
2094 hres = ITextRange_GetEnd(txtRge, &
end);
2096 ok(
end == 8,
"got wrong end value: %ld\n",
end);
2106 ITextRange_Release(txtRge);
2117 static const CHAR test_text1[] =
"TestSomeText";
2125 ok(
hres ==
S_OK,
"ITextSelection_Collapse\n");
2128 ok(
end == 4,
"got wrong end value: %ld\n",
end);
2132 ok(
hres ==
S_OK,
"ITextSelection_Collapse\n");
2135 ok(
end == 4,
"got wrong end value: %ld\n",
end);
2139 ok(
hres ==
S_OK,
"ITextSelection_Collapse\n");
2142 ok(
end == 8,
"got wrong end value: %ld\n",
end);
2145 hres = ITextSelection_Collapse(txtSel,
tomEnd);
2146 ok(
hres ==
S_OK,
"ITextSelection_Collapse\n");
2149 ok(
end == 8,
"got wrong end value: %ld\n",
end);
2153 hres = ITextSelection_Collapse(txtSel, 256);
2154 ok(
hres ==
S_OK,
"ITextSelection_Collapse\n");
2157 ok(
end == 4,
"got wrong end value: %ld\n",
end);
2161 hres = ITextSelection_Collapse(txtSel,
tomEnd);
2165 ok(
end == 6,
"got wrong end value: %ld\n",
end);
2173 ok(
end == 8,
"got wrong end value: %ld\n",
end);
2183 ITextSelection_Release(txtSel);
2195 LONG refcount1, refcount2;
2198 hres = IRichEditOle_GetClientSite(reOle, &clientSite);
2199 ok(
hres ==
S_OK,
"IRichEditOle_QueryInterface: 0x%08lx\n",
hres);
2202 hres = IOleClientSite_QueryInterface(clientSite, &IID_IRichEditOle, (
void **)&reOle1);
2205 hres = IRichEditOle_GetClientSite(reOle, &clientSite1);
2207 ok(clientSite != clientSite1,
"got %p, %p\n", clientSite, clientSite1);
2208 IOleClientSite_Release(clientSite1);
2211 ok(
hres ==
S_OK,
"IOleClientSite_QueryInterface: 0x%08lx\n",
hres);
2212 ok(clientSite == clientSite1,
"Should not return a new pointer.\n");
2217 ok(
hres ==
S_OK,
"IOleClientSite_QueryInterface: 0x%08lx\n",
hres);
2220 ok(refcount1 == refcount2,
"got wrong ref count.\n");
2222 hres = IOleClientSite_QueryInterface(clientSite, &
IID_IOleWindow, (
void **)&oleWin1);
2223 ok(
hres ==
S_OK,
"IOleClientSite_QueryInterface: 0x%08lx\n",
hres);
2224 ok(oleWin == oleWin1,
"Should not return a new pointer.\n");
2227 ok(refcount1 == refcount2,
"got wrong ref count.\n");
2231 ok(clientSite2 == clientSite1,
"got wrong pointer\n");
2235 ok(
hres ==
S_OK,
"IOleClientSite_QueryInterface: 0x%08lx\n",
hres);
2238 ok(refcount1 == refcount2,
"got wrong ref count.\n");
2241 ok(
hres ==
S_OK,
"IOleClientSite_QueryInterface: 0x%08lx\n",
hres);
2242 ok(olePlace == olePlace1,
"Should not return a new pointer.\n");
2243 IOleInPlaceSite_Release(olePlace1);
2249 ok(refcount1 == refcount2,
"got wrong ref count.\n");
2251 IOleInPlaceSite_Release(olePlace1);
2252 IOleInPlaceSite_Release(olePlace);
2253 IOleWindow_Release(oleWin1);
2254 IOleWindow_Release(oleWin);
2255 IOleClientSite_Release(clientSite2);
2256 IOleClientSite_Release(clientSite1);
2257 IOleClientSite_Release(clientSite);
2272 hres = IRichEditOle_GetClientSite(reOle, &clientSite);
2273 ok(
hres ==
S_OK,
"IRichEditOle_QueryInterface: 0x%08lx\n",
hres);
2276 ok(
hres ==
S_OK,
"IOleClientSite_QueryInterface: 0x%08lx\n",
hres);
2277 hres = IOleWindow_GetWindow(oleWin, &
hwnd);
2279 ok(
w ==
hwnd,
"got wrong pointer\n");
2281 hres = IOleWindow_GetWindow(oleWin,
NULL);
2284 IOleWindow_Release(oleWin);
2285 IOleClientSite_Release(clientSite);
2300 hres = IRichEditOle_GetClientSite(reOle, &clientSite);
2301 ok(
hres ==
S_OK,
"IRichEditOle_QueryInterface: 0x%08lx\n",
hres);
2304 ok(
hres ==
S_OK,
"IOleClientSite_QueryInterface: 0x%08lx\n",
hres);
2305 hres = IOleInPlaceSite_GetWindow(olePlace, &
hwnd);
2307 ok(
w ==
hwnd,
"got wrong pointer.\n");
2309 hres = IOleInPlaceSite_GetWindow(olePlace,
NULL);
2312 IOleInPlaceSite_Release(olePlace);
2313 IOleClientSite_Release(clientSite);
2319 static const CHAR test_text1[] =
"TestSomeText";
2341 ok(
font != font2,
"got %p, %p\n",
font, font2);
2342 ITextFont_Release(font2);
2343 ITextFont_Release(
font);
2349 hr = ITextDocument_Range(doc, 0, 4, &
range);
2367 hr = ITextRange_GetFont(
range, &font2);
2369 ok(
font != font2,
"got %p, %p\n",
font, font2);
2377 ITextFont_Release(font2);
2423 ITextFont_Release(
font);
2429 hr = ITextRange_GetFont(
range, &font2);
2432 ITextRange_Release(
range);
2437 static const CHAR test_text1[] =
"TestSomeText";
2452 hr = ITextDocument_Range(doc, 0, 4, &
range);
2462 hr = ITextRange_GetPara(
range, ¶);
2470 hr = ITextRange_GetPara(
range, ¶2);
2472 ok(para != para2,
"got %p, %p\n", para, para2);
2480 ITextPara_Release(para);
2481 ITextPara_Release(para2);
2497 ok(para != para2,
"got %p, %p\n", para, para2);
2499 ITextPara_Release(para);
2500 ITextPara_Release(para2);
2506 hr = ITextRange_GetPara(
range, ¶);
2516 ITextRange_Release(
range);
2521 static const WCHAR testnameW[] = {
'G',
'e',
't',
'T',
'e',
'x',
't',0};
2522 static const WCHAR testname2W[] = {
'T',
'e',
'x',
't',0};
2535 hr = ITextDocument_Range(doc, 0, 0, &
range);
2543 ok(dispid == DISPID_UNKNOWN,
"got %ld\n", dispid);
2549 ok(dispid == DISPID_VALUE,
"got %ld\n", dispid);
2561 ok(dispid == DISPID_VALUE,
"got %ld\n", dispid);
2563 ITextRange_Release(
range);
2577 ok(
hr == hrexp,
"got 0x%08lx\n",
hr);
2583 ok(
hr == hrexp,
"got 0x%08lx\n",
hr);
2589 ok(
hr == hrexp,
"got 0x%08lx\n",
hr);
2595 ok(
hr == hrexp,
"got 0x%08lx\n",
hr);
2601 ok(
hr == hrexp,
"got 0x%08lx\n",
hr);
2607 ok(
hr == hrexp,
"got 0x%08lx\n",
hr);
2613 ok(
hr == hrexp,
"got 0x%08lx\n",
hr);
2619 ok(
hr == hrexp,
"got 0x%08lx\n",
hr);
2625 ok(
hr == hrexp,
"got 0x%08lx\n",
hr);
2631 ok(
hr == hrexp,
"got 0x%08lx\n",
hr);
2687 hr = ITextFont_GetKerning(
font, &valuef);
2689 ok(valuef == 0.0,
"got %.2f\n", valuef);
2708 hr = ITextFont_GetPosition(
font, &valuef);
2710 ok(valuef == 0.0,
"got %.2f\n", valuef);
2723 hr = ITextFont_GetSize(
font, &valuef);
2725 ok(valuef >= 0.0,
"got %.2f\n", valuef);
2733 hr = ITextFont_GetSpacing(
font, &valuef);
2735 ok(valuef == 0.0,
"got %.2f\n", valuef);
2815 hr = ITextFont_GetKerning(
font, &valuef);
2830 hr = ITextFont_GetPosition(
font, &valuef);
2845 hr = ITextFont_GetSize(
font, &valuef);
2855 hr = ITextFont_GetSpacing(
font, &valuef);
2887 return value * 72.0 / 1440;
2892 static const WCHAR arialW[] = {
'A',
'r',
'i',
'a',
'l',0};
2893 static const CHAR test_text1[] =
"TestSomeText";
2909 hr = ITextDocument_Range(doc, 0, 10, &
range);
2930 hr = ITextFont_SetPosition(
font, 20.0);
2933 hr = ITextFont_SetKerning(
font, 10.0);
2937 hr = ITextFont_GetPosition(
font, &position);
2945 cf.cbSize =
sizeof(
cf);
2953 ok(position ==
twips_to_points(
cf.yOffset),
"got yOffset %ld, position %.2f\n",
cf.yOffset, position);
2962 hr = ITextFont_GetDuplicate(
font, &font2);
2971 ITextFont_Release(font2);
2982 cf.cbSize =
sizeof(
cf);
3024 hr = ITextFont_GetDuplicate(
font, &font2);
3044 hr = ITextFont_GetItalic(font2, &
value);
3049 hr = ITextFont_GetDuplicate(font2, &font3);
3051 ITextFont_Release(font3);
3053 ITextRange_Release(
range);
3063 hr = ITextFont_GetDuplicate(font2, &font3);
3065 ITextFont_Release(font3);
3069 hr = ITextFont_GetBold(font2, &
value);
3083 hr = ITextFont_GetDuplicate(font2, &font3);
3102 hr = ITextFont_GetItalic(font2, &
value);
3110 ITextFont_Release(font3);
3111 ITextFont_Release(font2);
3113 font2 = (
void*)0xdeadbeef;
3114 hr = ITextFont_GetDuplicate(
font, &font2);
3116 ok(font2 ==
NULL,
"got %p\n", font2);
3121 ITextFont_Release(
font);
3127 hr = ITextDocument_Range(doc, 0, 10, &
range);
3226 ITextRange_Release(
range);
3227 ITextFont_Release(
font);
3233 static const CHAR test_text1[] =
"TestSomeText";
3244 hr = ITextDocument_Range(doc, 0, 4, &
range);
3247 hr = ITextDocument_Range(doc, 1, 2, &range2);
3272 hr = ITextRange_GetStart(range2, &
value);
3276 hr = ITextRange_GetEnd(range2, &
value);
3281 ITextRange_Release(
range);
3282 ITextRange_Release(range2);
3288 static const CHAR test_text1[] =
"TestSomeText";
3289 static const WCHAR textW[] = {
'a',
'b',
'c',
'd',
'e',
'f',
'g',
'h',
'i',0};
3301 hr = ITextDocument_Range(doc, 0, 4, &
range);
3304 hr = ITextDocument_Range(doc, 0, 4, &range2);
3308 hr = ITextRange_GetStart(range2, &
value);
3313 hr = ITextRange_GetEnd(range2, &
value);
3321 hr = ITextRange_GetEnd(range2, &
value);
3341 hr = ITextRange_GetStart(range2, &
value);
3346 hr = ITextRange_GetEnd(range2, &
value);
3359 ITextRange_Release(range2);
3370 ITextRange_Release(
range);
3375 static const CHAR test_text1[] =
"TestSomeText";
3388 hr = ITextDocument_Range(doc, 0, 4, &
range);
3391 hr = ITextDocument_Range(doc, 0, 4, &range2);
3395 hr = ITextDocument_Range(doc, 1, 2, &range3);
3477 ITextRange_Release(
range);
3478 ITextRange_Release(range2);
3479 ITextRange_Release(range3);
3485 static const CHAR test_text1[] =
"TestSomeText";
3498 hr = ITextDocument_Range(doc, 0, 4, &
range);
3501 hr = ITextDocument_Range(doc, 0, 4, &range2);
3505 hr = ITextDocument_Range(doc, 1, 2, &range3);
3592 ITextRange_Release(
range);
3593 ITextRange_Release(range2);
3594 ITextRange_Release(range3);
3602 ok(
p.x != -1 &&
p.y != -1,
"p.x:%ld p.y:%ld\n",
p.x,
p.y);
3608 static const CHAR test_text1[] =
"TestSomeText";
3609 static const CHAR test_text2[] =
"text\nwith\nbreak\n"
3610 "lines\ntest\ntest\n";
3625 hr = ITextDocument_Range(doc, 0, 4, &
range);
3629 hr = ITextRange_Select(
range);
3632 ok(scroll_pos1 == scroll_pos2,
"%d != %d\n", scroll_pos1, scroll_pos2);
3639 hr = ITextRange_Select(
range);
3647 hr = ITextDocument_Range(doc, 10, 16, &
range);
3650 hr = ITextRange_Select(
range);
3653 ok(scroll_pos1 != scroll_pos2,
"%d == %d\n", scroll_pos1, scroll_pos2);
3657 hr = ITextRange_Select(
range);
3663 ITextRange_Release(
range);
3669 static const CHAR test_text1[] =
"TestSomeText";
3682 hr = ITextDocument_Range(doc, 0, 4, &
range);
3719 ITextRange_Release(
range);
3725 static const CHAR test_text1[] =
"TestSomeText";
3739 hr = ITextDocument_Range(doc, 0, 4, &
range);
3742 hr = ITextDocument_Range(doc, 5, 2, &range2);
3751 hr = ITextRange_GetFont(range2, &font2);
3766 hr = ITextRange_SetFont(
range, font2);
3778 hr = ITextFont_SetItalic(font2,
tomTrue);
3781 hr = ITextRange_SetFont(
range, font2);
3803 ITextFont_Release(
font);
3804 ITextFont_Release(font2);
3805 ITextRange_Release(
range);
3806 ITextRange_Release(range2);
3827#define CHECK_REOBJECT_STRUCT(reole,index,flags,cp,cp_check,poleobj,pstg,polesite,user) \
3828 _check_reobject_struct(reole, index, flags, cp, cp_check, poleobj, pstg, polesite, user, __LINE__)
3837 hr = IRichEditOle_GetObject(reole,
index, &reobj,
flags);
3838 ok(
hr ==
S_OK,
"IRichEditOle_GetObject failed: %#lx.\n",
hr);
3839 ok_(__FILE__,
line)(reobj.
cp == cp_check,
"expected cp = %ld, got %ld.\n", cp_check, reobj.
cp);
3840 ok_(__FILE__,
line)(reobj.
poleobj == poleobj,
"got wrong object interface.\n");
3841 ok_(__FILE__,
line)(reobj.
pstg == pstg,
"got wrong storage interface.\n");
3842 ok_(__FILE__,
line)(reobj.
polesite == polesite,
"got wrong site interface.\n");
3846#define INSERT_REOBJECT(callback,reole,reobj,cp,user) \
3847 _insert_reobject(callback, reole, reobj, cp, user, __LINE__)
3857 ok_(__FILE__,
line)(
hr ==
S_OK,
"IRichEditOle_GetClientSite got hr %#lx.\n",
hr);
3859 hr = IRichEditOle_InsertObject(reole, reobj);
3860 ok_(__FILE__,
line)(
hr ==
S_OK,
"IRichEditOle_InsertObject got hr %#lx.\n",
hr);
3877 static CHAR test_text1[] =
"abcdefg";
3880 REOBJECT reo1, reo2, reo3, received_reo;
3884 const CHAR *expected_stringA;
3888 FORMATETC formatetc;
3891 STGMEDIUM stgmedium;
3907 ok( !!sendres,
"EM_SETOLECALLBACK should succeed\n" );
3916 ok((
result > 0 && gle == 0xdeadbeef) ||
3918 "EM_GETSELTEXT returned %ld gle=%lu\n",
result, gle);
3919 bad_getsel = (gle != 0xdeadbeef);
3921 trace(
"EM_GETSELTEXT is broken, some tests will be ignored\n");
3925 hr = IRichEditOle_InsertObject(reole,
NULL);
3931 count = IRichEditOle_GetObjectCount(reole);
3932 ok(
count == 1,
"got wrong object count: %ld\n",
count);
3937 count = IRichEditOle_GetObjectCount(reole);
3938 ok(
count == 2,
"got wrong object count: %ld\n",
count);
3943 count = IRichEditOle_GetObjectCount(reole);
3944 ok(
count == 3,
"got wrong object count: %ld\n",
count);
3952 ok(
hr ==
S_OK,
"IRichEditOle_GetClientSite got hr %#lx.\n",
hr);
3957 hr = IRichEditOle_InsertObject(reole, &reobj);
3958 ok(
hr ==
S_FALSE,
"IRichEditOle_InsertObject got hr %#lx.\n",
hr);
3963 count = IRichEditOle_GetObjectCount(reole);
3964 ok(
count == 3,
"got wrong object count: %ld\n",
count);
3972 hr = IRichEditOle_GetObject(reole, 2,
NULL, REO_GETOBJ_ALL_INTERFACES);
3976 hr = IRichEditOle_GetObject(reole, 2, &received_reo, REO_GETOBJ_ALL_INTERFACES);
3982 hr = IRichEditOle_GetObject(reole, 3, &received_reo, REO_GETOBJ_POLESITE);
3985 hr = IRichEditOle_GetObject(reole, 4, &received_reo, REO_GETOBJ_POLESITE);
3988 hr = IRichEditOle_GetObject(reole, 1024, &received_reo, REO_GETOBJ_POLESITE);
3991 hr = IRichEditOle_GetObject(reole, -10, &received_reo, REO_GETOBJ_POLESITE);
3995 received_reo.
cbStruct =
sizeof(received_reo);
3997 hr = IRichEditOle_GetObject(reole, 2, &received_reo, REO_GETOBJ_NO_INTERFACES);
3998 ok(
hr ==
S_OK,
"IRichEditOle_GetObject failed: 0x%08lx\n",
hr);
3999 ok(received_reo.
polesite ==
NULL,
"Got wrong site interface.\n");
4005 received_reo.
cbStruct =
sizeof(received_reo);
4008 received_reo.
cp = 4;
4009 hr = IRichEditOle_GetObject(reole, REO_IOB_USE_CP, &received_reo, REO_GETOBJ_ALL_INTERFACES);
4012 ok(received_reo.
dwUser == 4,
"Got wrong user-defined value: %ld.\n", received_reo.
dwUser);
4036 received_reo.
cbStruct =
sizeof(received_reo);
4037 received_reo.
cp = 0;
4038 hr = IRichEditOle_GetObject(reole, REO_IOB_SELECTION, &received_reo, REO_GETOBJ_ALL_INTERFACES);
4064 expected_string =
L"abc\xfffc"L"d\xfffc"L"efg";
4066 expected_string =
L"abc\xfffc""d\xfffc""efg";
4097 expected_string =
L"abc d efg";
4104 expected_stringA =
"abc d efg";
4105 memset(bufferA, 0,
sizeof(bufferA));
4111 "Got wrong length: %ld (gle %lu)\n",
result, gle);
4112 ok(!
strcmp(bufferA, expected_stringA) ||
broken(bad_getsel && !*bufferA),
4113 "Got wrong content: %s (gle %lu)\n", bufferA, gle);
4115 memset(bufferA, 0,
sizeof(bufferA));
4121 ok(!
strcmp(bufferA, expected_stringA),
"Got wrong content: %s.\n", bufferA);
4124 expected_string =
L"abc\xfffc"L"d\xfffc"L"efg\r";
4126 expected_string =
L"abc\xfffc""d\xfffc""efg\r";
4129 hr = ITextDocument_Range(doc, 0, 11, &
range);
4131 hr = ITextRange_GetText(
range, &bstr);
4136 hr = ITextRange_SetRange(
range, 3, 4);
4141 ITextRange_Release(
range);
4163 expected_string =
L"abc d efg";
4164 charrange.
cpMin = 0;
4165 charrange.
cpMax = 11;
4166 hr = IRichEditOle_GetClipboardData(reole, &charrange, 1, &dataobject);
4169 formatetc.dwAspect = DVASPECT_CONTENT;
4170 formatetc.ptd =
NULL;
4171 formatetc.tymed = TYMED_HGLOBAL;
4172 formatetc.lindex = -1;
4173 hr = IDataObject_GetData(dataobject, &formatetc, &stgmedium);
4181 expected_string =
L"abc\xfffc"L"d\xfffc"L"efg";
4183 expected_string =
L"abc\xfffc""d\xfffc""efg";
4201 expected_stringA =
"abc d efg";
4202 memset(bufferA, 0,
sizeof(bufferA));
4208 "Got wrong length: %ld (gle %lu)\n",
result, gle);
4209 ok(!
strcmp(bufferA, expected_stringA) ||
broken(bad_getsel && !*bufferA),
4210 "Got wrong content: %s (gle %lu)\n", bufferA, gle);
4212 memset(bufferA, 0,
sizeof(bufferA));
4218 ok(!
strcmp(bufferA, expected_stringA),
"Got wrong content: %s.\n", bufferA);
4221 expected_string =
L"abc\xfffc"L"d\xfffc"L"efg";
4223 expected_string =
L"abc\xfffc""d\xfffc""efg";
4226 hr = ITextDocument_Range(doc, 0, 11, &
range);
4228 hr = ITextRange_GetText(
range, &bstr);
4233 hr = ITextRange_SetRange(
range, 3, 4);
4238 ITextRange_Release(
range);
4253 ok(
hr ==
S_OK,
"testoleobj_Create got hr %#lx.\n",
hr);
4262 ok(
hr ==
S_OK,
"IRichEditOle_GetClientSite got hr %#lx.\n",
hr);
4264 ok(
hr ==
S_OK,
"IOleObject_SetClientSite got hr %#lx.\n",
hr);
4267 &CLSID_testoleobj,
NULL, REO_CP_SELECTION,
S_OK);
4269 reobj.
clsid = CLSID_testoleobj;
4270 hr = IRichEditOle_InsertObject(reole, &reobj);
4271 ok(
hr ==
S_OK,
"IRichEditOle_InsertObject got hr %#lx.\n",
hr);
4280 ok(
testobj->draw_count != 0,
"expected draw_count to be nonzero, got %d\n",
testobj->draw_count);
4287 ok(
hr ==
S_OK,
"IRichEditOle_GetClientSite got hr %#lx.\n",
hr);
4289 ok(
hr ==
S_OK,
"IOleObject_SetClientSite got hr %#lx.\n",
hr);
4292 &CLSID_testoleobj,
NULL, REO_CP_SELECTION,
S_OK);
4294 reobj.
clsid = CLSID_testoleobj;
4295 hr = IRichEditOle_InsertObject(reole, &reobj);
4296 ok(
hr ==
S_OK,
"IRichEditOle_InsertObject got hr %#lx.\n",
hr);
4299 memset(&reobj, 0xcc,
sizeof(reobj));
4301 hr = IRichEditOle_GetObject(reole, 0, &reobj, REO_GETOBJ_NO_INTERFACES);
4302 ok(
hr ==
S_OK,
"IRichEditOle_GetObject got hr %#lx.\n",
hr);
4303 ok(reobj.
sizel.
cx == 800,
"expected reobj.sizel.cx to be %ld, got %ld\n", 800L, reobj.
sizel.
cx);
4304 ok(reobj.
sizel.
cy == 400,
"expected reobj.sizel.cy to be %ld, got %ld\n", 400L, reobj.
sizel.
cy);
4311 ok(
testobj->draw_count != 0,
"expected draw_count to be nonzero, got %d\n",
testobj->draw_count);
4314 IOleObject_Release(&
testobj->IOleObject_iface);
4319 ok( !!sendres,
"EM_SETOLECALLBACK should succeed\n" );
4338 ref = IRichEditOleCallback_Release(&
callback->IRichEditOleCallback_iface);
4339 ok(
ref == 0,
"expected IRichEditOleCallback recount to be 0, got %lu\n",
ref);
4343 skip(
"cannot test InsertObject with callback\n");
4349 static const CHAR test_text1[] =
"TestSomeText";
4362 hr = ITextDocument_Range(doc, 0, 4, &
range);
4412 ITextRange_Release(
range);
4417 static const CHAR test_text1[] =
"TestSomeText";
4439 hr = ITextSelection_GetDuplicate(
selection, &range2);
4447 ITextRange_Release(range2);
4471 hr = ITextRange_QueryInterface(
range, &IID_ITextSelection, (
void**)&sel2);
4486 ITextRange_Release(
range);
4489#define RESET_RANGE(range,start,end) \
4490 _reset_range(range, start, end, __LINE__)
4501#define CHECK_RANGE(range,expected_start,expected_end) \
4502 _check_range(range, expected_start, expected_end, __LINE__)
4510 ok_(__FILE__,
line)(
value == expected_start,
"Expected start %ld got %ld\n",
4511 expected_start,
value);
4514 ok_(__FILE__,
line)(
value == expected_end,
"Expected end %ld got %ld\n",
4515 expected_end,
value);
4518#define RESET_SELECTION(selection,start,end) \
4519 _reset_selection(selection, start, end, __LINE__)
4530#define CHECK_SELECTION(selection,expected_start,expected_end) \
4531 _check_selection(selection, expected_start, expected_end, __LINE__)
4539 ok_(__FILE__,
line)(
value == expected_start,
"Expected start %ld got %ld\n",
4540 expected_start,
value);
4543 ok_(__FILE__,
line)(
value == expected_end,
"Expected end %ld got %ld\n",
4544 expected_end,
value);
4549 static const CHAR test_text1[] =
"TestSomeText";
4558 ITextDocument_Range(txtDoc, 0, 0, &txtRge);
4560 hr = ITextRange_SetRange(txtRge, 2, 4);
4564 hr = ITextRange_SetRange(txtRge, 2, 4);
4568 hr = ITextRange_SetRange(txtRge, 4, 2);
4572 hr = ITextRange_SetRange(txtRge, 14, 14);
4576 hr = ITextRange_SetRange(txtRge, 15, 15);
4580 hr = ITextRange_SetRange(txtRge, 14, 1);
4584 hr = ITextRange_SetRange(txtRge, -1, 4);
4588 ITextRange_Release(txtRge);
4594 static const char test_text1[] =
"TestSomeText";
4607 hr = ITextDocument_Range(doc, 0, 4, &
range);
4648 ITextRange_Release(
range);
4653 static const char test_text1[] =
"Word1 Word2";
4666 hr = ITextDocument_Range(doc, 1, 2, &
range);
4671 ok(delta == 0,
"got %ld\n", delta);
4676 ok(delta == -1,
"got %ld\n", delta);
4681 ok(delta == 1,
"got %ld\n", delta);
4686 ok(delta == 0,
"got %ld\n", delta);
4693 ok(delta == 1,
"got %ld\n", delta);
4700 ok(delta == -1,
"got %ld\n", delta);
4705 ok(delta == 0,
"got %ld\n", delta);
4710 ok(delta == 0,
"got %ld\n", delta);
4715 ok(delta == -1,
"got %ld\n", delta);
4720 ok(delta == 1,
"got %ld\n", delta);
4725 ok(delta == 0,
"got %ld\n", delta);
4732 ok(delta == 1,
"got %ld\n", delta);
4739 ok(delta == -1,
"got %ld\n", delta);
4744 ok(delta == 0,
"got %ld\n", delta);
4762 ITextRange_Release(
range);
4769 LONG expected_delta;
4772 if (expected_start < 0)
4774 else if (expected_start > textlen)
4775 expected_start = textlen;
4776 expected_delta = expected_start -
i;
4780 if (expected_start ==
i) {
4782 ok(delta == 0,
"(%d,%d) move by %ld got delta %ld\n",
i,
j,
target -
i, delta);
4786 ok(delta == expected_delta,
"(%d,%d) move by %ld got delta %ld\n",
i,
j,
target -
i, delta);
4787 if (expected_start <=
j)
4798 LONG expected_delta;
4801 if (expected_end < 0)
4803 else if (expected_end > textlen + 1)
4804 expected_end = textlen + 1;
4805 expected_delta = expected_end -
j;
4809 if (expected_end ==
j) {
4811 ok(delta == 0,
"(%d,%d) move by %ld got delta %ld\n",
i,
j,
target -
j, delta);
4815 ok(delta == expected_delta,
"(%d,%d) move by %ld got delta %ld\n",
i,
j,
target -
j, delta);
4816 if (
i <= expected_end)
4828 LONG expected_delta;
4831 if (expected_location < 0)
4832 expected_location = 0;
4833 else if (expected_location > textlen)
4834 expected_location = textlen;
4838 expected_delta = expected_location -
i;
4845 expected_delta = expected_location -
j;
4858 if (expected_delta == 0) {
4859 ok(
hr ==
S_FALSE,
"(%d,%d) move by %ld got hr=0x%08lx\n",
i,
j, move_by,
hr);
4860 ok(delta == 0,
"(%d,%d) move by %ld got delta %ld\n",
i,
j, move_by, delta);
4863 ok(
hr ==
S_OK,
"(%d,%d) move by %ld got hr=0x%08lx\n",
i,
j, move_by,
hr);
4864 ok(delta == expected_delta,
"(%d,%d) move by %ld got delta %ld\n",
i,
j, move_by, delta);
4879 ok(delta == 0,
"(%d,%d) tomMove got delta %ld\n",
i,
j, delta);
4881 ok(
hr ==
S_OK,
"(%d,%d) tomMove got hr=0x%08lx\n",
i,
j,
hr);
4882 ok(delta == -1,
"(%d,%d) tomMove got delta %ld\n",
i,
j, delta);
4890 ok(delta == 0,
"(%d,%d) tomExtend got delta %ld\n",
i,
j, delta);
4911 ok(delta == 0,
"(%d,%d) tomMove got delta %ld\n",
i,
j, delta);
4913 ok(
hr ==
S_OK,
"(%d,%d) tomMove got hr=0x%08lx\n",
i,
j,
hr);
4914 ok(delta == 1,
"(%d,%d) tomMove got delta %ld\n",
i,
j, delta);
4923 ok(delta == 0,
"(%d,%d) tomExtend got delta %ld\n",
i,
j, delta);
4925 ok(
hr ==
S_OK,
"(%d,%d) tomExtend got hr=0x%08lx\n",
i,
j,
hr);
4926 ok(delta == 1,
"(%d,%d) tomExtend got delta %ld\n",
i,
j, delta);
4933 static const char test_text1[] =
"ab\n c";
4941 const int textlen =
strlen(test_text1);
4946 hr = ITextDocument_Range(doc, 0, 0, &
range);
4951 for (
i = 0;
i <= textlen;
i++) {
4952 for (
j =
i;
j <= textlen;
j++) {
4966 ITextRange_Release(
range);
4998#define CLIPBOARD_RANGE_CONTAINS(range, start, end, expected) _clipboard_range_contains(range, start, end, expected, __LINE__, 0);
4999#define TODO_CLIPBOARD_RANGE_CONTAINS(range, start, end, expected) _clipboard_range_contains(range, start, end, expected, __LINE__, 1);
5003 BOOL clipboard_open;
5005 const char *clipboard_text;
5017 ok_(__FILE__,
line)(clipboard_text !=
NULL,
"GlobalLock failed: %p\n", clipboard_text);
5032 static const char text_in[] =
"ab\n c";
5043 hr = ITextDocument_Range(doc, 0, 0, &
range);
5057 hr = ITextRange_SetRange(
range, 0, 1);
5062 hr = ITextDocument_Undo(doc, 1,
NULL);
5063 ok(
hr ==
S_OK,
"Undo failed: 0x%08lx\n",
hr);
5068 hr = ITextRange_SetRange(
range, 0, 1);
5075 ITextRange_Release(
range);
5080 static const char *text_seq[] = {
5090 static LONG seq[] = { -1, -2, -3, -1, 1, 2, 3, 1, -5, 2, -1, 3, 1, 0 };
5091 LONG i = 0, stack_pos = 0;
5104 for (
i = -2;
i <= 2;
i++)
5108 hr = ITextDocument_Undo(doc,
i,
NULL);
5113 hr = ITextDocument_Undo(doc,
i, &
count);
5117 ok(
count == (
i >= 1 ?
i : 0),
"(%ld@0) Expected %ld, got %ld\n",
i,
i >= 0 ?
i : 0,
count);
5120 hr = ITextDocument_Redo(doc,
i,
NULL);
5124 hr = ITextDocument_Redo(doc,
i, &
count);
5156 ok(
strcmp(
buffer, text_seq[stack_pos]) == 0,
"Expected %s, got %s\n",
5165 hr = ITextDocument_Undo(doc, -seq[
i], &
count);
5166 ok(
hr ==
S_OK,
"(%ld@%ld) Undo: %#lx\n",
i, stack_pos,
hr);
5167 ok(
count == expect_count,
"(%ld@%ld) Expected %ld, got %ld\n",
i, stack_pos, expect_count,
count);
5172 hr = ITextDocument_Redo(doc, seq[
i], &
count);
5173 ok(
hr == (expect_count ?
S_OK :
S_FALSE),
"(%ld@%ld) Redo: %#lx\n",
i, stack_pos,
hr);
5174 ok(
count == expect_count,
"(%ld@%ld) Expected %ld, got %ld\n",
i, stack_pos, expect_count,
count);
5191#define ok_msg_result(h,m,w,l,r) ok_msg_result_(__LINE__,#m,h,m,w,l,r)
5251 ok(cur_undo_limit == inst->
undo_limit,
"Expected undo limit %Id, got %Id\n",
5296 ok(0,
"unreachable\n");
5325 ok(0,
"unreachable\n");
5333#define perform_undo(i,c) perform_undo_(i,c,__LINE__)
5343 ok_(__FILE__,
line)(lres ==
FALSE || lres ==
TRUE,
"unexpected LRESULT %#Ix\n", lres);
5349 hr = ITextDocument_Undo(inst->
doc, 1, &
count);
5364 return can_undo &&
result;
5367#define perform_redo(i,c) perform_redo_(i,c,__LINE__)
5377 ok_(__FILE__,
line)(lres ==
FALSE || lres ==
TRUE,
"unexpected LRESULT %#Ix\n", lres);
5383 hr = ITextDocument_Redo(inst->
doc, 1, &
count);
5398 return can_redo &&
result;
5404 static const char text_foo[] =
"foo";
5405 static const char text_bar[] =
"bar";
5406 static const char *last_text, *last_text2;
5411 undo_count = redo_count = 0;
5438 if (
perform_undo(inst, undo_count > 0)) undo_count--, redo_count++, last_text =
"";
5453 if (
perform_undo(inst, undo_count > 0)) undo_count--, redo_count++, last_text =
"";
5462 if (
perform_redo(inst, redo_count > 0)) undo_count++, redo_count--, last_text = text_foo;
5477 if (
perform_undo(inst, undo_count > 0)) undo_count--, redo_count++, last_text2 = last_text;
5483 if (
perform_redo(inst, redo_count > 0)) undo_count++, redo_count--, last_text2 = text_bar;
5545 DWORD lasterr, style1, style2;
5557 ok(lasterr == 0xdeadbeefUL,
"GetLastError() returned %#lx\n", lasterr);
5561 ok(
hr ==
S_OK,
"ITextDocument_Freeze returned %#lx\n",
hr);
5562 ok(
count == 1,
"expected count to be %d, got %ld\n", 1,
count);
5565 ok(style2 == style1,
"expected window style to not change from %#lx, got %#lx\n", style1, style2);
5569 ok(
hr ==
S_OK,
"ITextDocument_Freeze returned %#lx\n",
hr);
5570 ok(
count == 2,
"expected count to be %d, got %ld\n", 2,
count);
5574 ok(
hr ==
S_FALSE,
"ITextDocument_Unfreeze returned %#lx\n",
hr);
5575 ok(
count == 1,
"expected count to be %d, got %ld\n", 1,
count);
5579 ok(
hr ==
S_OK,
"ITextDocument_Unfreeze returned %#lx\n",
hr);
5580 ok(
count == 0,
"expected count to be %d, got %ld\n", 0,
count);
5584 ok(
hr ==
S_OK,
"ITextDocument_Unfreeze returned %#lx\n",
hr);
5585 ok(
count == 0,
"expected count to be %d, got %ld\n", 0,
count);
5589 ok(
hr ==
S_OK,
"ITextDocument_Freeze returned %#lx\n",
hr);
5590 ok(
count == 1,
"expected count to be %d, got %ld\n", 1,
count);
5594 ok(
hr ==
S_OK,
"ITextDocument_Unfreeze returned %#lx\n",
hr);
5595 ok(
count == 0,
"expected count to be %d, got %ld\n", 0,
count);
5599 ok(
hr ==
S_OK,
"ITextDocument_Freeze returned %#lx\n",
hr);
5603 ok(
hr ==
S_OK,
"ITextDocument_Unfreeze returned %#lx\n",
hr);
int strcmp(const char *String1, const char *String2)
ACPI_SIZE strlen(const char *String)
#define InterlockedIncrement
#define InterlockedDecrement
static const WCHAR nameW[]
void user(int argc, const char *argv[])
#define STDMETHODCALLTYPE
#define ERROR_INVALID_PARAMETER
#define INVALID_HANDLE_VALUE
#define FILE_ATTRIBUTE_NORMAL
#define ERROR_ACCESS_DENIED
BOOL WINAPI DeleteFileW(IN LPCWSTR lpFileName)
BOOL WINAPI WriteFile(IN HANDLE hFile, IN LPCVOID lpBuffer, IN DWORD nNumberOfBytesToWrite OPTIONAL, OUT LPDWORD lpNumberOfBytesWritten, IN LPOVERLAPPED lpOverlapped OPTIONAL)
HINSTANCE WINAPI DECLSPEC_HOTPATCH LoadLibraryA(LPCSTR lpLibFileName)
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
LCID WINAPI GetSystemDefaultLCID(void)
ULONG WINAPI DECLSPEC_HOTPATCH GetTickCount(void)
static FLOAT twips_to_points(LONG value)
GLuint GLuint GLsizei count
GLubyte GLubyte GLubyte GLubyte w
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
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 GLint GLint j
BOOL NTAPI GlobalUnlock(HGLOBAL hMem)
LPVOID WINAPI CoTaskMemAlloc(SIZE_T size)
_Check_return_ long __cdecl labs(_In_ long x)
REFIID LPVOID DWORD_PTR dw
static ERESOURCE GlobalLock
void __cdecl void __cdecl void __cdecl void __cdecl void __cdecl winetest_push_context(const char *fmt,...) __WINE_PRINTF_ATTR(1
#define todo_wine_if(is_todo)
void __cdecl void __cdecl void __cdecl void __cdecl void __cdecl void winetest_pop_context(void)
#define memcpy(s1, s2, n)
#define ERROR_FILE_NOT_FOUND
static const WCHAR textW[]
static IPrintDialogCallback callback
D3D11_SHADER_VARIABLE_DESC desc
#define open_clipboard(hwnd)
static HRESULT STDMETHODCALLTYPE testoleobj_IOleObject_Advise(IOleObject *iface, IAdviseSink *adv_sink, DWORD *connection)
static void _check_selection(ITextSelection *selection, LONG expected_start, LONG expected_end, int line)
static struct testoleobj * impl_from_IOleObject(IOleObject *iface)
static HRESULT STDMETHODCALLTYPE testoleobj_IOleObject_GetUserType(IOleObject *iface, DWORD form_of_type, LPOLESTR *user_type)
static HRESULT STDMETHODCALLTYPE reolecb_obj_QueryAcceptData(IRichEditOleCallback *iface, IDataObject *dataobj, CLIPFORMAT *cf_format, DWORD reco, BOOL really, HGLOBAL metapict)
static void subtest_InsertObject(struct reolecb_obj *callback)
static ULONG STDMETHODCALLTYPE testoleobj_Release(IOleObject *iface)
static void test_Interfaces(void)
static void test_Expand(void)
static HRESULT STDMETHODCALLTYPE testoleobj_IOleObject_EnumAdvise(IOleObject *iface, IEnumSTATDATA **enum_advise)
static void _reset_range(ITextRange *range, LONG start, LONG end, int line)
static void test_SetText(void)
static void test_character_movement(void)
static void test_ITextSelection_GetDuplicate(void)
static HRESULT STDMETHODCALLTYPE testoleobj_IOleObject_GetUserClassID(IOleObject *iface, CLSID *clsid)
static void _insert_reobject(struct reolecb_obj *callback, IRichEditOle *reole, REOBJECT *reobj, LONG cp, DWORD user, int line)
static HRESULT set_editor_undo_state(struct undo_test *inst, enum editorUndoState state)
#define perform_undo(i, c)
static void test_character_moveend(ITextRange *range, int textlen, int i, int j, LONG target)
static const struct IViewObjectVtbl testoleobj_IViewObject_Vtbl
static void fill_reobject_struct(REOBJECT *reobj, LONG cp, LPOLEOBJECT poleobj, LPSTORAGE pstg, LPOLECLIENTSITE polesite, LONG sizel_cx, LONG sizel_cy, DWORD aspect, DWORD flags, DWORD user)
static void test_character_startof(ITextRange *range, int textlen, int i, int j)
static HRESULT STDMETHODCALLTYPE testoleobj_IOleObject_GetMiscStatus(IOleObject *iface, DWORD aspect, DWORD *status)
static void test_ITextSelection_GetStart_GetEnd(void)
static void test_GetPara(void)
static void test_detached_font_getters(ITextFont *font, BOOL duplicate)
#define CLIPBOARD_RANGE_CONTAINS(range, start, end, expected)
static void test_character_endof(ITextRange *range, int textlen, int i, int j)
static void test_GetClientSite(void)
static HRESULT subtest_undo_control(struct undo_test *inst, enum editorUndoStateAction action)
static void test_GetStoryLength(void)
static HRESULT STDMETHODCALLTYPE testoleobj_IOleObject_GetExtent(IOleObject *iface, DWORD draw_aspect, SIZEL *sizel)
static HRESULT STDMETHODCALLTYPE reolecb_obj_QueryInsertObject(IRichEditOleCallback *iface, CLSID *clsid, IStorage *stg, LONG cp)
static HMODULE hmoduleRichEdit
#define INSERT_REOBJECT(callback, reole, reobj, cp, user)
static void test_textfont_undefined(ITextFont *font)
static void test_IOleInPlaceSite_GetWindow(void)
static void subtest_undo(const char *dummy_text)
static HWND new_richedit(HWND parent)
static void test_ITextRange_GetDuplicate(void)
static void test_character_move(ITextRange *range, int textlen, int i, int j, LONG target)
static void test_Delete(void)
static HRESULT STDMETHODCALLTYPE testoleobj_IViewObject_GetAdvise(IViewObject *iface, DWORD *aspects, DWORD *advf, IAdviseSink **adv_sink)
static void test_undo_control(void)
static HRESULT STDMETHODCALLTYPE testoleobj_IOleObject_SetMoniker(IOleObject *iface, DWORD which_moniker, IMoniker *mk)
static HRESULT STDMETHODCALLTYPE testoleobj_IViewObject_QueryInterface(IViewObject *iface, REFIID riid, void **obj)
static void test_ITextSelection_GetChar(void)
#define CHECK_TYPEINFO(disp, expected_riid)
static HRESULT STDMETHODCALLTYPE testoleobj_IOleObject_GetClientSite(IOleObject *iface, IOleClientSite **clientsite)
static void test_clipboard(void)
static HRESULT STDMETHODCALLTYPE testoleobj_QueryInterface(IOleObject *iface, REFIID riid, void **obj)
static HRESULT STDMETHODCALLTYPE testoleobj_IOleObject_Unadvise(IOleObject *iface, DWORD connection)
static HRESULT STDMETHODCALLTYPE testoleobj_IViewObject_Freeze(IViewObject *iface, DWORD draw_aspect, LONG index, void *aspect, DWORD *freeze)
static void _expect_ref(IUnknown *obj, ULONG ref, int line)
static struct testoleobj * impl_from_IViewObject(IViewObject *iface)
static void test_InRange(void)
static const struct IRichEditOleCallbackVtbl reolecb_obj_Vtbl
static void test_GetStoryType(void)
static HRESULT perform_editor_undo_state_action(struct undo_test *inst, enum editorUndoStateAction action, LONG *count)
static HRESULT STDMETHODCALLTYPE testoleobj_IOleObject_Close(IOleObject *iface, DWORD save_option)
#define RESET_RANGE(range, start, end)
static BOOL touch_file(LPCWSTR filename)
static HRESULT testoleobj_Create(struct testoleobj **objptr)
static void ok_msg_result_(int line, const char *desc, HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam, LRESULT expect)
static void test_ITextRange_GetStart_GetEnd(void)
static HRESULT STDMETHODCALLTYPE reolecb_obj_GetContextMenu(IRichEditOleCallback *iface, WORD seltype, IOleObject *oleobj, CHARRANGE *chrg, HMENU *hmenu)
static const struct IOleObjectVtbl testoleobj_IOleObject_Vtbl
static ULONG STDMETHODCALLTYPE reolecb_obj_AddRef(IRichEditOleCallback *iface)
static void _check_reobject_struct(IRichEditOle *reole, LONG index, DWORD flags, LONG cp, LONG cp_check, LPOLEOBJECT poleobj, LPSTORAGE pstg, LPOLECLIENTSITE polesite, DWORD user, int line)
static void test_ITextRange_IsEqual(void)
static HRESULT STDMETHODCALLTYPE testoleobj_IViewObject_GetColorSet(IViewObject *iface, DWORD draw_aspect, LONG index, void *aspect, DVTARGETDEVICE *td, HDC hdc_target_dev, LOGPALETTE **color_set)
#define CHECK_REOBJECT_STRUCT(reole, index, flags, cp, cp_check, poleobj, pstg, polesite, user)
static HRESULT STDMETHODCALLTYPE testoleobj_IOleObject_SetColorScheme(IOleObject *iface, LOGPALETTE *palette)
#define perform_redo(i, c)
static void test_ITextDocument_Open(void)
static void test_ITextRange_Collapse(void)
static void create_interfaces(HWND *w, IRichEditOle **reOle, ITextDocument **txtDoc, ITextSelection **txtSel)
static ULONG STDMETHODCALLTYPE testoleobj_IViewObject_AddRef(IViewObject *iface)
static BOOL is_existing_file(LPCWSTR filename)
static HRESULT STDMETHODCALLTYPE reolecb_obj_QueryInterface(IRichEditOleCallback *iface, REFIID riid, void **obj)
#define CHECK_SELECTION(selection, expected_start, expected_end)
static void test_IOleWindow_GetWindow(void)
static HRESULT STDMETHODCALLTYPE testoleobj_IOleObject_EnumVerbs(IOleObject *iface, IEnumOLEVERB **enumoleverb)
static void test_ITextRange_ScrollIntoView(void)
static ULONG STDMETHODCALLTYPE testoleobj_AddRef(IOleObject *iface)
static void flush_dispatch_messages(void)
static HRESULT STDMETHODCALLTYPE testoleobj_IOleObject_InitFromData(IOleObject *iface, IDataObject *dataobj, BOOL creation, DWORD reserved)
static void test_dispatch(void)
static void test_textfont_global_defaults(ITextFont *font)
static BOOL perform_redo_(struct undo_test *inst, BOOL can_redo, int line)
#define ok_msg_result(h, m, w, l, r)
static void _reset_selection(ITextSelection *selection, LONG start, LONG end, int line)
#define EXPECT_REF(obj, ref)
static HRESULT STDMETHODCALLTYPE testoleobj_IOleObject_DoVerb(IOleObject *iface, LONG verb, MSG *msg, IOleClientSite *activesite, LONG index, HWND parentwnd, LPCRECT posrect)
static void test_ITextSelection_Collapse(void)
static int get_scroll_pos_y(HWND hwnd)
static HRESULT STDMETHODCALLTYPE testoleobj_IOleObject_Update(IOleObject *iface)
static ULONG STDMETHODCALLTYPE reolecb_obj_Release(IRichEditOleCallback *iface)
static HRESULT STDMETHODCALLTYPE testoleobj_IOleObject_IsUpToDate(IOleObject *iface)
static void test_Select(void)
static ULONG STDMETHODCALLTYPE testoleobj_IViewObject_Release(IViewObject *iface)
static void olecb_expect_QueryInsertObject(struct reolecb_obj *This, int line, ULONG expect, const CLSID *clsid, IStorage *stg, LONG cp, HRESULT result)
static void test_ITextRange_SetRange(void)
static const WCHAR sysW[]
static void test_undo(void)
static void release_interfaces(HWND *w, IRichEditOle **reOle, ITextDocument **txtDoc, ITextSelection **txtSel)
static void test_GetFont(void)
static void olecb_check_QueryInsertObject(struct reolecb_obj *This, int line)
#define CHECK_RANGE(range, expected_start, expected_end)
static HRESULT STDMETHODCALLTYPE testoleobj_IOleObject_SetExtent(IOleObject *iface, DWORD draw_aspect, SIZEL *sizel)
static void test_character_movestart(ITextRange *range, int textlen, int i, int j, LONG target)
static struct reolecb_obj * impl_from_IRichEditOleCallback(IRichEditOleCallback *iface)
static void test_ITextFont(void)
static HRESULT STDMETHODCALLTYPE reolecb_obj_ShowContainerUI(IRichEditOleCallback *iface, BOOL show)
static HRESULT STDMETHODCALLTYPE testoleobj_IOleObject_GetClipboardData(IOleObject *iface, DWORD reserved, IDataObject **dataobj)
#define RESET_SELECTION(selection, start, end)
static HRESULT STDMETHODCALLTYPE reolecb_obj_DeleteObject(IRichEditOleCallback *iface, IOleObject *oleobj)
static void test_ITextRange_GetChar(void)
static HRESULT reolecb_obj_Create(struct reolecb_obj **objptr)
static void _check_range(ITextRange *range, LONG expected_start, LONG expected_end, int line)
static HRESULT STDMETHODCALLTYPE testoleobj_IOleObject_GetMoniker(IOleObject *iface, DWORD assign, DWORD which_moniker, IMoniker **mk)
static void check_range(HWND w, ITextDocument *doc, int first, int lim, LONG bStart, int expected_nonzero)
static HRESULT STDMETHODCALLTYPE reolecb_obj_GetInPlaceContext(IRichEditOleCallback *iface, IOleInPlaceFrame **frame, IOleInPlaceUIWindow **doc, OLEINPLACEFRAMEINFO *frame_info)
static HRESULT STDMETHODCALLTYPE testoleobj_IViewObject_Unfreeze(IViewObject *iface, DWORD freeze)
static HRESULT STDMETHODCALLTYPE reolecb_obj_GetDragDropEffect(IRichEditOleCallback *iface, BOOL drag, DWORD key_state, DWORD *effect)
static HWND new_window(LPCSTR lpClassName, DWORD dwStyle, HWND parent)
static void _check_typeinfo(IDispatch *disp, REFIID expected_riid, int line)
static void test_GetText(void)
static void _clipboard_range_contains(ITextRange *range, LONG start, LONG end, const char *expected, int line, int todo)
static HRESULT STDMETHODCALLTYPE testoleobj_IViewObject_SetAdvise(IViewObject *iface, DWORD aspects, DWORD advf, IAdviseSink *adv_sink)
static void test_InsertObject(void)
static void test_MoveEnd_story(void)
static HRESULT STDMETHODCALLTYPE reolecb_obj_GetNewStorage(IRichEditOleCallback *iface, IStorage **stg)
static BOOL perform_undo_(struct undo_test *inst, BOOL can_undo, int line)
static HRESULT STDMETHODCALLTYPE testoleobj_IOleObject_SetHostNames(IOleObject *iface, LPCOLESTR container_app, LPCOLESTR container_obj)
static ULONG get_refcount(IUnknown *iface)
static void test_SetFont(void)
static HRESULT STDMETHODCALLTYPE reolecb_obj_ContextSensitiveHelp(IRichEditOleCallback *iface, BOOL enter_mode)
static void test_ITextDocument_Range(void)
static HRESULT STDMETHODCALLTYPE testoleobj_IOleObject_SetClientSite(IOleObject *iface, IOleClientSite *clientsite)
static HRESULT STDMETHODCALLTYPE testoleobj_IViewObject_Draw(IViewObject *iface, DWORD draw_aspect, LONG index, void *aspect, DVTARGETDEVICE *td, HDC hdc_target_dev, HDC hdc_draw, LPCRECTL bounds, LPCRECTL wbounds, BOOL(CALLBACK *fn_continue)(ULONG_PTR), ULONG_PTR arg_continue)
static HRESULT STDMETHODCALLTYPE reolecb_obj_GetClipboardData(IRichEditOleCallback *iface, CHARRANGE *chrg, DWORD reco, IDataObject **dataobj)
@ undoTestDoSecondUndoAfterEnable
@ undoTestUseWindowMessages
static void test_freeze(void)
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
static VARIANTARG static DISPID
INT WINAPI MulDiv(INT nNumber, INT nNumerator, INT nDenominator)
#define LOCALE_USER_DEFAULT
#define LOCALE_SYSTEM_DEFAULT
interface IStorage * LPSTORAGE
HRESULT WINAPI CreateOleAdviseHolder(IOleAdviseHolder **ppOAHolder)
BSTR WINAPI SysAllocString(LPCOLESTR str)
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
BSTR WINAPI SysAllocStringLen(const OLECHAR *str, unsigned int len)
const GUID IID_IOleInPlaceSite
const GUID IID_IViewObject
const GUID IID_IOleWindow
const GUID IID_IRunnableObject
const GUID IID_IOleClientSite
const GUID IID_IOleObject
#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8)
#define IsEqualGUID(rguid1, rguid2)
#define EM_SETOLECALLBACK
#define RICHEDIT_CLASS20A
struct _charformat2a CHARFORMAT2A
#define EM_GETOLEINTERFACE
const char int int int static __inline const char * wine_dbgstr_a(const char *s)
static __inline const char * wine_dbgstr_guid(const GUID *id)
IRichEditOleCallback IRichEditOleCallback_iface
ULONG expect_queryinsertobject
HRESULT queryinsertobject_result
IOleObject IOleObject_iface
IOleClientSite * clientsite
IViewObject IViewObject_iface
IOleAdviseHolder * advise_holder
enum editorUndoState undo_ctl_state
VOID WINAPI DECLSPEC_HOTPATCH Sleep(IN DWORD dwMilliseconds)
EXTERN_C const IID IID_ITextServices
FT_UInt FT_UInt FT_Vector * kerning
TW_UINT32 TW_UINT16 TW_UINT16 MSG
#define CONTAINING_RECORD(address, type, field)
static uacpi_status enter_mode(enum hw_mode mode, uacpi_bool *did_change)
HRESULT WINAPI DECLSPEC_HOTPATCH VariantClear(VARIANTARG *pVarg)
DWORD WINAPI GetLastError(void)
static HRESULT HRESULT_FROM_WIN32(unsigned int x)
#define OLE_E_NOCONNECTION
#define ERROR_SHARING_VIOLATION
#define ERROR_FILE_EXISTS
#define DISP_E_UNKNOWNNAME
HGDIOBJ WINAPI GetStockObject(_In_ int)
int WINAPI GetDeviceCaps(_In_opt_ HDC, _In_ int)
int WINAPI FillRect(HDC, LPCRECT, HBRUSH)
BOOL WINAPI TranslateMessage(_In_ const MSG *)
struct tagSCROLLINFO SCROLLINFO
#define CreateWindowA(a, b, c, d, e, f, g, h, i, j, k)
#define EM_SETPASSWORDCHAR
int WINAPI GetClassNameA(_In_ HWND hWnd, _Out_writes_to_(nMaxCount, return) LPSTR lpClassName, _In_ int nMaxCount)
#define EM_EMPTYUNDOBUFFER
LONG WINAPI GetWindowLongW(_In_ HWND, _In_ int)
HWND WINAPI GetOpenClipboardWindow(void)
BOOL WINAPI CloseClipboard(void)
LRESULT WINAPI SendMessageA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI OpenClipboard(_In_opt_ HWND)
HANDLE WINAPI GetClipboardData(_In_ UINT)
BOOL WINAPI PeekMessageW(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT, _In_ UINT)
BOOL WINAPI UpdateWindow(_In_ HWND)
LRESULT WINAPI DispatchMessageW(_In_ const MSG *)
BOOL WINAPI GetScrollInfo(_In_ HWND, _In_ int, _Inout_ LPSCROLLINFO)
BOOL WINAPI DestroyWindow(_In_ HWND)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)