Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-cw
Commits
81fc69d7
Commit
81fc69d7
authored
May 24, 2015
by
Nikolay Sivov
Committed by
Alexandre Julliard
May 25, 2015
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
riched20: Added IDispatch support.
parent
12a134fd
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
260 additions
and
63 deletions
+260
-63
editor.c
dlls/riched20/editor.c
+1
-0
editor.h
dlls/riched20/editor.h
+2
-0
richole.c
dlls/riched20/richole.c
+242
-58
richole.c
dlls/riched20/tests/richole.c
+15
-5
No files found.
dlls/riched20/editor.c
View file @
81fc69d7
...
@@ -2927,6 +2927,7 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
...
@@ -2927,6 +2927,7 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
UnregisterClassW
(
REComboBox20W
,
0
);
UnregisterClassW
(
REComboBox20W
,
0
);
LookupCleanup
();
LookupCleanup
();
HeapDestroy
(
me_heap
);
HeapDestroy
(
me_heap
);
release_typelib
();
break
;
break
;
}
}
return
TRUE
;
return
TRUE
;
...
...
dlls/riched20/editor.h
View file @
81fc69d7
...
@@ -349,3 +349,5 @@ LRESULT ME_StreamOut(ME_TextEditor *editor, DWORD dwFormat, EDITSTREAM *stream)
...
@@ -349,3 +349,5 @@ LRESULT ME_StreamOut(ME_TextEditor *editor, DWORD dwFormat, EDITSTREAM *stream)
/* clipboard.c */
/* clipboard.c */
HRESULT
ME_GetDataObject
(
ME_TextEditor
*
editor
,
const
ME_Cursor
*
start
,
int
nChars
,
LPDATAOBJECT
*
lplpdataobj
)
DECLSPEC_HIDDEN
;
HRESULT
ME_GetDataObject
(
ME_TextEditor
*
editor
,
const
ME_Cursor
*
start
,
int
nChars
,
LPDATAOBJECT
*
lplpdataobj
)
DECLSPEC_HIDDEN
;
void
release_typelib
(
void
)
DECLSPEC_HIDDEN
;
dlls/riched20/richole.c
View file @
81fc69d7
...
@@ -40,6 +40,8 @@ WINE_DEFAULT_DEBUG_CHANNEL(richedit);
...
@@ -40,6 +40,8 @@ WINE_DEFAULT_DEBUG_CHANNEL(richedit);
/* there is no way to be consistent across different sets of headers - mingw, Wine, Win32 SDK*/
/* there is no way to be consistent across different sets of headers - mingw, Wine, Win32 SDK*/
#include "initguid.h"
#include "initguid.h"
DEFINE_GUID
(
LIBID_tom
,
0x8cc497c9
,
0xa1df
,
0x11ce
,
0x80
,
0x98
,
0x00
,
0xaa
,
0x00
,
0x47
,
0xbe
,
0x5d
);
DEFINE_GUID
(
IID_ITextServices
,
0x8d33f740
,
0xcf58
,
0x11ce
,
0xa8
,
0x9d
,
0x00
,
0xaa
,
0x00
,
0x6c
,
0xad
,
0xc5
);
DEFINE_GUID
(
IID_ITextServices
,
0x8d33f740
,
0xcf58
,
0x11ce
,
0xa8
,
0x9d
,
0x00
,
0xaa
,
0x00
,
0x6c
,
0xad
,
0xc5
);
DEFINE_GUID
(
IID_ITextHost
,
0x13e670f4
,
0x1a5a
,
0x11cf
,
0xab
,
0xeb
,
0x00
,
0xaa
,
0x00
,
0xb6
,
0x5e
,
0xa1
);
DEFINE_GUID
(
IID_ITextHost
,
0x13e670f4
,
0x1a5a
,
0x11cf
,
0xab
,
0xeb
,
0x00
,
0xaa
,
0x00
,
0xb6
,
0x5e
,
0xa1
);
DEFINE_GUID
(
IID_ITextHost2
,
0x13e670f5
,
0x1a5a
,
0x11cf
,
0xab
,
0xeb
,
0x00
,
0xaa
,
0x00
,
0xb6
,
0x5e
,
0xa1
);
DEFINE_GUID
(
IID_ITextHost2
,
0x13e670f5
,
0x1a5a
,
0x11cf
,
0xab
,
0xeb
,
0x00
,
0xaa
,
0x00
,
0xb6
,
0x5e
,
0xa1
);
...
@@ -49,6 +51,87 @@ DEFINE_GUID(IID_ITextSelection, 0x8cc497c1, 0xa1df, 0x11ce, 0x80, 0x98, 0x00, 0x
...
@@ -49,6 +51,87 @@ DEFINE_GUID(IID_ITextSelection, 0x8cc497c1, 0xa1df, 0x11ce, 0x80, 0x98, 0x00, 0x
DEFINE_GUID
(
IID_ITextFont
,
0x8cc497c3
,
0xa1df
,
0x11ce
,
0x80
,
0x98
,
0x00
,
0xaa
,
0x00
,
0x47
,
0xbe
,
0x5d
);
DEFINE_GUID
(
IID_ITextFont
,
0x8cc497c3
,
0xa1df
,
0x11ce
,
0x80
,
0x98
,
0x00
,
0xaa
,
0x00
,
0x47
,
0xbe
,
0x5d
);
DEFINE_GUID
(
IID_ITextPara
,
0x8cc497c4
,
0xa1df
,
0x11ce
,
0x80
,
0x98
,
0x00
,
0xaa
,
0x00
,
0x47
,
0xbe
,
0x5d
);
DEFINE_GUID
(
IID_ITextPara
,
0x8cc497c4
,
0xa1df
,
0x11ce
,
0x80
,
0x98
,
0x00
,
0xaa
,
0x00
,
0x47
,
0xbe
,
0x5d
);
static
ITypeLib
*
typelib
;
enum
tid_t
{
NULL_tid
,
ITextDocument_tid
,
ITextRange_tid
,
ITextSelection_tid
,
ITextFont_tid
,
ITextPara_tid
,
LAST_tid
};
static
const
IID
*
const
tid_ids
[]
=
{
&
IID_NULL
,
&
IID_ITextDocument
,
&
IID_ITextRange
,
&
IID_ITextSelection
,
&
IID_ITextFont
,
&
IID_ITextPara
,
};
static
ITypeInfo
*
typeinfos
[
LAST_tid
];
static
HRESULT
load_typelib
(
void
)
{
ITypeLib
*
tl
;
HRESULT
hr
;
hr
=
LoadRegTypeLib
(
&
LIBID_tom
,
1
,
0
,
LOCALE_SYSTEM_DEFAULT
,
&
tl
);
if
(
FAILED
(
hr
))
{
ERR
(
"LoadRegTypeLib failed: %08x
\n
"
,
hr
);
return
hr
;
}
if
(
InterlockedCompareExchangePointer
((
void
**
)
&
typelib
,
tl
,
NULL
))
ITypeLib_Release
(
tl
);
return
hr
;
}
void
release_typelib
(
void
)
{
unsigned
i
;
if
(
!
typelib
)
return
;
for
(
i
=
0
;
i
<
sizeof
(
typeinfos
)
/
sizeof
(
*
typeinfos
);
i
++
)
if
(
typeinfos
[
i
])
ITypeInfo_Release
(
typeinfos
[
i
]);
ITypeLib_Release
(
typelib
);
}
static
HRESULT
get_typeinfo
(
enum
tid_t
tid
,
ITypeInfo
**
typeinfo
)
{
HRESULT
hr
;
if
(
!
typelib
)
hr
=
load_typelib
();
if
(
!
typelib
)
return
hr
;
if
(
!
typeinfos
[
tid
])
{
ITypeInfo
*
ti
;
hr
=
ITypeLib_GetTypeInfoOfGuid
(
typelib
,
tid_ids
[
tid
],
&
ti
);
if
(
FAILED
(
hr
))
{
ERR
(
"GetTypeInfoOfGuid(%s) failed: %08x
\n
"
,
debugstr_guid
(
tid_ids
[
tid
]),
hr
);
return
hr
;
}
if
(
InterlockedCompareExchangePointer
((
void
**
)(
typeinfos
+
tid
),
ti
,
NULL
))
ITypeInfo_Release
(
ti
);
}
*
typeinfo
=
typeinfos
[
tid
];
return
S_OK
;
}
/* private IID used to get back IRichEditOleImpl pointer */
/* private IID used to get back IRichEditOleImpl pointer */
DEFINE_GUID
(
IID_Igetrichole
,
0xe3ce5c7a
,
0x8247
,
0x4622
,
0x81
,
0xad
,
0x11
,
0x81
,
0x02
,
0xaa
,
0x01
,
0x30
);
DEFINE_GUID
(
IID_Igetrichole
,
0xe3ce5c7a
,
0x8247
,
0x4622
,
0x81
,
0xad
,
0x11
,
0x81
,
0x02
,
0xaa
,
0x01
,
0x30
);
...
@@ -1003,33 +1086,39 @@ static ULONG WINAPI ITextRange_fnRelease(ITextRange *me)
...
@@ -1003,33 +1086,39 @@ static ULONG WINAPI ITextRange_fnRelease(ITextRange *me)
static
HRESULT
WINAPI
ITextRange_fnGetTypeInfoCount
(
ITextRange
*
me
,
UINT
*
pctinfo
)
static
HRESULT
WINAPI
ITextRange_fnGetTypeInfoCount
(
ITextRange
*
me
,
UINT
*
pctinfo
)
{
{
ITextRangeImpl
*
This
=
impl_from_ITextRange
(
me
);
ITextRangeImpl
*
This
=
impl_from_ITextRange
(
me
);
if
(
!
This
->
reOle
)
TRACE
(
"(%p)->(%p)
\n
"
,
This
,
pctinfo
);
return
CO_E_RELEASED
;
*
pctinfo
=
1
;
return
S_OK
;
FIXME
(
"not implemented %p
\n
"
,
This
);
return
E_NOTIMPL
;
}
}
static
HRESULT
WINAPI
ITextRange_fnGetTypeInfo
(
ITextRange
*
me
,
UINT
iTInfo
,
LCID
lcid
,
static
HRESULT
WINAPI
ITextRange_fnGetTypeInfo
(
ITextRange
*
me
,
UINT
iTInfo
,
LCID
lcid
,
ITypeInfo
**
ppTInfo
)
ITypeInfo
**
ppTInfo
)
{
{
ITextRangeImpl
*
This
=
impl_from_ITextRange
(
me
);
ITextRangeImpl
*
This
=
impl_from_ITextRange
(
me
);
if
(
!
This
->
reOle
)
HRESULT
hr
;
return
CO_E_RELEASED
;
FIXME
(
"not implemented %p
\n
"
,
This
);
TRACE
(
"(%p)->(%u,%d,%p)
\n
"
,
This
,
iTInfo
,
lcid
,
ppTInfo
);
return
E_NOTIMPL
;
hr
=
get_typeinfo
(
ITextRange_tid
,
ppTInfo
);
if
(
SUCCEEDED
(
hr
))
ITypeInfo_AddRef
(
*
ppTInfo
);
return
hr
;
}
}
static
HRESULT
WINAPI
ITextRange_fnGetIDsOfNames
(
ITextRange
*
me
,
REFIID
riid
,
LPOLESTR
*
rgszNames
,
static
HRESULT
WINAPI
ITextRange_fnGetIDsOfNames
(
ITextRange
*
me
,
REFIID
riid
,
LPOLESTR
*
rgszNames
,
UINT
cNames
,
LCID
lcid
,
DISPID
*
rgDispId
)
UINT
cNames
,
LCID
lcid
,
DISPID
*
rgDispId
)
{
{
ITextRangeImpl
*
This
=
impl_from_ITextRange
(
me
);
ITextRangeImpl
*
This
=
impl_from_ITextRange
(
me
);
if
(
!
This
->
reOle
)
ITypeInfo
*
ti
;
return
CO_E_RELEASED
;
HRESULT
hr
;
FIXME
(
"not implemented %p
\n
"
,
This
);
TRACE
(
"(%p)->(%p,%p,%u,%d,%p)
\n
"
,
This
,
riid
,
rgszNames
,
cNames
,
lcid
,
return
E_NOTIMPL
;
rgDispId
);
hr
=
get_typeinfo
(
ITextRange_tid
,
&
ti
);
if
(
SUCCEEDED
(
hr
))
hr
=
ITypeInfo_GetIDsOfNames
(
ti
,
rgszNames
,
cNames
,
rgDispId
);
return
hr
;
}
}
static
HRESULT
WINAPI
ITextRange_fnInvoke
(
ITextRange
*
me
,
DISPID
dispIdMember
,
REFIID
riid
,
static
HRESULT
WINAPI
ITextRange_fnInvoke
(
ITextRange
*
me
,
DISPID
dispIdMember
,
REFIID
riid
,
...
@@ -1038,11 +1127,16 @@ static HRESULT WINAPI ITextRange_fnInvoke(ITextRange *me, DISPID dispIdMember, R
...
@@ -1038,11 +1127,16 @@ static HRESULT WINAPI ITextRange_fnInvoke(ITextRange *me, DISPID dispIdMember, R
UINT
*
puArgErr
)
UINT
*
puArgErr
)
{
{
ITextRangeImpl
*
This
=
impl_from_ITextRange
(
me
);
ITextRangeImpl
*
This
=
impl_from_ITextRange
(
me
);
if
(
!
This
->
reOle
)
ITypeInfo
*
ti
;
return
CO_E_RELEASED
;
HRESULT
hr
;
FIXME
(
"not implemented %p
\n
"
,
This
);
TRACE
(
"(%p)->(%d,%p,%d,%u,%p,%p,%p,%p)
\n
"
,
This
,
dispIdMember
,
riid
,
lcid
,
return
E_NOTIMPL
;
wFlags
,
pDispParams
,
pVarResult
,
pExcepInfo
,
puArgErr
);
hr
=
get_typeinfo
(
ITextRange_tid
,
&
ti
);
if
(
SUCCEEDED
(
hr
))
hr
=
ITypeInfo_Invoke
(
ti
,
me
,
dispIdMember
,
wFlags
,
pDispParams
,
pVarResult
,
pExcepInfo
,
puArgErr
);
return
hr
;
}
}
static
HRESULT
WINAPI
ITextRange_fnGetText
(
ITextRange
*
me
,
BSTR
*
pbstr
)
static
HRESULT
WINAPI
ITextRange_fnGetText
(
ITextRange
*
me
,
BSTR
*
pbstr
)
...
@@ -1763,23 +1857,40 @@ static ULONG WINAPI TextFont_Release(ITextFont *iface)
...
@@ -1763,23 +1857,40 @@ static ULONG WINAPI TextFont_Release(ITextFont *iface)
static
HRESULT
WINAPI
TextFont_GetTypeInfoCount
(
ITextFont
*
iface
,
UINT
*
pctinfo
)
static
HRESULT
WINAPI
TextFont_GetTypeInfoCount
(
ITextFont
*
iface
,
UINT
*
pctinfo
)
{
{
FIXME
(
"stub
\n
"
);
ITextFontImpl
*
This
=
impl_from_ITextFont
(
iface
);
*
pctinfo
=
0
;
TRACE
(
"(%p)->(%p)
\n
"
,
This
,
pctinfo
);
return
E_NOTIMPL
;
*
pctinfo
=
1
;
return
S_OK
;
}
}
static
HRESULT
WINAPI
TextFont_GetTypeInfo
(
ITextFont
*
iface
,
UINT
iTInfo
,
LCID
lcid
,
static
HRESULT
WINAPI
TextFont_GetTypeInfo
(
ITextFont
*
iface
,
UINT
iTInfo
,
LCID
lcid
,
ITypeInfo
**
ppTInfo
)
ITypeInfo
**
ppTInfo
)
{
{
FIXME
(
"stub
\n
"
);
ITextFontImpl
*
This
=
impl_from_ITextFont
(
iface
);
return
E_NOTIMPL
;
HRESULT
hr
;
TRACE
(
"(%p)->(%u,%d,%p)
\n
"
,
This
,
iTInfo
,
lcid
,
ppTInfo
);
hr
=
get_typeinfo
(
ITextFont_tid
,
ppTInfo
);
if
(
SUCCEEDED
(
hr
))
ITypeInfo_AddRef
(
*
ppTInfo
);
return
hr
;
}
}
static
HRESULT
WINAPI
TextFont_GetIDsOfNames
(
ITextFont
*
iface
,
REFIID
riid
,
static
HRESULT
WINAPI
TextFont_GetIDsOfNames
(
ITextFont
*
iface
,
REFIID
riid
,
LPOLESTR
*
rgszNames
,
UINT
cNames
,
LCID
lcid
,
DISPID
*
rgDispId
)
LPOLESTR
*
rgszNames
,
UINT
cNames
,
LCID
lcid
,
DISPID
*
rgDispId
)
{
{
FIXME
(
"stub
\n
"
);
ITextFontImpl
*
This
=
impl_from_ITextFont
(
iface
);
return
E_NOTIMPL
;
ITypeInfo
*
ti
;
HRESULT
hr
;
TRACE
(
"(%p)->(%p,%p,%u,%d,%p)
\n
"
,
This
,
riid
,
rgszNames
,
cNames
,
lcid
,
rgDispId
);
hr
=
get_typeinfo
(
ITextFont_tid
,
&
ti
);
if
(
SUCCEEDED
(
hr
))
hr
=
ITypeInfo_GetIDsOfNames
(
ti
,
rgszNames
,
cNames
,
rgDispId
);
return
hr
;
}
}
static
HRESULT
WINAPI
TextFont_Invoke
(
static
HRESULT
WINAPI
TextFont_Invoke
(
...
@@ -1793,8 +1904,17 @@ static HRESULT WINAPI TextFont_Invoke(
...
@@ -1793,8 +1904,17 @@ static HRESULT WINAPI TextFont_Invoke(
EXCEPINFO
*
pExcepInfo
,
EXCEPINFO
*
pExcepInfo
,
UINT
*
puArgErr
)
UINT
*
puArgErr
)
{
{
FIXME
(
"stub
\n
"
);
ITextFontImpl
*
This
=
impl_from_ITextFont
(
iface
);
return
E_NOTIMPL
;
ITypeInfo
*
ti
;
HRESULT
hr
;
TRACE
(
"(%p)->(%d,%p,%d,%u,%p,%p,%p,%p)
\n
"
,
This
,
dispIdMember
,
riid
,
lcid
,
wFlags
,
pDispParams
,
pVarResult
,
pExcepInfo
,
puArgErr
);
hr
=
get_typeinfo
(
ITextFont_tid
,
&
ti
);
if
(
SUCCEEDED
(
hr
))
hr
=
ITypeInfo_Invoke
(
ti
,
iface
,
dispIdMember
,
wFlags
,
pDispParams
,
pVarResult
,
pExcepInfo
,
puArgErr
);
return
hr
;
}
}
static
HRESULT
WINAPI
TextFont_GetDuplicate
(
ITextFont
*
iface
,
ITextFont
**
ret
)
static
HRESULT
WINAPI
TextFont_GetDuplicate
(
ITextFont
*
iface
,
ITextFont
**
ret
)
...
@@ -2334,23 +2454,40 @@ static ULONG WINAPI TextPara_Release(ITextPara *iface)
...
@@ -2334,23 +2454,40 @@ static ULONG WINAPI TextPara_Release(ITextPara *iface)
static
HRESULT
WINAPI
TextPara_GetTypeInfoCount
(
ITextPara
*
iface
,
UINT
*
pctinfo
)
static
HRESULT
WINAPI
TextPara_GetTypeInfoCount
(
ITextPara
*
iface
,
UINT
*
pctinfo
)
{
{
FIXME
(
"stub
\n
"
);
ITextParaImpl
*
This
=
impl_from_ITextPara
(
iface
);
*
pctinfo
=
0
;
TRACE
(
"(%p)->(%p)
\n
"
,
This
,
pctinfo
);
return
E_NOTIMPL
;
*
pctinfo
=
1
;
return
S_OK
;
}
}
static
HRESULT
WINAPI
TextPara_GetTypeInfo
(
ITextPara
*
iface
,
UINT
iTInfo
,
LCID
lcid
,
static
HRESULT
WINAPI
TextPara_GetTypeInfo
(
ITextPara
*
iface
,
UINT
iTInfo
,
LCID
lcid
,
ITypeInfo
**
ppTInfo
)
ITypeInfo
**
ppTInfo
)
{
{
FIXME
(
"stub
\n
"
);
ITextParaImpl
*
This
=
impl_from_ITextPara
(
iface
);
return
E_NOTIMPL
;
HRESULT
hr
;
TRACE
(
"(%p)->(%u,%d,%p)
\n
"
,
This
,
iTInfo
,
lcid
,
ppTInfo
);
hr
=
get_typeinfo
(
ITextPara_tid
,
ppTInfo
);
if
(
SUCCEEDED
(
hr
))
ITypeInfo_AddRef
(
*
ppTInfo
);
return
hr
;
}
}
static
HRESULT
WINAPI
TextPara_GetIDsOfNames
(
ITextPara
*
iface
,
REFIID
riid
,
static
HRESULT
WINAPI
TextPara_GetIDsOfNames
(
ITextPara
*
iface
,
REFIID
riid
,
LPOLESTR
*
rgszNames
,
UINT
cNames
,
LCID
lcid
,
DISPID
*
rgDispId
)
LPOLESTR
*
rgszNames
,
UINT
cNames
,
LCID
lcid
,
DISPID
*
rgDispId
)
{
{
FIXME
(
"stub
\n
"
);
ITextParaImpl
*
This
=
impl_from_ITextPara
(
iface
);
return
E_NOTIMPL
;
ITypeInfo
*
ti
;
HRESULT
hr
;
TRACE
(
"(%p)->(%p,%p,%u,%d,%p)
\n
"
,
This
,
riid
,
rgszNames
,
cNames
,
lcid
,
rgDispId
);
hr
=
get_typeinfo
(
ITextPara_tid
,
&
ti
);
if
(
SUCCEEDED
(
hr
))
hr
=
ITypeInfo_GetIDsOfNames
(
ti
,
rgszNames
,
cNames
,
rgDispId
);
return
hr
;
}
}
static
HRESULT
WINAPI
TextPara_Invoke
(
static
HRESULT
WINAPI
TextPara_Invoke
(
...
@@ -2364,8 +2501,17 @@ static HRESULT WINAPI TextPara_Invoke(
...
@@ -2364,8 +2501,17 @@ static HRESULT WINAPI TextPara_Invoke(
EXCEPINFO
*
pExcepInfo
,
EXCEPINFO
*
pExcepInfo
,
UINT
*
puArgErr
)
UINT
*
puArgErr
)
{
{
FIXME
(
"stub
\n
"
);
ITextParaImpl
*
This
=
impl_from_ITextPara
(
iface
);
return
E_NOTIMPL
;
ITypeInfo
*
ti
;
HRESULT
hr
;
TRACE
(
"(%p)->(%d,%p,%d,%u,%p,%p,%p,%p)
\n
"
,
This
,
dispIdMember
,
riid
,
lcid
,
wFlags
,
pDispParams
,
pVarResult
,
pExcepInfo
,
puArgErr
);
hr
=
get_typeinfo
(
ITextPara_tid
,
&
ti
);
if
(
SUCCEEDED
(
hr
))
hr
=
ITypeInfo_Invoke
(
ti
,
iface
,
dispIdMember
,
wFlags
,
pDispParams
,
pVarResult
,
pExcepInfo
,
puArgErr
);
return
hr
;
}
}
static
HRESULT
WINAPI
TextPara_GetDuplicate
(
ITextPara
*
iface
,
ITextPara
**
ret
)
static
HRESULT
WINAPI
TextPara_GetDuplicate
(
ITextPara
*
iface
,
ITextPara
**
ret
)
...
@@ -2808,8 +2954,9 @@ ITextDocument_fnGetTypeInfoCount(ITextDocument* me,
...
@@ -2808,8 +2954,9 @@ ITextDocument_fnGetTypeInfoCount(ITextDocument* me,
UINT
*
pctinfo
)
UINT
*
pctinfo
)
{
{
IRichEditOleImpl
*
This
=
impl_from_ITextDocument
(
me
);
IRichEditOleImpl
*
This
=
impl_from_ITextDocument
(
me
);
FIXME
(
"stub %p
\n
"
,
This
);
TRACE
(
"(%p)->(%p)
\n
"
,
This
,
pctinfo
);
return
E_NOTIMPL
;
*
pctinfo
=
1
;
return
S_OK
;
}
}
static
HRESULT
WINAPI
static
HRESULT
WINAPI
...
@@ -2817,8 +2964,14 @@ ITextDocument_fnGetTypeInfo(ITextDocument* me, UINT iTInfo, LCID lcid,
...
@@ -2817,8 +2964,14 @@ ITextDocument_fnGetTypeInfo(ITextDocument* me, UINT iTInfo, LCID lcid,
ITypeInfo
**
ppTInfo
)
ITypeInfo
**
ppTInfo
)
{
{
IRichEditOleImpl
*
This
=
impl_from_ITextDocument
(
me
);
IRichEditOleImpl
*
This
=
impl_from_ITextDocument
(
me
);
FIXME
(
"stub %p
\n
"
,
This
);
HRESULT
hr
;
return
E_NOTIMPL
;
TRACE
(
"(%p)->(%u,%d,%p)
\n
"
,
This
,
iTInfo
,
lcid
,
ppTInfo
);
hr
=
get_typeinfo
(
ITextDocument_tid
,
ppTInfo
);
if
(
SUCCEEDED
(
hr
))
ITypeInfo_AddRef
(
*
ppTInfo
);
return
hr
;
}
}
static
HRESULT
WINAPI
static
HRESULT
WINAPI
...
@@ -2826,8 +2979,16 @@ ITextDocument_fnGetIDsOfNames(ITextDocument* me, REFIID riid,
...
@@ -2826,8 +2979,16 @@ ITextDocument_fnGetIDsOfNames(ITextDocument* me, REFIID riid,
LPOLESTR
*
rgszNames
,
UINT
cNames
,
LCID
lcid
,
DISPID
*
rgDispId
)
LPOLESTR
*
rgszNames
,
UINT
cNames
,
LCID
lcid
,
DISPID
*
rgDispId
)
{
{
IRichEditOleImpl
*
This
=
impl_from_ITextDocument
(
me
);
IRichEditOleImpl
*
This
=
impl_from_ITextDocument
(
me
);
FIXME
(
"stub %p
\n
"
,
This
);
ITypeInfo
*
ti
;
return
E_NOTIMPL
;
HRESULT
hr
;
TRACE
(
"(%p)->(%p,%p,%u,%d,%p)
\n
"
,
This
,
riid
,
rgszNames
,
cNames
,
lcid
,
rgDispId
);
hr
=
get_typeinfo
(
ITextDocument_tid
,
&
ti
);
if
(
SUCCEEDED
(
hr
))
hr
=
ITypeInfo_GetIDsOfNames
(
ti
,
rgszNames
,
cNames
,
rgDispId
);
return
hr
;
}
}
static
HRESULT
WINAPI
static
HRESULT
WINAPI
...
@@ -2836,8 +2997,16 @@ ITextDocument_fnInvoke(ITextDocument* me, DISPID dispIdMember,
...
@@ -2836,8 +2997,16 @@ ITextDocument_fnInvoke(ITextDocument* me, DISPID dispIdMember,
VARIANT
*
pVarResult
,
EXCEPINFO
*
pExcepInfo
,
UINT
*
puArgErr
)
VARIANT
*
pVarResult
,
EXCEPINFO
*
pExcepInfo
,
UINT
*
puArgErr
)
{
{
IRichEditOleImpl
*
This
=
impl_from_ITextDocument
(
me
);
IRichEditOleImpl
*
This
=
impl_from_ITextDocument
(
me
);
FIXME
(
"stub %p
\n
"
,
This
);
ITypeInfo
*
ti
;
return
E_NOTIMPL
;
HRESULT
hr
;
TRACE
(
"(%p)->(%d,%p,%d,%u,%p,%p,%p,%p)
\n
"
,
This
,
dispIdMember
,
riid
,
lcid
,
wFlags
,
pDispParams
,
pVarResult
,
pExcepInfo
,
puArgErr
);
hr
=
get_typeinfo
(
ITextDocument_tid
,
&
ti
);
if
(
SUCCEEDED
(
hr
))
hr
=
ITypeInfo_Invoke
(
ti
,
me
,
dispIdMember
,
wFlags
,
pDispParams
,
pVarResult
,
pExcepInfo
,
puArgErr
);
return
hr
;
}
}
static
HRESULT
WINAPI
static
HRESULT
WINAPI
...
@@ -3111,33 +3280,39 @@ static ULONG WINAPI ITextSelection_fnRelease(ITextSelection *me)
...
@@ -3111,33 +3280,39 @@ static ULONG WINAPI ITextSelection_fnRelease(ITextSelection *me)
static
HRESULT
WINAPI
ITextSelection_fnGetTypeInfoCount
(
ITextSelection
*
me
,
UINT
*
pctinfo
)
static
HRESULT
WINAPI
ITextSelection_fnGetTypeInfoCount
(
ITextSelection
*
me
,
UINT
*
pctinfo
)
{
{
ITextSelectionImpl
*
This
=
impl_from_ITextSelection
(
me
);
ITextSelectionImpl
*
This
=
impl_from_ITextSelection
(
me
);
if
(
!
This
->
reOle
)
TRACE
(
"(%p)->(%p)
\n
"
,
This
,
pctinfo
);
return
CO_E_RELEASED
;
*
pctinfo
=
1
;
return
S_OK
;
FIXME
(
"not implemented
\n
"
);
return
E_NOTIMPL
;
}
}
static
HRESULT
WINAPI
ITextSelection_fnGetTypeInfo
(
ITextSelection
*
me
,
UINT
iTInfo
,
LCID
lcid
,
static
HRESULT
WINAPI
ITextSelection_fnGetTypeInfo
(
ITextSelection
*
me
,
UINT
iTInfo
,
LCID
lcid
,
ITypeInfo
**
ppTInfo
)
ITypeInfo
**
ppTInfo
)
{
{
ITextSelectionImpl
*
This
=
impl_from_ITextSelection
(
me
);
ITextSelectionImpl
*
This
=
impl_from_ITextSelection
(
me
);
if
(
!
This
->
reOle
)
HRESULT
hr
;
return
CO_E_RELEASED
;
FIXME
(
"not implemented
\n
"
);
TRACE
(
"(%p)->(%u,%d,%p)
\n
"
,
This
,
iTInfo
,
lcid
,
ppTInfo
);
return
E_NOTIMPL
;
hr
=
get_typeinfo
(
ITextSelection_tid
,
ppTInfo
);
if
(
SUCCEEDED
(
hr
))
ITypeInfo_AddRef
(
*
ppTInfo
);
return
hr
;
}
}
static
HRESULT
WINAPI
ITextSelection_fnGetIDsOfNames
(
ITextSelection
*
me
,
REFIID
riid
,
static
HRESULT
WINAPI
ITextSelection_fnGetIDsOfNames
(
ITextSelection
*
me
,
REFIID
riid
,
LPOLESTR
*
rgszNames
,
UINT
cNames
,
LCID
lcid
,
DISPID
*
rgDispId
)
LPOLESTR
*
rgszNames
,
UINT
cNames
,
LCID
lcid
,
DISPID
*
rgDispId
)
{
{
ITextSelectionImpl
*
This
=
impl_from_ITextSelection
(
me
);
ITextSelectionImpl
*
This
=
impl_from_ITextSelection
(
me
);
if
(
!
This
->
reOle
)
ITypeInfo
*
ti
;
return
CO_E_RELEASED
;
HRESULT
hr
;
FIXME
(
"not implemented
\n
"
);
TRACE
(
"(%p)->(%p,%p,%u,%d,%p)
\n
"
,
This
,
riid
,
rgszNames
,
cNames
,
lcid
,
return
E_NOTIMPL
;
rgDispId
);
hr
=
get_typeinfo
(
ITextSelection_tid
,
&
ti
);
if
(
SUCCEEDED
(
hr
))
hr
=
ITypeInfo_GetIDsOfNames
(
ti
,
rgszNames
,
cNames
,
rgDispId
);
return
hr
;
}
}
static
HRESULT
WINAPI
ITextSelection_fnInvoke
(
static
HRESULT
WINAPI
ITextSelection_fnInvoke
(
...
@@ -3151,8 +3326,17 @@ static HRESULT WINAPI ITextSelection_fnInvoke(
...
@@ -3151,8 +3326,17 @@ static HRESULT WINAPI ITextSelection_fnInvoke(
EXCEPINFO
*
pExcepInfo
,
EXCEPINFO
*
pExcepInfo
,
UINT
*
puArgErr
)
UINT
*
puArgErr
)
{
{
FIXME
(
"not implemented
\n
"
);
ITextSelectionImpl
*
This
=
impl_from_ITextSelection
(
me
);
return
E_NOTIMPL
;
ITypeInfo
*
ti
;
HRESULT
hr
;
TRACE
(
"(%p)->(%d,%p,%d,%u,%p,%p,%p,%p)
\n
"
,
This
,
dispIdMember
,
riid
,
lcid
,
wFlags
,
pDispParams
,
pVarResult
,
pExcepInfo
,
puArgErr
);
hr
=
get_typeinfo
(
ITextSelection_tid
,
&
ti
);
if
(
SUCCEEDED
(
hr
))
hr
=
ITypeInfo_Invoke
(
ti
,
me
,
dispIdMember
,
wFlags
,
pDispParams
,
pVarResult
,
pExcepInfo
,
puArgErr
);
return
hr
;
}
}
/*** ITextRange methods ***/
/*** ITextRange methods ***/
...
...
dlls/riched20/tests/richole.c
View file @
81fc69d7
...
@@ -1406,6 +1406,7 @@ static void test_dispatch(void)
...
@@ -1406,6 +1406,7 @@ static void test_dispatch(void)
WCHAR
*
nameW
;
WCHAR
*
nameW
;
DISPID
dispid
;
DISPID
dispid
;
HRESULT
hr
;
HRESULT
hr
;
UINT
count
;
HWND
hwnd
;
HWND
hwnd
;
create_interfaces
(
&
hwnd
,
&
reOle
,
&
doc
,
NULL
);
create_interfaces
(
&
hwnd
,
&
reOle
,
&
doc
,
NULL
);
...
@@ -1418,19 +1419,28 @@ static void test_dispatch(void)
...
@@ -1418,19 +1419,28 @@ static void test_dispatch(void)
dispid
=
123
;
dispid
=
123
;
nameW
=
(
WCHAR
*
)
testnameW
;
nameW
=
(
WCHAR
*
)
testnameW
;
hr
=
ITextRange_GetIDsOfNames
(
range
,
&
IID_NULL
,
&
nameW
,
1
,
LOCALE_USER_DEFAULT
,
&
dispid
);
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
(
hr
==
DISP_E_UNKNOWNNAME
,
"got 0x%08x
\n
"
,
hr
);
ok
(
dispid
==
DISPID_UNKNOWN
,
"got %d
\n
"
,
dispid
);
ok
(
dispid
==
DISPID_UNKNOWN
,
"got %d
\n
"
,
dispid
);
}
dispid
=
123
;
dispid
=
123
;
nameW
=
(
WCHAR
*
)
testname2W
;
nameW
=
(
WCHAR
*
)
testname2W
;
hr
=
ITextRange_GetIDsOfNames
(
range
,
&
IID_NULL
,
&
nameW
,
1
,
LOCALE_USER_DEFAULT
,
&
dispid
);
hr
=
ITextRange_GetIDsOfNames
(
range
,
&
IID_NULL
,
&
nameW
,
1
,
LOCALE_USER_DEFAULT
,
&
dispid
);
todo_wine
{
ok
(
hr
==
S_OK
,
"got 0x%08x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"got 0x%08x
\n
"
,
hr
);
ok
(
dispid
==
DISPID_VALUE
,
"got %d
\n
"
,
dispid
);
ok
(
dispid
==
DISPID_VALUE
,
"got %d
\n
"
,
dispid
);
}
ITextRange_Release
(
range
);
release_interfaces
(
&
hwnd
,
&
reOle
,
&
doc
,
NULL
);
release_interfaces
(
&
hwnd
,
&
reOle
,
&
doc
,
NULL
);
/* try dispatch methods on detached range */
hr
=
ITextRange_GetTypeInfoCount
(
range
,
&
count
);
ok
(
hr
==
S_OK
,
"got 0x%08x
\n
"
,
hr
);
dispid
=
123
;
nameW
=
(
WCHAR
*
)
testname2W
;
hr
=
ITextRange_GetIDsOfNames
(
range
,
&
IID_NULL
,
&
nameW
,
1
,
LOCALE_USER_DEFAULT
,
&
dispid
);
ok
(
hr
==
S_OK
,
"got 0x%08x
\n
"
,
hr
);
ok
(
dispid
==
DISPID_VALUE
,
"got %d
\n
"
,
dispid
);
ITextRange_Release
(
range
);
}
}
static
void
test_ITextFont
(
void
)
static
void
test_ITextFont
(
void
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment