38#define debugstr_guid wine_dbgstr_guid
41#define EXPECT_TODO_WINE 0x80000000UL
65 IRichEditOleCallback_AddRef(iface);
114 "unexpected call to IRichEditOleCallback_QueryInsertObject\n");
116 This->expect_queryinsertobject--;
120 "QueryInsertObject clsid expected %s, got %s\n",
124 "QueryInsertObject clsid expected %p, got %p\n",
This->clsid,
clsid );
125 ok_(__FILE__,
This->line)(
This->stg ==
stg,
"QueryInsertObject stg expected %p, got %p\n",
This->stg,
stg );
126 ok_(__FILE__,
This->line)(
This->cp ==
cp,
"QueryInsertObject cp expected %ld, got %ld\n",
This->cp,
cp );
127 return This->queryinsertobject_result;
136 CLIPFORMAT *cf_format,
DWORD reco,
BOOL really,
156 if (effect) *effect = DROPEFFECT_COPY;
219 "expected IRichEditOleCallback_QueryInsertObject to be called\n" );
224DEFINE_GUID(CLSID_testoleobj, 0x4484082e, 0x6d18, 0x4932, 0xa0, 0x86, 0x5b, 0x4d, 0xcf, 0x36, 0xb3, 0xde);
254 *
obj = &
This->IViewObject_iface;
285 if (
This->advise_holder)
287 IOleAdviseHolder_Release(
This->advise_holder );
290 if (
This->clientsite)
292 IOleClientSite_Release(
This->clientsite );
306 if (
This->clientsite) IOleClientSite_Release(
This->clientsite );
308 if (
This->clientsite) IOleClientSite_AddRef(
This->clientsite );
318 if (
This->clientsite) IOleClientSite_AddRef(
This->clientsite );
325 LPCOLESTR container_app,
326 LPCOLESTR container_obj )
351 return IOleClientSite_GetMoniker(
This->clientsite, assign, which_moniker, mk );
392 *
clsid = CLSID_testoleobj;
398 static const OLECHAR typename[] =
L"richole testoleobj";
403 memcpy( *user_type,
typename,
sizeof(
typename) );
411 if (draw_aspect != DVASPECT_CONTENT)
return E_FAIL;
413 This->extent = *sizel;
421 if (draw_aspect != DVASPECT_CONTENT)
return E_FAIL;
423 *sizel =
This->extent;
433 if (
SUCCEEDED(
hr ))
hr = IOleAdviseHolder_Advise(
This->advise_holder, adv_sink, connection );
442 return IOleAdviseHolder_Unadvise(
This->advise_holder, connection );
449 if (!
This->advise_holder)
454 return IOleAdviseHolder_EnumAdvise(
This->advise_holder, enum_advise );
503 return IOleObject_QueryInterface( &
This->IOleObject_iface,
riid,
obj );
509 return IOleObject_AddRef( &
This->IOleObject_iface );
515 return IOleObject_Release( &
This->IOleObject_iface );
519 LONG index,
void *aspect, DVTARGETDEVICE *td,
520 HDC hdc_target_dev,
HDC hdc_draw,
528 if (draw_aspect != DVASPECT_CONTENT ||
index != -1)
return E_NOTIMPL;
530 ok_(__FILE__,
This->line)( td ==
NULL,
"expected td to be NULL, got %p\n", td );
531 ok_(__FILE__,
This->line)( hdc_target_dev ==
NULL,
"expected hdc_target_dev to be NULL, got %p\n", hdc_target_dev );
532 ok_(__FILE__,
This->line)( wbounds ==
NULL,
"expected wbounds to be NULL, got %p\n", wbounds );
538 "bounds->right (= %ld) - bounds->left (= %ld) != "
539 "MulDiv( This->extent.cx (= %ld), dpi.cx (= %ld), 2540 )\n",
542 "bounds->bottom (= %ld) - bounds->top (= %ld) != "
543 "MulDiv( This->extent.cy (= %ld), dpi.cy (= %ld), 2540 )\n",
553 LONG index,
void *aspect, DVTARGETDEVICE *td,
625DEFINE_GUID(
GUID_NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
626DEFINE_GUID(
IID_ITextServices, 0x8d33f740, 0xcf58, 0x11ce, 0xa8, 0x9d, 0x00, 0xaa, 0x00, 0x6c, 0xad, 0xc5);
630#define EXPECT_REF(obj,ref) _expect_ref((IUnknown*)obj, ref, __LINE__)
634 IUnknown_AddRef(
obj);
635 rc = IUnknown_Release(
obj);
636 ok_(__FILE__,
line)(rc ==
ref,
"expected refcount %ld, got %ld\n",
ref, rc);
683 IRichEditOle_QueryInterface(*reOle, &IID_ITextDocument,
685 ITextDocument_GetSelection(*txtDoc, txtSel);
692 ITextSelection_Release(*txtSel);
693 ITextDocument_Release(*txtDoc);
694 IRichEditOle_Release(*reOle);
700 IUnknown_AddRef(iface);
701 return IUnknown_Release(iface);
704#define CHECK_TYPEINFO(disp,expected_riid) _check_typeinfo((IDispatch *)disp, expected_riid, __LINE__)
713 hr = IDispatch_GetTypeInfoCount(disp, &
count);
714 ok_(__FILE__,
line)(
hr ==
S_OK,
"IDispatch_GetTypeInfoCount failed: 0x%08lx.\n",
hr);
718 ok_(__FILE__,
line)(
hr ==
S_OK,
"IDispatch_GetTypeInfo failed: 0x%08lx.\n",
hr);
720 hr = ITypeInfo_GetTypeAttr(
typeinfo, &typeattr);
721 ok_(__FILE__,
line)(
hr ==
S_OK,
"ITypeInfo_GetTypeAttr failed: 0x%08lx.\n",
hr);
725 ITypeInfo_ReleaseTypeAttr(
typeinfo, typeattr);
744 skip(
"Couldn't create window\n");
749 ok(
res,
"SendMessage\n");
750 ok(reOle !=
NULL,
"EM_GETOLEINTERFACE\n");
754 ok(
res == 1,
"SendMessage\n");
755 ok(reOle1 == reOle,
"Should not return a new IRichEditOle interface\n");
758 hres = IRichEditOle_QueryInterface(reOle, &IID_ITextDocument,
760 ok(
hres ==
S_OK,
"IRichEditOle_QueryInterface\n");
761 ok(txtDoc !=
NULL,
"IRichEditOle_QueryInterface\n");
764 hres = ITextDocument_GetSelection(txtDoc,
NULL);
769 hres = ITextDocument_GetSelection(txtDoc, &txtSel);
774 hres = ITextSelection_QueryInterface(txtSel, &
IID_IUnknown, (
void **)&unk2);
776 ok(unk != unk2,
"unknowns are the same\n");
777 IUnknown_Release(unk2);
778 IUnknown_Release(unk);
783 hres = ITextDocument_GetSelection(txtDoc, &txtSel2);
785 ok(txtSel2 == txtSel,
"got %p, %p\n", txtSel, txtSel2);
790 ITextSelection_Release(txtSel2);
793 hres = ITextSelection_QueryInterface(txtSel, &IID_ITextSelection, (
void **) &punk);
794 ok(
hres ==
S_OK,
"ITextSelection_QueryInterface\n");
795 ok(punk !=
NULL,
"ITextSelection_QueryInterface\n");
796 IUnknown_Release(punk);
799 hres = ITextSelection_QueryInterface(txtSel, &IID_ITextRange, (
void **) &punk);
800 ok(
hres ==
S_OK,
"ITextSelection_QueryInterface\n");
801 ok(punk !=
NULL,
"ITextSelection_QueryInterface\n");
802 IUnknown_Release(punk);
806 ok(
hres ==
S_OK,
"ITextSelection_QueryInterface\n");
807 ok(punk !=
NULL,
"ITextSelection_QueryInterface\n");
808 IUnknown_Release(punk);
822 hres = IRichEditOle_QueryInterface(reOle, &IID_ITextDocument2Old, (
void **)&txtDoc2Old);
823 ok(
hres ==
S_OK,
"IRichEditOle_QueryInterface\n");
824 ok(txtDoc2Old !=
NULL,
"IRichEditOle_QueryInterface\n");
825 ok((
ITextDocument *)txtDoc2Old == txtDoc,
"interface pointer isn't equal.\n");
830 ITextDocument2Old_Release(txtDoc2Old);
832 ITextDocument_Release(txtDoc);
833 IRichEditOle_Release(reOle);
834 refcount = IRichEditOle_Release(reOle);
835 ok(refcount == 1,
"got wrong ref count: %ld\n", refcount);
840 hres = ITextSelection_CanEdit(txtSel,
NULL);
843 ITextSelection_Release(txtSel);
847 ok(
res,
"SendMessage\n");
848 ok(reOle !=
NULL,
"EM_GETOLEINTERFACE\n");
850 hres = IRichEditOle_QueryInterface(reOle, &IID_ITextDocument2Old, (
void **)&txtDoc2Old);
851 ok(
hres ==
S_OK,
"IRichEditOle_QueryInterface failed: 0x%08lx.\n",
hres);
852 ok(txtDoc2Old !=
NULL,
"IRichEditOle_QueryInterface\n");
854 ITextDocument2Old_Release(txtDoc2Old);
855 IRichEditOle_Release(reOle);
871 static const CHAR chACP[] =
"TestSomeText";
872 static const CHAR chUTF8[] =
"\xef\xbb\xbfTextWithUTF8BOM";
873 static const WCHAR chUTF16[] = {0xfeff,
'T',
'e',
's',
't',
'S',
'o',
'm',
874 'e',
'T',
'e',
'x',
't', 0};
876#define MAX_BUF_LEN 1024
880 static const int tomConstantsSingle[] =
887 static const int tomConstantsMulti[] =
897 int tomNumSingle =
ARRAY_SIZE(tomConstantsSingle);
898 int tomNumMulti =
ARRAY_SIZE(tomConstantsMulti);
904 for(
i=0;
i < tomNumSingle;
i++)
908 hres = ITextDocument_Open(txtDoc, &testfile, tomConstantsSingle[
i],
CP_ACP);
909 todo_wine ok(
hres ==
S_OK,
"ITextDocument_Open: Filename:test.txt Flags:0x%x Codepage:CP_ACP hres:0x%lx\n",
910 tomConstantsSingle[
i],
hres);
916 hres = ITextDocument_Open(txtDoc, &testfile, tomConstantsSingle[
i],
CP_UTF8);
917 todo_wine ok(
hres ==
S_OK,
"ITextDocument_Open: Filename:test.txt Flags:0x%x Codepage:CP_UTF8 hres:0x%lx\n",
918 tomConstantsSingle[
i],
hres);
923 for(
i=0;
i < tomNumMulti;
i++)
927 hres = ITextDocument_Open(txtDoc, &testfile, tomConstantsMulti[
i],
CP_ACP);
928 todo_wine ok(
hres ==
S_OK,
"ITextDocument_Open: Filename:test.txt Flags:0x%x Codepage:CP_ACP hres:0x%lx\n",
929 tomConstantsMulti[
i],
hres);
935 hres = ITextDocument_Open(txtDoc, &testfile, tomConstantsMulti[
i],
CP_UTF8);
936 todo_wine ok(
hres ==
S_OK,
"ITextDocument_Open: Filename:test.txt Flags:0x%x Codepage:CP_UTF8 hres:0x%lx\n",
937 tomConstantsMulti[
i],
hres);
1070 todo_wine ok(
result == 0,
"ITextDocument_Open: Test ASCII set wrong text: Result: %s\n", bufACP);
1085 todo_wine ok(
result == 0,
"ITextDocument_Open: Test UTF-8 set wrong text: Result: %s\n", bufACP);
1116 static const CHAR test_text1[] =
"TestSomeText";
1117 static const WCHAR bufW1[] = {
'T',
'e',
's',
't', 0};
1118 static const WCHAR bufW2[] = {
'T',
'e',
'x',
't',
'\r', 0};
1119 static const WCHAR bufW3[] = {
'T',
'e',
'x',
't', 0};
1120 static const WCHAR bufW4[] = {
'T',
'e',
's',
't',
'S',
'o',
'm',
1121 'e',
'T',
'e',
'x',
't',
'\r', 0};
1122 static const WCHAR bufW5[] = {
'\r', 0};
1123 static const WCHAR bufW6[] = {
'T',
'e',
's',
't',
'S',
'o',
'm',
'e',
'T',0};
1124 BOOL is64bit =
sizeof(
void *) >
sizeof(
int);
1133 hres = ITextSelection_GetText(txtSel, &bstr);
1134 ok(
hres ==
S_OK,
"ITextSelection_GetText\n");
1140 hres = ITextSelection_GetText(txtSel, &bstr);
1141 ok(
hres ==
S_OK,
"ITextSelection_GetText\n");
1147 hres = ITextSelection_GetText(txtSel, &bstr);
1148 ok(
hres ==
S_OK,
"ITextSelection_GetText\n");
1153 hres = ITextSelection_GetText(txtSel,
NULL);
1157 first = 8; lim = 12;
1159 hres = ITextSelection_GetText(txtSel, &bstr);
1160 ok(
hres ==
S_OK,
"ITextSelection_GetText\n");
1164 first = 8; lim = 13;
1166 hres = ITextSelection_GetText(txtSel, &bstr);
1167 ok(
hres ==
S_OK,
"ITextSelection_GetText\n");
1171 first = 12; lim = 13;
1173 hres = ITextSelection_GetText(txtSel, &bstr);
1174 ok(
hres ==
S_OK,
"ITextSelection_GetText\n");
1178 first = 0; lim = -1;
1180 hres = ITextSelection_GetText(txtSel, &bstr);
1181 ok(
hres ==
S_OK,
"ITextSelection_GetText\n");
1185 first = -1; lim = 9;
1187 hres = ITextSelection_GetText(txtSel, &bstr);
1188 ok(
hres ==
S_OK,
"ITextSelection_GetText\n");
1192 hres = ITextDocument_Range(txtDoc, 0, 4, &
range);
1194 hres = ITextRange_GetText(
range, &bstr);
1199 ITextRange_Release(
range);
1201 hres = ITextDocument_Range(txtDoc, 4, 0, &
range);
1203 hres = ITextRange_GetText(
range, &bstr);
1208 ITextRange_Release(
range);
1210 hres = ITextDocument_Range(txtDoc, 1, 1, &
range);
1212 hres = ITextRange_GetText(
range, &bstr);
1220 ITextRange_Release(
range);
1222 hres = ITextDocument_Range(txtDoc, 8, 12, &
range);
1224 hres = ITextRange_GetText(
range, &bstr);
1229 ITextRange_Release(
range);
1231 hres = ITextDocument_Range(txtDoc, 8, 13, &
range);
1233 hres = ITextRange_GetText(
range, &bstr);
1238 ITextRange_Release(
range);
1240 hres = ITextDocument_Range(txtDoc, 12, 13, &
range);
1242 hres = ITextRange_GetText(
range, &bstr);
1247 ITextRange_Release(
range);
1249 hres = ITextDocument_Range(txtDoc, 0, -1, &
range);
1251 hres = ITextRange_GetText(
range, &bstr);
1254 ITextRange_Release(
range);
1256 hres = ITextDocument_Range(txtDoc, -1, 9, &
range);
1258 hres = ITextRange_GetText(
range, &bstr);
1268 bstr = (
void*)0xdeadbeef;
1269 hres = ITextSelection_GetText(txtSel, &bstr);
1272 ok(bstr ==
NULL,
"got %p\n", bstr);
1274 bstr = (
void*)0xdeadbeef;
1275 hres = ITextRange_GetText(
range, &bstr);
1278 ok(bstr ==
NULL,
"got %p\n", bstr);
1281 hres = ITextSelection_GetText(txtSel,
NULL);
1288 ITextRange_Release(
range);
1289 ITextSelection_Release(txtSel);
1294 static const CHAR test_text1[] =
"TestSomeText";
1303 hres = ITextDocument_Range(txtDoc, 0, 0, &txtRge);
1307 hres = ITextDocument_Range(txtDoc, 0, 0, &range2);
1309 ok(range2 != txtRge,
"A new pointer should be returned\n");
1310 ITextRange_Release(range2);
1312 hres = ITextDocument_Range(txtDoc, 0, 0,
NULL);
1317 hres = ITextDocument_Range(txtDoc, 8, 30, &range2);
1319 hres = ITextRange_GetStart(range2, &
value);
1323 hres = ITextRange_GetEnd(range2, &
value);
1326 ITextRange_Release(range2);
1329 hres = ITextRange_CanEdit(txtRge,
NULL);
1331 ITextRange_Release(txtRge);
1343 static const CHAR test_text1[] =
"TestSomeText";
1348 hres = ITextDocument_Range(txtDoc,
first, lim, &txtRge);
1351 hres = ITextRange_GetChar(txtRge, &
pch);
1353 ok(
pch ==
'T',
"got wrong char: %c\n", (
char)
pch);
1354 ITextRange_Release(txtRge);
1360 hres = ITextDocument_Range(txtDoc,
first, lim, &txtRge);
1363 hres = ITextRange_GetChar(txtRge, &
pch);
1365 ok(
pch ==
'T',
"got wrong char: %c\n", (
char)
pch);
1366 ITextRange_Release(txtRge);
1369 first = 12; lim = 12;
1372 hres = ITextDocument_Range(txtDoc,
first, lim, &txtRge);
1375 hres = ITextRange_GetChar(txtRge, &
pch);
1377 ok(
pch ==
'\r',
"got wrong char: %c\n", (
char)
pch);
1378 ITextRange_Release(txtRge);
1381 first = 13; lim = 13;
1384 hres = ITextDocument_Range(txtDoc,
first, lim, &txtRge);
1387 hres = ITextRange_GetChar(txtRge, &
pch);
1389 ok(
pch ==
'\r',
"got wrong char: %c\n", (
char)
pch);
1390 ITextRange_Release(txtRge);
1395 first = 12; lim = 12;
1396 hres = ITextDocument_Range(txtDoc,
first, lim, &txtRge);
1398 hres = ITextRange_GetChar(txtRge,
NULL);
1403 hres = ITextRange_GetChar(txtRge,
NULL);
1406 hres = ITextRange_GetChar(txtRge, &
pch);
1409 ITextRange_Release(txtRge);
1414 LONG bStart,
int expected_nonzero)
1423 hres = ITextDocument_Range(doc,
first, lim, &txtRge);
1425 hres = ITextRange_ScrollIntoView(txtRge, bStart);
1428 if (expected_nonzero) {
1430 "Scrollbar at 0, should be >0. (TextRange %d-%d, scroll range %d-%d.)\n",
1434 "Scrollbar at %d, should be 0. (TextRange %d-%d, scroll range %d-%d.)\n",
1446 static const CHAR test_text1[] =
"1\n2\n3\n4\n5\n6\n7\n8\n9\n10";
1467 hres = ITextDocument_Range(txtDoc, 0, 0, &txtRge);
1472 ITextRange_Release(txtRge);
1484 static const CHAR test_text1[] =
"TestSomeText";
1492 hres = ITextSelection_GetChar(txtSel, &
pch);
1493 ok(
hres ==
S_OK,
"ITextSelection_GetChar\n");
1494 ok(
pch ==
'T',
"got wrong char: %c\n", (
char)
pch);
1499 hres = ITextSelection_GetChar(txtSel, &
pch);
1500 ok(
hres ==
S_OK,
"ITextSelection_GetChar\n");
1501 ok(
pch ==
'T',
"got wrong char: %c\n", (
char)
pch);
1503 first = 12; lim = 12;
1506 hres = ITextSelection_GetChar(txtSel, &
pch);
1507 ok(
hres ==
S_OK,
"ITextSelection_GetChar\n");
1508 ok(
pch ==
'\r',
"got wrong char: %c\n", (
char)
pch);
1510 first = 13; lim = 13;
1513 hres = ITextSelection_GetChar(txtSel, &
pch);
1514 ok(
hres ==
S_OK,
"ITextSelection_GetChar\n");
1515 ok(
pch ==
'\r',
"got wrong char: %c\n", (
char)
pch);
1517 hres = ITextSelection_GetChar(txtSel,
NULL);
1522 hres = ITextSelection_GetChar(txtSel,
NULL);
1525 hres = ITextSelection_GetChar(txtSel, &
pch);
1528 ITextSelection_Release(txtSel);
1540 static const CHAR test_text1[] =
"TestSomeText";
1546 hres = ITextDocument_Range(txtDoc,
first, lim, &txtRge);
1549 hres = ITextRange_GetStart(txtRge, &
start);
1553 hres = ITextRange_GetEnd(txtRge, &
end);
1555 ok(
end == 6,
"got wrong end value: %ld\n",
end);
1556 ITextRange_Release(txtRge);
1559 hres = ITextDocument_Range(txtDoc,
first, lim, &txtRge);
1562 hres = ITextRange_GetStart(txtRge, &
start);
1566 hres = ITextRange_GetEnd(txtRge, &
end);
1568 ok(
end == 6,
"got wrong end value: %ld\n",
end);
1569 ITextRange_Release(txtRge);
1571 first = -1; lim = 13;
1572 hres = ITextDocument_Range(txtDoc,
first, lim, &txtRge);
1575 hres = ITextRange_GetStart(txtRge, &
start);
1579 hres = ITextRange_GetEnd(txtRge, &
end);
1581 ok(
end == 13,
"got wrong end value: %ld\n",
end);
1582 ITextRange_Release(txtRge);
1584 first = 13; lim = 13;
1585 hres = ITextDocument_Range(txtDoc,
first, lim, &txtRge);
1588 hres = ITextRange_GetStart(txtRge, &
start);
1590 ok(
start == 12,
"got wrong start value: %ld\n",
start);
1592 hres = ITextRange_GetEnd(txtRge, &
end);
1594 ok(
end == 12,
"got wrong end value: %ld\n",
end);
1597 hres = ITextRange_SetStart(txtRge, 0);
1601 hres = ITextRange_SetStart(txtRge, 0);
1604 hres = ITextRange_SetStart(txtRge, 1);
1609 hres = ITextRange_SetStart(txtRge, -1);
1612 hres = ITextRange_SetStart(txtRge, -1);
1615 hres = ITextRange_SetStart(txtRge, 0);
1619 hres = ITextRange_GetStart(txtRge, &
start);
1624 hres = ITextRange_SetStart(txtRge, 1);
1627 hres = ITextRange_SetEnd(txtRge, 3);
1630 hres = ITextRange_SetStart(txtRge, 10);
1634 hres = ITextRange_GetStart(txtRge, &
start);
1639 hres = ITextRange_GetEnd(txtRge, &
end);
1644 hres = ITextRange_SetStart(txtRge, 50);
1648 hres = ITextRange_GetStart(txtRge, &
start);
1653 hres = ITextRange_GetEnd(txtRge, &
end);
1658 hres = ITextRange_SetStart(txtRge, 0);
1662 hres = ITextRange_SetEnd(txtRge, 5);
1665 hres = ITextRange_SetEnd(txtRge, 5);
1669 hres = ITextRange_SetEnd(txtRge, -1);
1673 hres = ITextRange_GetEnd(txtRge, &
end);
1678 hres = ITextRange_GetStart(txtRge, &
start);
1683 hres = ITextRange_SetStart(txtRge, 3);
1686 hres = ITextRange_SetEnd(txtRge, 1);
1690 hres = ITextRange_GetStart(txtRge, &
start);
1695 hres = ITextRange_GetEnd(txtRge, &
end);
1700 hres = ITextRange_SetEnd(txtRge, 50);
1704 hres = ITextRange_GetStart(txtRge, &
start);
1709 hres = ITextRange_GetEnd(txtRge, &
end);
1714 hres = ITextRange_SetEnd(txtRge, 0);
1718 hres = ITextRange_GetStart(txtRge, &
start);
1723 hres = ITextRange_GetEnd(txtRge, &
end);
1730 hres = ITextRange_SetStart(txtRge, 0);
1733 hres = ITextRange_SetEnd(txtRge, 3);
1736 hres = ITextRange_GetStart(txtRge, &
start);
1739 hres = ITextRange_GetStart(txtRge,
NULL);
1742 hres = ITextRange_GetEnd(txtRge, &
end);
1745 hres = ITextRange_GetEnd(txtRge,
NULL);
1748 ITextRange_Release(txtRge);
1760 static const CHAR test_text1[] =
"TestSomeText";
1768 hres = ITextSelection_GetStart(txtSel, &
start);
1769 ok(
hres ==
S_OK,
"ITextSelection_GetStart\n");
1772 hres = ITextSelection_GetEnd(txtSel, &
end);
1774 ok(
end == 5,
"got wrong end value: %ld\n",
end);
1779 hres = ITextSelection_GetStart(txtSel, &
start);
1780 ok(
hres ==
S_OK,
"ITextSelection_GetStart\n");
1783 hres = ITextSelection_GetEnd(txtSel, &
end);
1785 ok(
end == 5,
"got wrong end value: %ld\n",
end);
1787 first = 0; lim = -1;
1790 hres = ITextSelection_GetStart(txtSel, &
start);
1791 ok(
hres ==
S_OK,
"ITextSelection_GetStart\n");
1794 hres = ITextSelection_GetEnd(txtSel, &
end);
1796 ok(
end == 13,
"got wrong end value: %ld\n",
end);
1798 first = 13; lim = 13;
1801 hres = ITextSelection_GetStart(txtSel, &
start);
1802 ok(
hres ==
S_OK,
"ITextSelection_GetStart\n");
1803 ok(
start == 12,
"got wrong start value: %ld\n",
start);
1805 hres = ITextSelection_GetEnd(txtSel, &
end);
1807 ok(
end == 12,
"got wrong end value: %ld\n",
end);
1810 hres = ITextSelection_SetStart(txtSel, 0);
1814 hres = ITextSelection_SetStart(txtSel, 0);
1817 hres = ITextSelection_SetStart(txtSel, 1);
1822 hres = ITextSelection_SetStart(txtSel, -1);
1825 hres = ITextSelection_SetStart(txtSel, -1);
1828 hres = ITextSelection_SetStart(txtSel, 0);
1832 hres = ITextSelection_GetStart(txtSel, &
start);
1837 hres = ITextSelection_SetStart(txtSel, 1);
1840 hres = ITextSelection_SetEnd(txtSel, 3);
1843 hres = ITextSelection_SetStart(txtSel, 10);
1847 hres = ITextSelection_GetStart(txtSel, &
start);
1852 hres = ITextSelection_GetEnd(txtSel, &
end);
1857 hres = ITextSelection_SetStart(txtSel, 50);
1861 hres = ITextSelection_GetStart(txtSel, &
start);
1866 hres = ITextSelection_GetEnd(txtSel, &
end);
1871 hres = ITextSelection_SetStart(txtSel, 0);
1875 hres = ITextSelection_SetEnd(txtSel, 5);
1878 hres = ITextSelection_SetEnd(txtSel, 5);
1882 hres = ITextSelection_SetEnd(txtSel, -1);
1886 hres = ITextSelection_GetEnd(txtSel, &
end);
1891 hres = ITextSelection_GetStart(txtSel, &
start);
1896 hres = ITextSelection_SetStart(txtSel, 3);
1899 hres = ITextSelection_SetEnd(txtSel, 1);
1903 hres = ITextSelection_GetStart(txtSel, &
start);
1908 hres = ITextSelection_GetEnd(txtSel, &
end);
1913 hres = ITextSelection_SetEnd(txtSel, 50);
1917 hres = ITextSelection_GetStart(txtSel, &
start);
1922 hres = ITextSelection_GetEnd(txtSel, &
end);
1927 hres = ITextSelection_SetEnd(txtSel, 0);
1931 hres = ITextSelection_GetStart(txtSel, &
start);
1936 hres = ITextSelection_GetEnd(txtSel, &
end);
1943 hres = ITextSelection_GetStart(txtSel,
NULL);
1946 hres = ITextSelection_GetStart(txtSel, &
start);
1949 hres = ITextSelection_GetEnd(txtSel,
NULL);
1952 hres = ITextSelection_GetEnd(txtSel, &
end);
1955 ITextSelection_Release(txtSel);
1967 static const CHAR test_text1[] =
"TestSomeText";
1972 hres = ITextDocument_Range(txtDoc,
first, lim, &txtRge);
1975 hres = ITextRange_GetDuplicate(txtRge, &txtRgeDup);
1976 ok(
hres ==
S_OK,
"ITextRange_GetDuplicate\n");
1977 ok(txtRgeDup != txtRge,
"A new pointer should be returned\n");
1978 hres = ITextRange_GetStart(txtRgeDup, &
start);
1981 hres = ITextRange_GetEnd(txtRgeDup, &
end);
1983 ok(
end == lim,
"got wrong value: %ld\n",
end);
1985 ITextRange_Release(txtRgeDup);
1987 hres = ITextRange_GetDuplicate(txtRge,
NULL);
1992 hres = ITextRange_GetDuplicate(txtRge,
NULL);
1995 hres = ITextRange_GetDuplicate(txtRge, &txtRgeDup);
1998 ITextRange_Release(txtRge);
2009 static const CHAR test_text1[] =
"TestSomeText";
2015 hres = ITextDocument_Range(txtDoc,
first, lim, &txtRge);
2019 hres = ITextRange_GetStart(txtRge, &
start);
2022 hres = ITextRange_GetEnd(txtRge, &
end);
2024 ok(
end == 4,
"got wrong end value: %ld\n",
end);
2025 ITextRange_Release(txtRge);
2027 hres = ITextDocument_Range(txtDoc,
first, lim, &txtRge);
2031 hres = ITextRange_GetStart(txtRge, &
start);
2034 hres = ITextRange_GetEnd(txtRge, &
end);
2036 ok(
end == 4,
"got wrong end value: %ld\n",
end);
2037 ITextRange_Release(txtRge);
2039 hres = ITextDocument_Range(txtDoc,
first, lim, &txtRge);
2043 hres = ITextRange_GetStart(txtRge, &
start);
2046 hres = ITextRange_GetEnd(txtRge, &
end);
2048 ok(
end == 8,
"got wrong end value: %ld\n",
end);
2049 ITextRange_Release(txtRge);
2051 hres = ITextDocument_Range(txtDoc,
first, lim, &txtRge);
2055 hres = ITextRange_GetStart(txtRge, &
start);
2058 hres = ITextRange_GetEnd(txtRge, &
end);
2060 ok(
end == 8,
"got wrong end value: %ld\n",
end);
2061 ITextRange_Release(txtRge);
2064 hres = ITextDocument_Range(txtDoc,
first, lim, &txtRge);
2066 hres = ITextRange_Collapse(txtRge, 256);
2068 hres = ITextRange_GetStart(txtRge, &
start);
2071 hres = ITextRange_GetEnd(txtRge, &
end);
2073 ok(
end == 4,
"got wrong end value: %ld\n",
end);
2074 ITextRange_Release(txtRge);
2077 hres = ITextDocument_Range(txtDoc,
first, lim, &txtRge);
2081 hres = ITextRange_GetStart(txtRge, &
start);
2084 hres = ITextRange_GetEnd(txtRge, &
end);
2086 ok(
end == 6,
"got wrong end value: %ld\n",
end);
2087 ITextRange_Release(txtRge);
2090 hres = ITextDocument_Range(txtDoc,
first, lim, &txtRge);
2094 hres = ITextRange_GetStart(txtRge, &
start);
2097 hres = ITextRange_GetEnd(txtRge, &
end);
2099 ok(
end == 8,
"got wrong end value: %ld\n",
end);
2109 ITextRange_Release(txtRge);
2120 static const CHAR test_text1[] =
"TestSomeText";
2128 ok(
hres ==
S_OK,
"ITextSelection_Collapse\n");
2131 ok(
end == 4,
"got wrong end value: %ld\n",
end);
2135 ok(
hres ==
S_OK,
"ITextSelection_Collapse\n");
2138 ok(
end == 4,
"got wrong end value: %ld\n",
end);
2142 ok(
hres ==
S_OK,
"ITextSelection_Collapse\n");
2145 ok(
end == 8,
"got wrong end value: %ld\n",
end);
2148 hres = ITextSelection_Collapse(txtSel,
tomEnd);
2149 ok(
hres ==
S_OK,
"ITextSelection_Collapse\n");
2152 ok(
end == 8,
"got wrong end value: %ld\n",
end);
2156 hres = ITextSelection_Collapse(txtSel, 256);
2157 ok(
hres ==
S_OK,
"ITextSelection_Collapse\n");
2160 ok(
end == 4,
"got wrong end value: %ld\n",
end);
2164 hres = ITextSelection_Collapse(txtSel,
tomEnd);
2168 ok(
end == 6,
"got wrong end value: %ld\n",
end);
2176 ok(
end == 8,
"got wrong end value: %ld\n",
end);
2186 ITextSelection_Release(txtSel);
2198 LONG refcount1, refcount2;
2201 hres = IRichEditOle_GetClientSite(reOle, &clientSite);
2202 ok(
hres ==
S_OK,
"IRichEditOle_QueryInterface: 0x%08lx\n",
hres);
2205 hres = IOleClientSite_QueryInterface(clientSite, &IID_IRichEditOle, (
void **)&reOle1);
2208 hres = IRichEditOle_GetClientSite(reOle, &clientSite1);
2210 ok(clientSite != clientSite1,
"got %p, %p\n", clientSite, clientSite1);
2211 IOleClientSite_Release(clientSite1);
2214 ok(
hres ==
S_OK,
"IOleClientSite_QueryInterface: 0x%08lx\n",
hres);
2215 ok(clientSite == clientSite1,
"Should not return a new pointer.\n");
2220 ok(
hres ==
S_OK,
"IOleClientSite_QueryInterface: 0x%08lx\n",
hres);
2223 ok(refcount1 == refcount2,
"got wrong ref count.\n");
2225 hres = IOleClientSite_QueryInterface(clientSite, &
IID_IOleWindow, (
void **)&oleWin1);
2226 ok(
hres ==
S_OK,
"IOleClientSite_QueryInterface: 0x%08lx\n",
hres);
2227 ok(oleWin == oleWin1,
"Should not return a new pointer.\n");
2230 ok(refcount1 == refcount2,
"got wrong ref count.\n");
2234 ok(clientSite2 == clientSite1,
"got wrong pointer\n");
2238 ok(
hres ==
S_OK,
"IOleClientSite_QueryInterface: 0x%08lx\n",
hres);
2241 ok(refcount1 == refcount2,
"got wrong ref count.\n");
2244 ok(
hres ==
S_OK,
"IOleClientSite_QueryInterface: 0x%08lx\n",
hres);
2245 ok(olePlace == olePlace1,
"Should not return a new pointer.\n");
2246 IOleInPlaceSite_Release(olePlace1);
2252 ok(refcount1 == refcount2,
"got wrong ref count.\n");
2254 IOleInPlaceSite_Release(olePlace1);
2255 IOleInPlaceSite_Release(olePlace);
2256 IOleWindow_Release(oleWin1);
2257 IOleWindow_Release(oleWin);
2258 IOleClientSite_Release(clientSite2);
2259 IOleClientSite_Release(clientSite1);
2260 IOleClientSite_Release(clientSite);
2275 hres = IRichEditOle_GetClientSite(reOle, &clientSite);
2276 ok(
hres ==
S_OK,
"IRichEditOle_QueryInterface: 0x%08lx\n",
hres);
2279 ok(
hres ==
S_OK,
"IOleClientSite_QueryInterface: 0x%08lx\n",
hres);
2280 hres = IOleWindow_GetWindow(oleWin, &
hwnd);
2282 ok(
w ==
hwnd,
"got wrong pointer\n");
2284 hres = IOleWindow_GetWindow(oleWin,
NULL);
2287 IOleWindow_Release(oleWin);
2288 IOleClientSite_Release(clientSite);
2303 hres = IRichEditOle_GetClientSite(reOle, &clientSite);
2304 ok(
hres ==
S_OK,
"IRichEditOle_QueryInterface: 0x%08lx\n",
hres);
2307 ok(
hres ==
S_OK,
"IOleClientSite_QueryInterface: 0x%08lx\n",
hres);
2308 hres = IOleInPlaceSite_GetWindow(olePlace, &
hwnd);
2310 ok(
w ==
hwnd,
"got wrong pointer.\n");
2312 hres = IOleInPlaceSite_GetWindow(olePlace,
NULL);
2315 IOleInPlaceSite_Release(olePlace);
2316 IOleClientSite_Release(clientSite);
2322 static const CHAR test_text1[] =
"TestSomeText";
2344 ok(
font != font2,
"got %p, %p\n",
font, font2);
2345 ITextFont_Release(font2);
2346 ITextFont_Release(
font);
2352 hr = ITextDocument_Range(doc, 0, 4, &
range);
2370 hr = ITextRange_GetFont(
range, &font2);
2372 ok(
font != font2,
"got %p, %p\n",
font, font2);
2380 ITextFont_Release(font2);
2426 ITextFont_Release(
font);
2432 hr = ITextRange_GetFont(
range, &font2);
2435 ITextRange_Release(
range);
2440 static const CHAR test_text1[] =
"TestSomeText";
2455 hr = ITextDocument_Range(doc, 0, 4, &
range);
2465 hr = ITextRange_GetPara(
range, ¶);
2473 hr = ITextRange_GetPara(
range, ¶2);
2475 ok(para != para2,
"got %p, %p\n", para, para2);
2483 ITextPara_Release(para);
2484 ITextPara_Release(para2);
2500 ok(para != para2,
"got %p, %p\n", para, para2);
2502 ITextPara_Release(para);
2503 ITextPara_Release(para2);
2509 hr = ITextRange_GetPara(
range, ¶);
2519 ITextRange_Release(
range);
2524 static const WCHAR testnameW[] = {
'G',
'e',
't',
'T',
'e',
'x',
't',0};
2525 static const WCHAR testname2W[] = {
'T',
'e',
'x',
't',0};
2538 hr = ITextDocument_Range(doc, 0, 0, &
range);
2546 ok(dispid == DISPID_UNKNOWN,
"got %ld\n", dispid);
2552 ok(dispid == DISPID_VALUE,
"got %ld\n", dispid);
2564 ok(dispid == DISPID_VALUE,
"got %ld\n", dispid);
2566 ITextRange_Release(
range);
2580 ok(
hr == hrexp,
"got 0x%08lx\n",
hr);
2586 ok(
hr == hrexp,
"got 0x%08lx\n",
hr);
2592 ok(
hr == hrexp,
"got 0x%08lx\n",
hr);
2598 ok(
hr == hrexp,
"got 0x%08lx\n",
hr);
2604 ok(
hr == hrexp,
"got 0x%08lx\n",
hr);
2610 ok(
hr == hrexp,
"got 0x%08lx\n",
hr);
2616 ok(
hr == hrexp,
"got 0x%08lx\n",
hr);
2622 ok(
hr == hrexp,
"got 0x%08lx\n",
hr);
2628 ok(
hr == hrexp,
"got 0x%08lx\n",
hr);
2634 ok(
hr == hrexp,
"got 0x%08lx\n",
hr);
2690 hr = ITextFont_GetKerning(
font, &valuef);
2692 ok(valuef == 0.0,
"got %.2f\n", valuef);
2711 hr = ITextFont_GetPosition(
font, &valuef);
2713 ok(valuef == 0.0,
"got %.2f\n", valuef);
2726 hr = ITextFont_GetSize(
font, &valuef);
2728 ok(valuef >= 0.0,
"got %.2f\n", valuef);
2736 hr = ITextFont_GetSpacing(
font, &valuef);
2738 ok(valuef == 0.0,
"got %.2f\n", valuef);
2818 hr = ITextFont_GetKerning(
font, &valuef);
2833 hr = ITextFont_GetPosition(
font, &valuef);
2848 hr = ITextFont_GetSize(
font, &valuef);
2858 hr = ITextFont_GetSpacing(
font, &valuef);
2890 return value * 72.0 / 1440;
2895 static const WCHAR arialW[] = {
'A',
'r',
'i',
'a',
'l',0};
2896 static const CHAR test_text1[] =
"TestSomeText";
2912 hr = ITextDocument_Range(doc, 0, 10, &
range);
2933 hr = ITextFont_SetPosition(
font, 20.0);
2936 hr = ITextFont_SetKerning(
font, 10.0);
2940 hr = ITextFont_GetPosition(
font, &position);
2948 cf.cbSize =
sizeof(
cf);
2956 ok(position ==
twips_to_points(
cf.yOffset),
"got yOffset %ld, position %.2f\n",
cf.yOffset, position);
2965 hr = ITextFont_GetDuplicate(
font, &font2);
2974 ITextFont_Release(font2);
2985 cf.cbSize =
sizeof(
cf);
3027 hr = ITextFont_GetDuplicate(
font, &font2);
3047 hr = ITextFont_GetItalic(font2, &
value);
3052 hr = ITextFont_GetDuplicate(font2, &font3);
3054 ITextFont_Release(font3);
3056 ITextRange_Release(
range);
3066 hr = ITextFont_GetDuplicate(font2, &font3);
3068 ITextFont_Release(font3);
3072 hr = ITextFont_GetBold(font2, &
value);
3086 hr = ITextFont_GetDuplicate(font2, &font3);
3105 hr = ITextFont_GetItalic(font2, &
value);
3113 ITextFont_Release(font3);
3114 ITextFont_Release(font2);
3116 font2 = (
void*)0xdeadbeef;
3117 hr = ITextFont_GetDuplicate(
font, &font2);
3119 ok(font2 ==
NULL,
"got %p\n", font2);
3124 ITextFont_Release(
font);
3130 hr = ITextDocument_Range(doc, 0, 10, &
range);
3229 ITextRange_Release(
range);
3230 ITextFont_Release(
font);
3236 static const CHAR test_text1[] =
"TestSomeText";
3247 hr = ITextDocument_Range(doc, 0, 4, &
range);
3250 hr = ITextDocument_Range(doc, 1, 2, &range2);
3275 hr = ITextRange_GetStart(range2, &
value);
3279 hr = ITextRange_GetEnd(range2, &
value);
3284 ITextRange_Release(
range);
3285 ITextRange_Release(range2);
3291 static const CHAR test_text1[] =
"TestSomeText";
3292 static const WCHAR textW[] = {
'a',
'b',
'c',
'd',
'e',
'f',
'g',
'h',
'i',0};
3304 hr = ITextDocument_Range(doc, 0, 4, &
range);
3307 hr = ITextDocument_Range(doc, 0, 4, &range2);
3311 hr = ITextRange_GetStart(range2, &
value);
3316 hr = ITextRange_GetEnd(range2, &
value);
3324 hr = ITextRange_GetEnd(range2, &
value);
3344 hr = ITextRange_GetStart(range2, &
value);
3349 hr = ITextRange_GetEnd(range2, &
value);
3362 ITextRange_Release(range2);
3373 ITextRange_Release(
range);
3378 static const CHAR test_text1[] =
"TestSomeText";
3391 hr = ITextDocument_Range(doc, 0, 4, &
range);
3394 hr = ITextDocument_Range(doc, 0, 4, &range2);
3398 hr = ITextDocument_Range(doc, 1, 2, &range3);
3480 ITextRange_Release(
range);
3481 ITextRange_Release(range2);
3482 ITextRange_Release(range3);
3488 static const CHAR test_text1[] =
"TestSomeText";
3501 hr = ITextDocument_Range(doc, 0, 4, &
range);
3504 hr = ITextDocument_Range(doc, 0, 4, &range2);
3508 hr = ITextDocument_Range(doc, 1, 2, &range3);
3595 ITextRange_Release(
range);
3596 ITextRange_Release(range2);
3597 ITextRange_Release(range3);
3605 ok(
p.x != -1 &&
p.y != -1,
"p.x:%ld p.y:%ld\n",
p.x,
p.y);
3611 static const CHAR test_text1[] =
"TestSomeText";
3612 static const CHAR test_text2[] =
"text\nwith\nbreak\n"
3613 "lines\ntest\ntest\n";
3628 hr = ITextDocument_Range(doc, 0, 4, &
range);
3632 hr = ITextRange_Select(
range);
3635 ok(scroll_pos1 == scroll_pos2,
"%d != %d\n", scroll_pos1, scroll_pos2);
3642 hr = ITextRange_Select(
range);
3650 hr = ITextDocument_Range(doc, 10, 16, &
range);
3653 hr = ITextRange_Select(
range);
3656 ok(scroll_pos1 != scroll_pos2,
"%d == %d\n", scroll_pos1, scroll_pos2);
3660 hr = ITextRange_Select(
range);
3666 ITextRange_Release(
range);
3672 static const CHAR test_text1[] =
"TestSomeText";
3685 hr = ITextDocument_Range(doc, 0, 4, &
range);
3722 ITextRange_Release(
range);
3728 static const CHAR test_text1[] =
"TestSomeText";
3742 hr = ITextDocument_Range(doc, 0, 4, &
range);
3745 hr = ITextDocument_Range(doc, 5, 2, &range2);
3754 hr = ITextRange_GetFont(range2, &font2);
3769 hr = ITextRange_SetFont(
range, font2);
3781 hr = ITextFont_SetItalic(font2,
tomTrue);
3784 hr = ITextRange_SetFont(
range, font2);
3806 ITextFont_Release(
font);
3807 ITextFont_Release(font2);
3808 ITextRange_Release(
range);
3809 ITextRange_Release(range2);
3830#define CHECK_REOBJECT_STRUCT(reole,index,flags,cp,cp_check,poleobj,pstg,polesite,user) \
3831 _check_reobject_struct(reole, index, flags, cp, cp_check, poleobj, pstg, polesite, user, __LINE__)
3840 hr = IRichEditOle_GetObject(reole,
index, &reobj,
flags);
3841 ok(
hr ==
S_OK,
"IRichEditOle_GetObject failed: %#lx.\n",
hr);
3842 ok_(__FILE__,
line)(reobj.
cp == cp_check,
"expected cp = %ld, got %ld.\n", cp_check, reobj.
cp);
3843 ok_(__FILE__,
line)(reobj.
poleobj == poleobj,
"got wrong object interface.\n");
3844 ok_(__FILE__,
line)(reobj.
pstg == pstg,
"got wrong storage interface.\n");
3845 ok_(__FILE__,
line)(reobj.
polesite == polesite,
"got wrong site interface.\n");
3849#define INSERT_REOBJECT(callback,reole,reobj,cp,user) \
3850 _insert_reobject(callback, reole, reobj, cp, user, __LINE__)
3860 ok_(__FILE__,
line)(
hr ==
S_OK,
"IRichEditOle_GetClientSite got hr %#lx.\n",
hr);
3862 hr = IRichEditOle_InsertObject(reole, reobj);
3863 ok_(__FILE__,
line)(
hr ==
S_OK,
"IRichEditOle_InsertObject got hr %#lx.\n",
hr);
3880 static CHAR test_text1[] =
"abcdefg";
3883 REOBJECT reo1, reo2, reo3, received_reo;
3887 const CHAR *expected_stringA;
3891 FORMATETC formatetc;
3894 STGMEDIUM stgmedium;
3910 ok( !!sendres,
"EM_SETOLECALLBACK should succeed\n" );
3919 ok((
result > 0 && gle == 0xdeadbeef) ||
3921 "EM_GETSELTEXT returned %ld gle=%lu\n",
result, gle);
3922 bad_getsel = (gle != 0xdeadbeef);
3924 trace(
"EM_GETSELTEXT is broken, some tests will be ignored\n");
3928 hr = IRichEditOle_InsertObject(reole,
NULL);
3934 count = IRichEditOle_GetObjectCount(reole);
3935 ok(
count == 1,
"got wrong object count: %ld\n",
count);
3940 count = IRichEditOle_GetObjectCount(reole);
3941 ok(
count == 2,
"got wrong object count: %ld\n",
count);
3946 count = IRichEditOle_GetObjectCount(reole);
3947 ok(
count == 3,
"got wrong object count: %ld\n",
count);
3955 ok(
hr ==
S_OK,
"IRichEditOle_GetClientSite got hr %#lx.\n",
hr);
3960 hr = IRichEditOle_InsertObject(reole, &reobj);
3961 ok(
hr ==
S_FALSE,
"IRichEditOle_InsertObject got hr %#lx.\n",
hr);
3966 count = IRichEditOle_GetObjectCount(reole);
3967 ok(
count == 3,
"got wrong object count: %ld\n",
count);
3975 hr = IRichEditOle_GetObject(reole, 2,
NULL, REO_GETOBJ_ALL_INTERFACES);
3979 hr = IRichEditOle_GetObject(reole, 2, &received_reo, REO_GETOBJ_ALL_INTERFACES);
3985 hr = IRichEditOle_GetObject(reole, 3, &received_reo, REO_GETOBJ_POLESITE);
3988 hr = IRichEditOle_GetObject(reole, 4, &received_reo, REO_GETOBJ_POLESITE);
3991 hr = IRichEditOle_GetObject(reole, 1024, &received_reo, REO_GETOBJ_POLESITE);
3994 hr = IRichEditOle_GetObject(reole, -10, &received_reo, REO_GETOBJ_POLESITE);
3998 received_reo.
cbStruct =
sizeof(received_reo);
4000 hr = IRichEditOle_GetObject(reole, 2, &received_reo, REO_GETOBJ_NO_INTERFACES);
4001 ok(
hr ==
S_OK,
"IRichEditOle_GetObject failed: 0x%08lx\n",
hr);
4002 ok(received_reo.
polesite ==
NULL,
"Got wrong site interface.\n");
4008 received_reo.
cbStruct =
sizeof(received_reo);
4011 received_reo.
cp = 4;
4012 hr = IRichEditOle_GetObject(reole, REO_IOB_USE_CP, &received_reo, REO_GETOBJ_ALL_INTERFACES);
4015 ok(received_reo.
dwUser == 4,
"Got wrong user-defined value: %ld.\n", received_reo.
dwUser);
4039 received_reo.
cbStruct =
sizeof(received_reo);
4040 received_reo.
cp = 0;
4041 hr = IRichEditOle_GetObject(reole, REO_IOB_SELECTION, &received_reo, REO_GETOBJ_ALL_INTERFACES);
4067 expected_string =
L"abc\xfffc"L"d\xfffc"L"efg";
4069 expected_string =
L"abc\xfffc""d\xfffc""efg";
4100 expected_string =
L"abc d efg";
4107 expected_stringA =
"abc d efg";
4108 memset(bufferA, 0,
sizeof(bufferA));
4114 "Got wrong length: %ld (gle %lu)\n",
result, gle);
4115 ok(!
strcmp(bufferA, expected_stringA) ||
broken(bad_getsel && !*bufferA),
4116 "Got wrong content: %s (gle %lu)\n", bufferA, gle);
4118 memset(bufferA, 0,
sizeof(bufferA));
4124 ok(!
strcmp(bufferA, expected_stringA),
"Got wrong content: %s.\n", bufferA);
4127 expected_string =
L"abc\xfffc"L"d\xfffc"L"efg\r";
4129 expected_string =
L"abc\xfffc""d\xfffc""efg\r";
4132 hr = ITextDocument_Range(doc, 0, 11, &
range);
4134 hr = ITextRange_GetText(
range, &bstr);
4139 hr = ITextRange_SetRange(
range, 3, 4);
4144 ITextRange_Release(
range);
4166 expected_string =
L"abc d efg";
4167 charrange.
cpMin = 0;
4168 charrange.
cpMax = 11;
4169 hr = IRichEditOle_GetClipboardData(reole, &charrange, 1, &dataobject);
4172 formatetc.dwAspect = DVASPECT_CONTENT;
4173 formatetc.ptd =
NULL;
4174 formatetc.tymed = TYMED_HGLOBAL;
4175 formatetc.lindex = -1;
4176 hr = IDataObject_GetData(dataobject, &formatetc, &stgmedium);
4184 expected_string =
L"abc\xfffc"L"d\xfffc"L"efg";
4186 expected_string =
L"abc\xfffc""d\xfffc""efg";
4204 expected_stringA =
"abc d efg";
4205 memset(bufferA, 0,
sizeof(bufferA));
4211 "Got wrong length: %ld (gle %lu)\n",
result, gle);
4212 ok(!
strcmp(bufferA, expected_stringA) ||
broken(bad_getsel && !*bufferA),
4213 "Got wrong content: %s (gle %lu)\n", bufferA, gle);
4215 memset(bufferA, 0,
sizeof(bufferA));
4221 ok(!
strcmp(bufferA, expected_stringA),
"Got wrong content: %s.\n", bufferA);
4224 expected_string =
L"abc\xfffc"L"d\xfffc"L"efg";
4226 expected_string =
L"abc\xfffc""d\xfffc""efg";
4229 hr = ITextDocument_Range(doc, 0, 11, &
range);
4231 hr = ITextRange_GetText(
range, &bstr);
4236 hr = ITextRange_SetRange(
range, 3, 4);
4241 ITextRange_Release(
range);
4256 ok(
hr ==
S_OK,
"testoleobj_Create got hr %#lx.\n",
hr);
4265 ok(
hr ==
S_OK,
"IRichEditOle_GetClientSite got hr %#lx.\n",
hr);
4267 ok(
hr ==
S_OK,
"IOleObject_SetClientSite got hr %#lx.\n",
hr);
4270 &CLSID_testoleobj,
NULL, REO_CP_SELECTION,
S_OK);
4272 reobj.
clsid = CLSID_testoleobj;
4273 hr = IRichEditOle_InsertObject(reole, &reobj);
4274 ok(
hr ==
S_OK,
"IRichEditOle_InsertObject got hr %#lx.\n",
hr);
4283 ok(
testobj->draw_count != 0,
"expected draw_count to be nonzero, got %d\n",
testobj->draw_count);
4290 ok(
hr ==
S_OK,
"IRichEditOle_GetClientSite got hr %#lx.\n",
hr);
4292 ok(
hr ==
S_OK,
"IOleObject_SetClientSite got hr %#lx.\n",
hr);
4295 &CLSID_testoleobj,
NULL, REO_CP_SELECTION,
S_OK);
4297 reobj.
clsid = CLSID_testoleobj;
4298 hr = IRichEditOle_InsertObject(reole, &reobj);
4299 ok(
hr ==
S_OK,
"IRichEditOle_InsertObject got hr %#lx.\n",
hr);
4302 memset(&reobj, 0xcc,
sizeof(reobj));
4304 hr = IRichEditOle_GetObject(reole, 0, &reobj, REO_GETOBJ_NO_INTERFACES);
4305 ok(
hr ==
S_OK,
"IRichEditOle_GetObject got hr %#lx.\n",
hr);
4306 ok(reobj.
sizel.
cx == 800,
"expected reobj.sizel.cx to be %ld, got %ld\n", 800L, reobj.
sizel.
cx);
4307 ok(reobj.
sizel.
cy == 400,
"expected reobj.sizel.cy to be %ld, got %ld\n", 400L, reobj.
sizel.
cy);
4314 ok(
testobj->draw_count != 0,
"expected draw_count to be nonzero, got %d\n",
testobj->draw_count);
4317 IOleObject_Release(&
testobj->IOleObject_iface);
4322 ok( !!sendres,
"EM_SETOLECALLBACK should succeed\n" );
4341 ref = IRichEditOleCallback_Release(&
callback->IRichEditOleCallback_iface);
4342 ok(
ref == 0,
"expected IRichEditOleCallback recount to be 0, got %lu\n",
ref);
4346 skip(
"cannot test InsertObject with callback\n");
4352 static const CHAR test_text1[] =
"TestSomeText";
4365 hr = ITextDocument_Range(doc, 0, 4, &
range);
4415 ITextRange_Release(
range);
4420 static const CHAR test_text1[] =
"TestSomeText";
4442 hr = ITextSelection_GetDuplicate(
selection, &range2);
4450 ITextRange_Release(range2);
4474 hr = ITextRange_QueryInterface(
range, &IID_ITextSelection, (
void**)&sel2);
4489 ITextRange_Release(
range);
4492#define RESET_RANGE(range,start,end) \
4493 _reset_range(range, start, end, __LINE__)
4504#define CHECK_RANGE(range,expected_start,expected_end) \
4505 _check_range(range, expected_start, expected_end, __LINE__)
4513 ok_(__FILE__,
line)(
value == expected_start,
"Expected start %ld got %ld\n",
4514 expected_start,
value);
4517 ok_(__FILE__,
line)(
value == expected_end,
"Expected end %ld got %ld\n",
4518 expected_end,
value);
4521#define RESET_SELECTION(selection,start,end) \
4522 _reset_selection(selection, start, end, __LINE__)
4533#define CHECK_SELECTION(selection,expected_start,expected_end) \
4534 _check_selection(selection, expected_start, expected_end, __LINE__)
4542 ok_(__FILE__,
line)(
value == expected_start,
"Expected start %ld got %ld\n",
4543 expected_start,
value);
4546 ok_(__FILE__,
line)(
value == expected_end,
"Expected end %ld got %ld\n",
4547 expected_end,
value);
4552 static const CHAR test_text1[] =
"TestSomeText";
4561 ITextDocument_Range(txtDoc, 0, 0, &txtRge);
4563 hr = ITextRange_SetRange(txtRge, 2, 4);
4567 hr = ITextRange_SetRange(txtRge, 2, 4);
4571 hr = ITextRange_SetRange(txtRge, 4, 2);
4575 hr = ITextRange_SetRange(txtRge, 14, 14);
4579 hr = ITextRange_SetRange(txtRge, 15, 15);
4583 hr = ITextRange_SetRange(txtRge, 14, 1);
4587 hr = ITextRange_SetRange(txtRge, -1, 4);
4591 ITextRange_Release(txtRge);
4597 static const char test_text1[] =
"TestSomeText";
4610 hr = ITextDocument_Range(doc, 0, 4, &
range);
4651 ITextRange_Release(
range);
4656 static const char test_text1[] =
"Word1 Word2";
4669 hr = ITextDocument_Range(doc, 1, 2, &
range);
4674 ok(delta == 0,
"got %ld\n", delta);
4679 ok(delta == -1,
"got %ld\n", delta);
4684 ok(delta == 1,
"got %ld\n", delta);
4689 ok(delta == 0,
"got %ld\n", delta);
4696 ok(delta == 1,
"got %ld\n", delta);
4703 ok(delta == -1,
"got %ld\n", delta);
4708 ok(delta == 0,
"got %ld\n", delta);
4713 ok(delta == 0,
"got %ld\n", delta);
4718 ok(delta == -1,
"got %ld\n", delta);
4723 ok(delta == 1,
"got %ld\n", delta);
4728 ok(delta == 0,
"got %ld\n", delta);
4735 ok(delta == 1,
"got %ld\n", delta);
4742 ok(delta == -1,
"got %ld\n", delta);
4747 ok(delta == 0,
"got %ld\n", delta);
4765 ITextRange_Release(
range);
4772 LONG expected_delta;
4775 if (expected_start < 0)
4777 else if (expected_start > textlen)
4778 expected_start = textlen;
4779 expected_delta = expected_start -
i;
4783 if (expected_start ==
i) {
4785 ok(delta == 0,
"(%d,%d) move by %ld got delta %ld\n",
i,
j,
target -
i, delta);
4789 ok(delta == expected_delta,
"(%d,%d) move by %ld got delta %ld\n",
i,
j,
target -
i, delta);
4790 if (expected_start <=
j)
4801 LONG expected_delta;
4804 if (expected_end < 0)
4806 else if (expected_end > textlen + 1)
4807 expected_end = textlen + 1;
4808 expected_delta = expected_end -
j;
4812 if (expected_end ==
j) {
4814 ok(delta == 0,
"(%d,%d) move by %ld got delta %ld\n",
i,
j,
target -
j, delta);
4818 ok(delta == expected_delta,
"(%d,%d) move by %ld got delta %ld\n",
i,
j,
target -
j, delta);
4819 if (
i <= expected_end)
4831 LONG expected_delta;
4834 if (expected_location < 0)
4835 expected_location = 0;
4836 else if (expected_location > textlen)
4837 expected_location = textlen;
4841 expected_delta = expected_location -
i;
4848 expected_delta = expected_location -
j;
4861 if (expected_delta == 0) {
4862 ok(
hr ==
S_FALSE,
"(%d,%d) move by %ld got hr=0x%08lx\n",
i,
j, move_by,
hr);
4863 ok(delta == 0,
"(%d,%d) move by %ld got delta %ld\n",
i,
j, move_by, delta);
4866 ok(
hr ==
S_OK,
"(%d,%d) move by %ld got hr=0x%08lx\n",
i,
j, move_by,
hr);
4867 ok(delta == expected_delta,
"(%d,%d) move by %ld got delta %ld\n",
i,
j, move_by, delta);
4882 ok(delta == 0,
"(%d,%d) tomMove got delta %ld\n",
i,
j, delta);
4884 ok(
hr ==
S_OK,
"(%d,%d) tomMove got hr=0x%08lx\n",
i,
j,
hr);
4885 ok(delta == -1,
"(%d,%d) tomMove got delta %ld\n",
i,
j, delta);
4893 ok(delta == 0,
"(%d,%d) tomExtend got delta %ld\n",
i,
j, delta);
4914 ok(delta == 0,
"(%d,%d) tomMove got delta %ld\n",
i,
j, delta);
4916 ok(
hr ==
S_OK,
"(%d,%d) tomMove got hr=0x%08lx\n",
i,
j,
hr);
4917 ok(delta == 1,
"(%d,%d) tomMove got delta %ld\n",
i,
j, delta);
4926 ok(delta == 0,
"(%d,%d) tomExtend got delta %ld\n",
i,
j, delta);
4928 ok(
hr ==
S_OK,
"(%d,%d) tomExtend got hr=0x%08lx\n",
i,
j,
hr);
4929 ok(delta == 1,
"(%d,%d) tomExtend got delta %ld\n",
i,
j, delta);
4936 static const char test_text1[] =
"ab\n c";
4944 const int textlen =
strlen(test_text1);
4949 hr = ITextDocument_Range(doc, 0, 0, &
range);
4954 for (
i = 0;
i <= textlen;
i++) {
4955 for (
j =
i;
j <= textlen;
j++) {
4969 ITextRange_Release(
range);
5001#define CLIPBOARD_RANGE_CONTAINS(range, start, end, expected) _clipboard_range_contains(range, start, end, expected, __LINE__, 0);
5002#define TODO_CLIPBOARD_RANGE_CONTAINS(range, start, end, expected) _clipboard_range_contains(range, start, end, expected, __LINE__, 1);
5006 BOOL clipboard_open;
5008 const char *clipboard_text;
5020 ok_(__FILE__,
line)(clipboard_text !=
NULL,
"GlobalLock failed: %p\n", clipboard_text);
5035 static const char text_in[] =
"ab\n c";
5046 hr = ITextDocument_Range(doc, 0, 0, &
range);
5060 hr = ITextRange_SetRange(
range, 0, 1);
5065 hr = ITextDocument_Undo(doc, 1,
NULL);
5066 ok(
hr ==
S_OK,
"Undo failed: 0x%08lx\n",
hr);
5071 hr = ITextRange_SetRange(
range, 0, 1);
5078 ITextRange_Release(
range);
5083 static const char *text_seq[] = {
5093 static LONG seq[] = { -1, -2, -3, -1, 1, 2, 3, 1, -5, 2, -1, 3, 1, 0 };
5094 LONG i = 0, stack_pos = 0;
5107 for (
i = -2;
i <= 2;
i++)
5111 hr = ITextDocument_Undo(doc,
i,
NULL);
5116 hr = ITextDocument_Undo(doc,
i, &
count);
5120 ok(
count == (
i >= 1 ?
i : 0),
"(%ld@0) Expected %ld, got %ld\n",
i,
i >= 0 ?
i : 0,
count);
5123 hr = ITextDocument_Redo(doc,
i,
NULL);
5127 hr = ITextDocument_Redo(doc,
i, &
count);
5159 ok(
strcmp(
buffer, text_seq[stack_pos]) == 0,
"Expected %s, got %s\n",
5168 hr = ITextDocument_Undo(doc, -seq[
i], &
count);
5169 ok(
hr ==
S_OK,
"(%ld@%ld) Undo: %#lx\n",
i, stack_pos,
hr);
5170 ok(
count == expect_count,
"(%ld@%ld) Expected %ld, got %ld\n",
i, stack_pos, expect_count,
count);
5175 hr = ITextDocument_Redo(doc, seq[
i], &
count);
5176 ok(
hr == (expect_count ?
S_OK :
S_FALSE),
"(%ld@%ld) Redo: %#lx\n",
i, stack_pos,
hr);
5177 ok(
count == expect_count,
"(%ld@%ld) Expected %ld, got %ld\n",
i, stack_pos, expect_count,
count);
5194#define ok_msg_result(h,m,w,l,r) ok_msg_result_(__LINE__,#m,h,m,w,l,r)
5254 ok(cur_undo_limit == inst->
undo_limit,
"Expected undo limit %Id, got %Id\n",
5299 ok(0,
"unreachable\n");
5328 ok(0,
"unreachable\n");
5336#define perform_undo(i,c) perform_undo_(i,c,__LINE__)
5346 ok_(__FILE__,
line)(lres ==
FALSE || lres ==
TRUE,
"unexpected LRESULT %#Ix\n", lres);
5352 hr = ITextDocument_Undo(inst->
doc, 1, &
count);
5367 return can_undo &&
result;
5370#define perform_redo(i,c) perform_redo_(i,c,__LINE__)
5380 ok_(__FILE__,
line)(lres ==
FALSE || lres ==
TRUE,
"unexpected LRESULT %#Ix\n", lres);
5386 hr = ITextDocument_Redo(inst->
doc, 1, &
count);
5401 return can_redo &&
result;
5407 static const char text_foo[] =
"foo";
5408 static const char text_bar[] =
"bar";
5409 static const char *last_text, *last_text2;
5414 undo_count = redo_count = 0;
5441 if (
perform_undo(inst, undo_count > 0)) undo_count--, redo_count++, last_text =
"";
5456 if (
perform_undo(inst, undo_count > 0)) undo_count--, redo_count++, last_text =
"";
5465 if (
perform_redo(inst, redo_count > 0)) undo_count++, redo_count--, last_text = text_foo;
5480 if (
perform_undo(inst, undo_count > 0)) undo_count--, redo_count++, last_text2 = last_text;
5486 if (
perform_redo(inst, redo_count > 0)) undo_count++, redo_count--, last_text2 = text_bar;
5548 DWORD lasterr, style1, style2;
5560 ok(lasterr == 0xdeadbeefUL,
"GetLastError() returned %#lx\n", lasterr);
5564 ok(
hr ==
S_OK,
"ITextDocument_Freeze returned %#lx\n",
hr);
5565 ok(
count == 1,
"expected count to be %d, got %ld\n", 1,
count);
5568 ok(style2 == style1,
"expected window style to not change from %#lx, got %#lx\n", style1, style2);
5572 ok(
hr ==
S_OK,
"ITextDocument_Freeze returned %#lx\n",
hr);
5573 ok(
count == 2,
"expected count to be %d, got %ld\n", 2,
count);
5577 ok(
hr ==
S_FALSE,
"ITextDocument_Unfreeze returned %#lx\n",
hr);
5578 ok(
count == 1,
"expected count to be %d, got %ld\n", 1,
count);
5582 ok(
hr ==
S_OK,
"ITextDocument_Unfreeze returned %#lx\n",
hr);
5583 ok(
count == 0,
"expected count to be %d, got %ld\n", 0,
count);
5587 ok(
hr ==
S_OK,
"ITextDocument_Unfreeze returned %#lx\n",
hr);
5588 ok(
count == 0,
"expected count to be %d, got %ld\n", 0,
count);
5592 ok(
hr ==
S_OK,
"ITextDocument_Freeze returned %#lx\n",
hr);
5593 ok(
count == 1,
"expected count to be %d, got %ld\n", 1,
count);
5597 ok(
hr ==
S_OK,
"ITextDocument_Unfreeze returned %#lx\n",
hr);
5598 ok(
count == 0,
"expected count to be %d, got %ld\n", 0,
count);
5602 ok(
hr ==
S_OK,
"ITextDocument_Freeze returned %#lx\n",
hr);
5606 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
LPVOID NTAPI GlobalLock(HGLOBAL hMem)
BOOL NTAPI GlobalUnlock(HGLOBAL hMem)
LPVOID WINAPI CoTaskMemAlloc(SIZE_T size)
_Check_return_ long __cdecl labs(_In_ long x)
REFIID LPVOID DWORD_PTR dw
#define memcpy(s1, s2, n)
#define ERROR_FILE_NOT_FOUND
static const WCHAR textW[]
static IPrintDialogCallback callback
static const WCHAR desc[]
#define todo_wine_if(is_todo)
#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)
void __winetest_cdecl winetest_push_context(const char *fmt,...)
void winetest_pop_context(void)
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)
#define OLE_E_NOCONNECTION
#define ERROR_SHARING_VIOLATION
#define ERROR_FILE_EXISTS
#define HRESULT_FROM_WIN32(x)
#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)