diff --git a/configure b/configure index d77cc598994..fff8e9bfa4f 100755 --- a/configure +++ b/configure @@ -17527,7 +17527,7 @@ wine_fn_config_test dlls/rasapi32/tests rasapi32_test wine_fn_config_dll rasdlg enable_rasdlg implib wine_fn_config_dll regapi enable_regapi wine_fn_config_dll resutils enable_resutils implib -wine_fn_config_dll riched20 enable_riched20 implib +wine_fn_config_dll riched20 enable_riched20 clean,implib wine_fn_config_test dlls/riched20/tests riched20_test wine_fn_config_dll riched32 enable_riched32 wine_fn_config_test dlls/riched32/tests riched32_test diff --git a/configure.ac b/configure.ac index a9a7bcfecb7..fcf825e8faa 100644 --- a/configure.ac +++ b/configure.ac @@ -3217,7 +3217,7 @@ WINE_CONFIG_TEST(dlls/rasapi32/tests) WINE_CONFIG_DLL(rasdlg,,[implib]) WINE_CONFIG_DLL(regapi) WINE_CONFIG_DLL(resutils,,[implib]) -WINE_CONFIG_DLL(riched20,,[implib]) +WINE_CONFIG_DLL(riched20,,[clean,implib]) WINE_CONFIG_TEST(dlls/riched20/tests) WINE_CONFIG_DLL(riched32) WINE_CONFIG_TEST(dlls/riched32/tests) diff --git a/dlls/riched20/Makefile.in b/dlls/riched20/Makefile.in index 698378f6401..be57b41d3d3 100644 --- a/dlls/riched20/Makefile.in +++ b/dlls/riched20/Makefile.in @@ -25,3 +25,6 @@ C_SRCS = \ writer.c RC_SRCS = version.rc + +IDL_SRCS = \ + riched_tom.idl diff --git a/dlls/riched20/riched_tom.idl b/dlls/riched20/riched_tom.idl new file mode 100644 index 00000000000..c5e1fe61970 --- /dev/null +++ b/dlls/riched20/riched_tom.idl @@ -0,0 +1,710 @@ +/* + * Copyright 2006 Juan Lang + * Copyright 2015 Nikolay Sivov for CodeWeavers + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +import "unknwn.idl"; +import "objidl.idl"; +import "oaidl.idl"; + +#pragma makedep regtypelib + +cpp_quote("#ifdef WINE_NO_UNICODE_MACROS") +cpp_quote("#undef FindText") +cpp_quote("#endif") + +[ + uuid(8cc497c9-a1df-11ce-8098-00aa0047be5d), + version(1.0) +] +library tom +{ + +importlib("stdole2.tlb"); + +typedef enum tagTomConstants +{ + tomFalse = 0, + tomTrue = -1, + tomUndefined = -9999999, + tomToggle = -9999998, + tomAutoColor = -9999997, + tomDefault = -9999996, + tomSuspend = -9999995, + tomResume = -9999994, + tomApplyNow = 0, + tomApplyLater = 1, + tomTrackParms = 2, + tomCacheParms = 3, + tomBackward = 0xc0000001, + tomForward = 0x3fffffff, + tomMove = 0, + tomExtend = 1, + tomNoSelection = 0, + tomSelectionIP = 1, + tomSelectionNormal = 2, + tomSelectionFrame = 3, + tomSelectionColumn = 4, + tomSelectionRow = 5, + tomSelectionBlock = 6, + tomSelectionInlineShape = 7, + tomSelectionShape = 8, + tomSelStartActive = 1, + tomSelAtEOL = 2, + tomSelOvertype = 4, + tomSelActive = 8, + tomSelReplace = 16, + tomEnd = 0, + tomStart = 32, + tomCollapseEnd = 0, + tomCollapseStart = 1, + tomClientCoord = 256, + tomNone = 0, + tomSingle = 1, + tomWords = 2, + tomDouble = 3, + tomDotted = 4, + tomDash = 5, + tomDashDot = 6, + tomDashDotDot = 7, + tomWave = 8, + tomThick = 9, + tomHair = 10, + tomLineSpaceSingle = 0, + tomLineSpace1pt5 = 1, + tomLineSpaceDouble = 2, + tomLineSpaceAtLeast = 3, + tomLineSpaceExactly = 4, + tomLineSpaceMultiple = 5, + tomAlignLeft = 0, + tomAlignCenter = 1, + tomAlignRight = 2, + tomAlignJustify = 3, + tomAlignDecimal = 3, + tomAlignBar = 4, + tomAlignInterWord = 3, + tomAlignInterLetter = 4, + tomAlignScaled = 5, + tomAlignGlyphs = 6, + tomAlignSnapGrid = 7, + tomSpaces = 0, + tomDots = 1, + tomDashes = 2, + tomLines = 3, + tomThickLines = 4, + tomEquals = 5, + tomTabBack = -3, + tomTabNext = -2, + tomTabHere = -1, + tomListBullet = 1, + tomListNumberAsArabic = 2, + tomListNumberAsLCLetter = 3, + tomListNumberAsUCLetter = 4, + tomListNumberAsLCRoman = 5, + tomListNumberAsUCRoman = 6, + tomListNumberAsSequence = 7, + tomListParentheses = 0x10000, + tomListPeriod = 0x20000, + tomListPlain = 0x30000, + tomCharacter = 1, + tomWord = 2, + tomSentence = 3, + tomParagraph = 4, + tomLine = 5, + tomStory = 6, + tomScreen = 7, + tomSection = 8, + tomColumn = 9, + tomRow = 10, + tomWindow = 11, + tomCell = 12, + tomCharFormat = 13, + tomParaFormat = 14, + tomTable = 15, + tomObject = 16, + tomMatchWord = 2, + tomMatchCase = 4, + tomMatchPattern = 8, + tomUnknownStory = 0, + tomMainTextStory = 1, + tomFootnotesStory = 2, + tomEndnotesStory = 3, + tomCommentsStory = 4, + tomTextFrameStory = 5, + tomEvenPagesHeaderStory = 6, + tomPrimaryHeaderStory = 7, + tomEvenPagesFooterStory = 8, + tomPrimaryFooterStory = 9, + tomFirstPageHeaderStory = 10, + tomFirstPageFooterStory = 11, + tomNoAnimation = 0, + tomLasVegasLights = 1, + tomBlinkingBackground = 2, + tomSparkleText = 3, + tomMarchingBlackAnts = 4, + tomMarchingRedAnts = 5, + tomShimmer = 6, + tomWipeDown = 7, + tomWipeRight = 8, + tomAnimationMax = 8, + tomLowerCase = 0, + tomUpperCase = 1, + tomTitleCase = 2, + tomSentenceCase = 4, + tomToggleCase = 5, + tomReadOnly = 0x100, + tomShareDenyRead = 0x200, + tomShareDenyWrite = 0x400, + tomPasteFile = 0x1000, + tomCreateNew = 0x10, + tomCreateAlways = 0x20, + tomOpenExisting = 0x30, + tomOpenAlways = 0x40, + tomTruncateExisting = 0x50, + tomRTF = 0x1, + tomText = 0x2, + tomHTML = 0x3, + tomWordDocument = 0x4, + tomBold = 0x80000001, + tomItalic = 0x80000002, + tomUnderline = 0x80000004, + tomStrikeout = 0x80000008, + tomProtected = 0x80000010, + tomLink = 0x80000020, + tomSmallCaps = 0x80000040, + tomAllCaps = 0x80000080, + tomHidden = 0x80000100, + tomOutline = 0x80000200, + tomShadow = 0x80000400, + tomEmboss = 0x80000800, + tomImprint = 0x80001000, + tomDisabled = 0x80002000, + tomRevised = 0x80004000, + tomNormalCaret = 0, + tomKoreanBlockCaret = 0x1, + tomIncludeInset = 0x1, + tomIgnoreCurrentFont = 0, + tomMatchFontCharset = 0x1, + tomMatchFontSignature = 0x2, + tomCharset = 0x80000000, + tomRE10Mode = 0x1, + tomNoIME = 0x80000, + tomSelfIME = 0x40000 +} tomConstants; + +interface ITextRange; +interface ITextSelection; +interface ITextStoryRanges; + +[ + uuid(8cc497c0-a1df-11ce-8098-00aa0047be5d), + object, + dual, + oleautomation +] +interface ITextDocument : IDispatch +{ + [propget, id(DISPID_VALUE)] + HRESULT Name([retval, out] BSTR *name); + + [propget] + HRESULT Selection([retval, out] ITextSelection **selection); + + [propget] + HRESULT StoryCount([retval, out] LONG *count); + + [propget] + HRESULT StoryRanges([retval, out] ITextStoryRanges **ranges); + + [propget] + HRESULT Saved([retval, out] LONG *value); + + [propput] + HRESULT Saved([in] LONG value); + + [propget] + HRESULT DefaultTabStop([retval, out] float *value); + + [propput] + HRESULT DefaultTabStop([in] float value); + + HRESULT New(); + + HRESULT Open([in] VARIANT *var, [in] LONG flags, [in] LONG codepage); + + HRESULT Save([in] VARIANT *var, [in] LONG flags, [in] LONG codepage); + + HRESULT Freeze([retval, out] LONG *count); + HRESULT Unfreeze([retval, out] LONG *count); + HRESULT BeginEditCollection(); + HRESULT EndEditCollection(); + HRESULT Undo([in] LONG count, [retval, out] LONG *prop); + HRESULT Redo([in] LONG count, [retval, out] LONG *prop); + HRESULT Range([in] LONG start, [in] LONG end, [retval, out] ITextRange **range); + HRESULT RangeFromPoint([in] LONG x, [in] LONG y, [retval, out] ITextRange **range); +} + +interface ITextFont; +interface ITextPara; + +[ + uuid(8cc497c2-a1df-11ce-8098-00aa0047be5d), + object, + dual, + oleautomation +] +interface ITextRange : IDispatch +{ + [propget, id(DISPID_VALUE)] + HRESULT Text([retval, out] BSTR *text); + + [propput, id(DISPID_VALUE)] + HRESULT Text([in] BSTR text); + + [propget] + HRESULT Char([retval, out] LONG *ch); + + [propput] + HRESULT Char([in] LONG ch); + + [propget] + HRESULT Duplicate([retval, out] ITextRange **range); + + [propget] + HRESULT FormattedText([retval, out] ITextRange **range); + + [propput] + HRESULT FormattedText([in] ITextRange *range); + + [propget] + HRESULT Start([retval, out] LONG *start); + + [propput] + HRESULT Start([in] LONG start); + + [propget] + HRESULT End([retval, out] LONG *end); + + [propput] + HRESULT End([in] LONG end); + + [propget] + HRESULT Font([retval, out] ITextFont **font); + + [propput] + HRESULT Font([in] ITextFont *font); + + [propget] + HRESULT Para([retval, out] ITextPara **para); + + [propput] + HRESULT Para([in] ITextPara *para); + + [propget] + HRESULT StoryLength([retval, out] LONG *len); + + [propget] + HRESULT StoryType([retval, out] LONG *value); + + HRESULT Collapse([in] LONG start); + HRESULT Expand([in] LONG unit, [retval, out] LONG *delta); + HRESULT GetIndex([in] LONG unit, [retval, out] LONG *index); + HRESULT SetIndex([in] LONG unit, [in] LONG index, [in] LONG extend); + HRESULT SetRange([in] LONG active, [in] LONG other); + HRESULT InRange([in] ITextRange *range, [retval, out] LONG *pb); + HRESULT InStory([in] ITextRange *range, [retval, out] LONG *pb); + HRESULT IsEqual([in] ITextRange *range, [retval, out] LONG *pb); + HRESULT Select(); + HRESULT StartOf([in] LONG unit, [in] LONG extend, [retval, out] LONG *delta); + HRESULT EndOf([in] LONG unit, [in] LONG extend, [retval, out] LONG *delta); + HRESULT Move([in] LONG unit, [in] LONG count, [retval, out] LONG *delta); + HRESULT MoveStart([in] LONG unit, [in] LONG count, [retval, out] LONG *delta); + HRESULT MoveEnd([in] LONG unit, [in] LONG count, [retval, out] LONG *delta); + HRESULT MoveWhile([in] VARIANT *charset, [in] LONG count, [retval, out] LONG *delta); + HRESULT MoveStartWhile([in] VARIANT *charset, [in] LONG count, [retval, out] LONG *delta); + HRESULT MoveEndWhile([in] VARIANT *charset, [in] LONG count, [retval, out] LONG *delta); + HRESULT MoveUntil([in] VARIANT *charset, [in] LONG count, [retval, out] LONG *delta); + HRESULT MoveStartUntil([in] VARIANT *charset, [in] LONG count, [retval, out] LONG *delta); + HRESULT MoveEndUntil([in] VARIANT *charset, [in] LONG count, [retval, out] LONG *delta); + HRESULT FindText([in] BSTR str, [in] LONG ch, [in] LONG flags, [retval, out] LONG *len); + HRESULT FindTextStart([in] BSTR str, [in] LONG cch, [in] LONG flags, [retval, out] LONG *len); + HRESULT FindTextEnd([in] BSTR str, [in] LONG ch, [in] LONG flags, [retval, out] LONG *len); + HRESULT Delete([in] LONG unit, [in] LONG count, [retval, out] LONG *delta); + HRESULT Cut([out] VARIANT *var); + HRESULT Copy([out] VARIANT *var); + HRESULT Paste([in] VARIANT *var, [in] LONG format); + HRESULT CanPaste([in] VARIANT *var, [in] LONG format, [retval, out] LONG *pb); + HRESULT CanEdit([retval, out] LONG *pb); + HRESULT ChangeCase([in] LONG type); + HRESULT GetPoint([in] LONG type, [out] LONG *cx, [out] LONG *cy); + HRESULT SetPoint([in] LONG x, [in] LONG y, [in] LONG type, [in] LONG extend); + HRESULT ScrollIntoView([in] LONG value); + HRESULT GetEmbeddedObject([retval, out] IUnknown **ppv); +} + +[ + uuid(8cc497c1-a1df-11ce-8098-00aa0047be5d), + object, + dual, + oleautomation +] +interface ITextSelection : ITextRange +{ + [propget] + HRESULT Flags([retval, out] LONG *flags); + + [propput] + HRESULT Flags([in] LONG flags); + + [propget] + HRESULT Type([retval, out] LONG *type); + + HRESULT MoveLeft([in] LONG unit, [in] LONG count, [in] LONG extend, [retval, out] LONG *delta); + HRESULT MoveRight([in] LONG unit, [in] LONG count, [in] LONG extend, [retval, out] LONG *delta); + HRESULT MoveUp([in] LONG unit, [in] LONG count, [in] LONG extend, [retval, out] LONG *delta); + HRESULT MoveDown([in] LONG unit, [in] LONG count, [in] LONG extend, [retval, out] LONG *delta); + HRESULT HomeKey([in] LONG unit, [in] LONG extend, [retval, out] LONG *delta); + HRESULT EndKey([in] LONG unit, [in] LONG extend, [retval, out] LONG *delta); + HRESULT TypeText([in] BSTR str); +} + +[ + uuid(8cc497c3-a1df-11ce-8098-00aa0047be5d), + object, + dual, + oleautomation +] +interface ITextFont : IDispatch +{ + [propget, id(DISPID_VALUE)] + HRESULT Duplicate([retval, out] ITextFont **font); + + [propput, id(DISPID_VALUE)] + HRESULT Duplicate([in] ITextFont *font); + + HRESULT CanChange([out] LONG *pB); + HRESULT IsEqual([in] ITextFont *font, [retval, out] LONG *pB); + HRESULT Reset([in] LONG value); + + [propget] + HRESULT GetStyle([retval, out] LONG *value); + + [propput] + HRESULT SetStyle([in] LONG value); + + [propget] + HRESULT AllCaps([retval, out] LONG *value); + + [propput] + HRESULT AllCaps([in] LONG value); + + [propget] + HRESULT Animation([retval, out] LONG *value); + + [propput] + HRESULT Animation([in] LONG value); + + [propget] + HRESULT BackColor([retval, out] LONG *value); + + [propput] + HRESULT BackColor([in] LONG value); + + [propget] + HRESULT Bold([retval, out] LONG *value); + + [propput] + HRESULT Bold([in] LONG value); + + [propget] + HRESULT Emboss([retval, out] LONG *value); + + [propput] + HRESULT Emboss([in] LONG value); + + [propget] + HRESULT ForeColor([retval, out] LONG *value); + + [propput] + HRESULT ForeColor([in] LONG value); + + [propget] + HRESULT Hidden([retval, out] LONG *value); + + [propput] + HRESULT Hidden([in] LONG value); + + [propget] + HRESULT Engrave([retval, out] LONG *value); + + [propput] + HRESULT Engrave([in] LONG value); + + [propget] + HRESULT Italic([retval, out] LONG *value); + + [propput] + HRESULT Italic([in] LONG value); + + [propget] + HRESULT Kerning([retval, out] float *value); + + [propput] + HRESULT Kerning([in] float value); + + [propget] + HRESULT LanguageID([retval, out] LONG *value); + + [propput] + HRESULT LanguageID([in] LONG value); + + [propget] + HRESULT Name([retval, out] BSTR *value); + + [propput] + HRESULT Name([in] BSTR value); + + [propget] + HRESULT Outline([retval, out] LONG *value); + + [propput] + HRESULT Outline([in] LONG value); + + [propget] + HRESULT Position([retval, out] float *value); + + [propput] + HRESULT Position([in] float value); + + [propget] + HRESULT Protected([retval, out] LONG *value); + + [propput] + HRESULT Protected([in] LONG value); + + [propget] + HRESULT Shadow([retval, out] LONG *value); + + [propput] + HRESULT Shadow([in] LONG value); + + [propget] + HRESULT Size([retval, out] float *value); + + [propput] + HRESULT Size([in] float value); + + [propget] + HRESULT SmallCaps([retval, out] LONG *value); + + [propput] + HRESULT SmallCaps([in] LONG value); + + [propget] + HRESULT Spacing([retval, out] float *value); + + [propput] + HRESULT Spacing([in] float value); + + [propget] + HRESULT StrikeThrough([retval, out] LONG *value); + + [propput] + HRESULT StrikeThrough([in] LONG value); + + [propget] + HRESULT Subscript([retval, out] LONG *value); + + [propput] + HRESULT Subscript([in] LONG value); + + [propget] + HRESULT Superscript([retval, out] LONG *value); + + [propput] + HRESULT Superscript([in] LONG value); + + [propget] + HRESULT Underline([retval, out] LONG *value); + + [propput] + HRESULT Underline([in] LONG value); + + [propget] + HRESULT Weight([retval, out] LONG *value); + + [propput] + HRESULT Weight([in] LONG value); +} + +[ + uuid(8cc497c4-a1df-11ce-8098-00aa0047be5d), + object, + dual, + oleautomation +] +interface ITextPara : IDispatch +{ + [propget, id(DISPID_VALUE)] + HRESULT Duplicate([retval, out] ITextPara **para); + + [propput, id(DISPID_VALUE)] + HRESULT Duplicate([in] ITextPara *para); + + HRESULT CanChange([out, retval] LONG *pB); + HRESULT IsEqual([in] ITextPara *para, [retval, out] LONG *pB); + HRESULT Reset([in] LONG value); + + [propget] + HRESULT Style([retval, out] LONG *value); + + [propput] + HRESULT Style([in] LONG value); + + [propget] + HRESULT Alignment([retval, out] LONG *value); + + [propput] + HRESULT Alignment([in] LONG value); + + [propget] + HRESULT Hyphenation([retval, out]LONG *value); + + [propput] + HRESULT Hyphenation([in] LONG value); + + [propget] + HRESULT FirstLineIndent([retval, out] float *value); + + [propget] + HRESULT KeepTogether([retval, out] LONG *value); + + [propput] + HRESULT KeepTogether([in] LONG value); + + [propget] + HRESULT KeepWithNext([retval, out] LONG *value); + + [propput] + HRESULT KeepWithNext([in] LONG value); + + [propget] + HRESULT LeftIndent([retval, out] float *value); + + [propget] + HRESULT LineSpacing([retval, out] float *value); + + [propget] + HRESULT LineSpacingRule([retval, out] LONG *value); + + [propget] + HRESULT ListAlignment([retval, out] LONG *value); + + [propput] + HRESULT ListAlignment([in] LONG value); + + [propget] + HRESULT ListLevelIndex([retval, out] LONG *value); + + [propput] + HRESULT ListLevelIndex([in] LONG value); + + [propget] + HRESULT ListStart([retval, out] LONG *value); + + [propput] + HRESULT ListStart([in] LONG value); + + [propget] + HRESULT ListTab([retval, out] float *value); + + [propput] + HRESULT ListTab([in] float value); + + [propget] + HRESULT ListType([retval, out] LONG *value); + + [propput] + HRESULT ListType([in] LONG value); + + [propget] + HRESULT NoLineNumber([retval, out] LONG *value); + + [propput] + HRESULT NoLineNumber([in] LONG value); + + [propget] + HRESULT PageBreakBefore([retval, out] LONG *value); + + [propput] + HRESULT PageBreakBefore([in] LONG value); + + [propget] + HRESULT RightIndent([retval, out] float *value); + + [propput] + HRESULT RightIndent([in] float value); + + HRESULT SetIndents([in] float StartIndent, [in] float LeftIndent, [in] float RightIndent); + HRESULT SetLineSpacing([in] LONG LineSpacingRule, [in] float LineSpacing); + + [propget] + HRESULT SpaceAfter([retval, out] float *value); + + [propput] + HRESULT SpaceAfter([in] float value); + + [propget] + HRESULT SpaceBefore([retval, out] float *value); + + [propput] + HRESULT SpaceBefore([in] float value); + + [propget] + HRESULT WidowControl([retval, out] LONG *value); + + [propput] + HRESULT WidowControl([in] LONG value); + + [propget] + HRESULT TabCount([retval, out] LONG *count); + + HRESULT AddTab([in] float tbPos, [in] LONG tbAlign, [in] LONG tbLeader); + HRESULT ClearAllTabs(); + HRESULT DeleteTab([in] float tbPos); + HRESULT GetTab([in] LONG iTab, [out] float *ptbPos, [out] LONG *ptbAlign, [out] LONG *ptbLeader); +} + +[ + uuid(8cc497c5-a1df-11ce-8098-00aa0047be5d), + object, + dual, + oleautomation +] +interface ITextStoryRanges : IDispatch +{ + [restricted, hidden, id(DISPID_NEWENUM)] + HRESULT _NewEnum([retval, out] IUnknown **ppEnum); + + [id(DISPID_VALUE)] + HRESULT Item([in] LONG index, [retval, out] ITextRange **range); + + [propget] + HRESULT Count([retval, out] LONG *count); +} + +} /* Library tom */ diff --git a/dlls/riched20/tests/richole.c b/dlls/riched20/tests/richole.c index 0af617b6ca8..d8262988652 100644 --- a/dlls/riched20/tests/richole.c +++ b/dlls/riched20/tests/richole.c @@ -35,6 +35,8 @@ static HMODULE hmoduleRichEdit; +DEFINE_GUID(GUID_NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + #define EXPECT_REF(obj,ref) _expect_ref((IUnknown*)obj, ref, __LINE__) static void _expect_ref(IUnknown* obj, ULONG ref, int line) { @@ -1308,6 +1310,43 @@ static void test_GetPara(void) release_interfaces(&hwnd, &reOle, &doc, NULL); } +static void test_dispatch(void) +{ + static const WCHAR testnameW[] = {'G','e','t','T','e','x','t',0}; + static const WCHAR testname2W[] = {'T','e','x','t',0}; + IRichEditOle *reOle = NULL; + ITextDocument *doc = NULL; + ITextRange *range = NULL; + WCHAR *nameW; + DISPID dispid; + HRESULT hr; + HWND hwnd; + + create_interfaces(&hwnd, &reOle, &doc, NULL); + + range = NULL; + hr = ITextDocument_Range(doc, 0, 0, &range); + ok(hr == S_OK, "got 0x%08x\n", hr); + ok(range != NULL, "got %p\n", range); + + dispid = 123; + nameW = (WCHAR*)testnameW; + hr = ITextRange_GetIDsOfNames(range, &IID_NULL, &nameW, 1, LOCALE_USER_DEFAULT, &dispid); +todo_wine { + ok(hr == DISP_E_UNKNOWNNAME, "got 0x%08x\n", hr); + ok(dispid == DISPID_UNKNOWN, "got %d\n", dispid); +} + dispid = 123; + nameW = (WCHAR*)testname2W; + hr = ITextRange_GetIDsOfNames(range, &IID_NULL, &nameW, 1, LOCALE_USER_DEFAULT, &dispid); +todo_wine { + ok(hr == S_OK, "got 0x%08x\n", hr); + ok(dispid == DISPID_VALUE, "got %d\n", dispid); +} + ITextRange_Release(range); + release_interfaces(&hwnd, &reOle, &doc, NULL); +} + START_TEST(richole) { /* Must explicitly LoadLibrary(). The test has no references to functions in @@ -1331,4 +1370,5 @@ START_TEST(richole) test_IOleInPlaceSite_GetWindow(); test_GetFont(); test_GetPara(); + test_dispatch(); }