The problems with having the macros in the public headers are that they won&#39;t work on x86 machines, and are not included in the public headers.&nbsp; Therefore someone developing for another platform will have their code break when using the native public headers or when porting the code to an x86 where the thiscall calling convention is used.<br>
<br>On Sun, Nov 30, 2008 at 5:42 AM, Maarten Lankhorst <span dir="ltr">&lt;<a href="mailto:m.b.lankhorst@gmail.com">m.b.lankhorst@gmail.com</a>&gt;</span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Commit e4ef9c5c removed the ITextServices macros from wine/include/textserv.h. With this they are added again, and &nbsp;COBJMACROS before including that header, so that they won&#39;t conflict.<br>
---<br>
<br>From c04fcab5168309395602f4c4fd07a319a9a532ab Mon Sep 17 00:00:00 2001<br>
From: Maarten Lankhorst &lt;<a href="mailto:maarten@codeweavers.com">maarten@codeweavers.com</a>&gt;<br>
Date: Sun, 30 Nov 2008 11:37:54 +0100<br>
Subject: [PATCH] includes: Fix macros for ITextServices<br>
<br>
---<br>
&nbsp;dlls/riched20/tests/txtsrv.c | &nbsp; &nbsp;8 +++++++-<br>
&nbsp;include/textserv.h &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; 19 +++++++++++++++++++<br>
&nbsp;2 files changed, 26 insertions(+), 1 deletions(-)<br>
<br>
diff --git a/dlls/riched20/tests/txtsrv.c b/dlls/riched20/tests/txtsrv.c<br>
index 3d47490..c28f5a7 100644<br>
--- a/dlls/riched20/tests/txtsrv.c<br>
+++ b/dlls/riched20/tests/txtsrv.c<br>
@@ -29,6 +29,9 @@<br>
&nbsp;#include &lt;objbase.h&gt;<br>
&nbsp;#include &lt;richedit.h&gt;<br>
&nbsp;#include &lt;initguid.h&gt;<br>
+<br>
+#undef COBJMACROS<br>
+/* Don&#39;t define ITextServices, we override it here */<br>
&nbsp;#include &lt;textserv.h&gt;<br>
&nbsp;#include &lt;wine/test.h&gt;<br>
<br>
@@ -44,6 +47,9 @@ static HMODULE hmoduleRichEdit;<br>
&nbsp;#define TXTSERV_VTABLE(This) (This)-&gt;lpVtbl<br>
&nbsp;#endif /* __i386__ */<br>
<br>
+#define ITextServices_QueryInterface(p,a,b) (p)-&gt;lpVtbl-&gt;QueryInterface(p,a,b)<br>
+#define ITextServices_AddRef(p) (p)-&gt;lpVtbl-&gt;AddRef(p)<br>
+#define ITextServices_Release(p) (p)-&gt;lpVtbl-&gt;Release(p)<br>
&nbsp;#define ITextServices_TxSendMessage(This,a,b,c,d) TXTSERV_VTABLE(This)-&gt;TxSendMessage(This,a,b,c,d)<br>
&nbsp;#define ITextServices_TxDraw(This,a,b,c,d,e,f,g,h,i,j,k,l) TXTSERV_VTABLE(This)-&gt;TxDraw(This,a,b,c,d,e,f,g,h,i,j,k,l)<br>
&nbsp;#define ITextServices_TxGetHScroll(This,a,b,c,d,e) TXTSERV_VTABLE(This)-&gt;TxGetHScroll(This,a,b,c,d,e)<br>
@@ -84,7 +90,7 @@ static HRESULT WINAPI ITextHostImpl_QueryInterface(ITextHost *iface,<br>
<br>
 &nbsp; &nbsp; if (IsEqualIID(riid, &amp;IID_IUnknown) || IsEqualIID(riid, &amp;IID_ITextHost)) {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; *ppvObject = This;<br>
- &nbsp; &nbsp; &nbsp; &nbsp;ITextHost_AddRef((ITextHost *)*ppvObject);<br>
+ &nbsp; &nbsp; &nbsp; &nbsp;IUnknown_AddRef((IUnknown *)*ppvObject);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; return S_OK;<br>
 &nbsp; &nbsp; }<br>
<br>
diff --git a/include/textserv.h b/include/textserv.h<br>
index 977b742..820fc0a 100644<br>
--- a/include/textserv.h<br>
+++ b/include/textserv.h<br>
@@ -147,6 +147,25 @@ DECLARE_INTERFACE_(ITextServices,IUnknown)<br>
&nbsp;#define ITextServices_QueryInterface(p,a,b) (p)-&gt;lpVtbl-&gt;QueryInterface(p,a,b)<br>
&nbsp;#define ITextServices_AddRef(p) (p)-&gt;lpVtbl-&gt;AddRef(p)<br>
&nbsp;#define ITextServices_Release(p) (p)-&gt;lpVtbl-&gt;Release(p)<br>
+/*** ITextServices methods ***/<br>
+#define ITextServices_TxSendMessage(p,a,b,c,d) (p)-&gt;lpVtbl-&gt;TxSendMessage(p,a,b<br>
+#define ITextServices_TxDraw(p,a,b,c,d,e,f,g,h,i,j,k,l) (p)-&gt;lpVtbl-&gt;TxDraw(p,a<br>
+#define ITextServices_TxGetHScroll(p,a,b,c,d,e) (p)-&gt;lpVtbl-&gt;TxGetHScroll(p,a,b<br>
+#define ITextServices_TxGetVScroll(p,a,b,c,d,e) (p)-&gt;lpVtbl-&gt;TxGetVScroll(p,a,b<br>
+#define ITextServices_OnTxSetCursor(p,a,b,c,d,e,f,g,h,i) (p)-&gt;lpVtbl-&gt;OnTxSetCu<br>
+#define ITextServices_TxQueryHitPoint(p,a,b,c,d,e,f,g,h,i,j) (p)-&gt;lpVtbl-&gt;TxQue<br>
+#define ITextServices_OnTxInplaceActivate(p,a) (p)-&gt;lpVtbl-&gt;OnTxInplaceActivate<br>
+#define ITextServices_OnTxInplaceDeactivate(p) (p)-&gt;lpVtbl-&gt;OnTxInplaceDeactiva<br>
+#define ITextServices_OnTxUIActivate(p) (p)-&gt;lpVtbl-&gt;OnTxUIActivate(p)<br>
+#define ITextServices_OnTxUIDeactivate(p) (p)-&gt;lpVtbl-&gt;OnTxUIDeactivate(p)<br>
+#define ITextServices_TxGetText(p,a) (p)-&gt;lpVtbl-&gt;TxGetText(p,a)<br>
+#define ITextServices_TxSetText(p,a) (p)-&gt;lpVtbl-&gt;TxSetText(p,a)<br>
+#define ITextServices_TxGetCurrentTargetX(p,a) (p)-&gt;lpVtbl-&gt;TxGetCurrentTargetX<br>
+#define ITextServices_TxGetBaseLinePos(p,a) (p)-&gt;lpVtbl-&gt;TxGetBaseLinePos(p,a)<br>
+#define ITextServices_TxGetNaturalSize(p,a,b,c,d,e,f,g,h) (p)-&gt;lpVtbl-&gt;TxGetNat<br>
+#define ITextServices_TxGetDropTarget(p,a) (p)-&gt;lpVtbl-&gt;TxGetDropTarget(p,a)<br>
+#define ITextServices_OnTxPropertyBitsChange(p,a,b) (p)-&gt;lpVtbl-&gt;OnTxPropertyBi<br>
+#define ITextServices_TxGetCachedSize(p,a,b) (p)-&gt;lpVtbl-&gt;TxGetCachedSize(p,a,b<br>
&nbsp;#endif<br>
<br>
&nbsp;#undef INTERFACE<br>
--<br>
<a href="http://1.5.6.5" target="_blank">1.5.6.5</a><br>
<br>
<br><br>
<br></blockquote></div><br>