WINE_DEFAULT_DEBUG_CHANNEL(msctf);
typedef struct tagLangBarMgr {
- const ITfLangBarMgrVtbl *LangBarMgrVtbl;
+ ITfLangBarMgr ITfLangBarMgr_iface;
LONG refCount;
} LangBarMgr;
+static inline LangBarMgr *impl_from_ITfLangBarMgr(ITfLangBarMgr *iface)
+{
+ return CONTAINING_RECORD(iface, LangBarMgr, ITfLangBarMgr_iface);
+}
+
static void LangBarMgr_Destructor(LangBarMgr *This)
{
TRACE("destroying %p\n", This);
static HRESULT WINAPI LangBarMgr_QueryInterface(ITfLangBarMgr *iface, REFIID iid, LPVOID *ppvOut)
{
- LangBarMgr *This = (LangBarMgr *)iface;
+ LangBarMgr *This = impl_from_ITfLangBarMgr(iface);
*ppvOut = NULL;
if (IsEqualIID(iid, &IID_IUnknown) || IsEqualIID(iid, &IID_ITfLangBarMgr))
{
- *ppvOut = This;
+ *ppvOut = &This->ITfLangBarMgr_iface;
}
if (*ppvOut)
{
- IUnknown_AddRef(iface);
+ ITfLangBarMgr_AddRef(iface);
return S_OK;
}
static ULONG WINAPI LangBarMgr_AddRef(ITfLangBarMgr *iface)
{
- LangBarMgr *This = (LangBarMgr *)iface;
+ LangBarMgr *This = impl_from_ITfLangBarMgr(iface);
return InterlockedIncrement(&This->refCount);
}
static ULONG WINAPI LangBarMgr_Release(ITfLangBarMgr *iface)
{
- LangBarMgr *This = (LangBarMgr *)iface;
+ LangBarMgr *This = impl_from_ITfLangBarMgr(iface);
ULONG ret;
ret = InterlockedDecrement(&This->refCount);
static HRESULT WINAPI LangBarMgr_AdviseEventSink( ITfLangBarMgr* iface, ITfLangBarEventSink *pSink, HWND hwnd, DWORD dwflags, DWORD *pdwCookie)
{
- LangBarMgr *This = (LangBarMgr *)iface;
+ LangBarMgr *This = impl_from_ITfLangBarMgr(iface);
FIXME("STUB:(%p)\n",This);
return E_NOTIMPL;
static HRESULT WINAPI LangBarMgr_UnAdviseEventSink( ITfLangBarMgr* iface, DWORD dwCookie)
{
- LangBarMgr *This = (LangBarMgr *)iface;
+ LangBarMgr *This = impl_from_ITfLangBarMgr(iface);
FIXME("STUB:(%p)\n",This);
return E_NOTIMPL;
static HRESULT WINAPI LangBarMgr_GetThreadMarshalInterface( ITfLangBarMgr* iface, DWORD dwThreadId, DWORD dwType, REFIID riid, IUnknown **ppunk)
{
- LangBarMgr *This = (LangBarMgr *)iface;
+ LangBarMgr *This = impl_from_ITfLangBarMgr(iface);
FIXME("STUB:(%p)\n",This);
return E_NOTIMPL;
static HRESULT WINAPI LangBarMgr_GetThreadLangBarItemMgr( ITfLangBarMgr* iface, DWORD dwThreadId, ITfLangBarItemMgr **pplbi, DWORD *pdwThreadid)
{
- LangBarMgr *This = (LangBarMgr *)iface;
+ LangBarMgr *This = impl_from_ITfLangBarMgr(iface);
FIXME("STUB:(%p)\n",This);
return E_NOTIMPL;
static HRESULT WINAPI LangBarMgr_GetInputProcessorProfiles( ITfLangBarMgr* iface, DWORD dwThreadId, ITfInputProcessorProfiles **ppaip, DWORD *pdwThreadid)
{
- LangBarMgr *This = (LangBarMgr *)iface;
+ LangBarMgr *This = impl_from_ITfLangBarMgr(iface);
FIXME("STUB:(%p)\n",This);
return E_NOTIMPL;
static HRESULT WINAPI LangBarMgr_RestoreLastFocus( ITfLangBarMgr* iface, DWORD *dwThreadId, BOOL fPrev)
{
- LangBarMgr *This = (LangBarMgr *)iface;
+ LangBarMgr *This = impl_from_ITfLangBarMgr(iface);
FIXME("STUB:(%p)\n",This);
return E_NOTIMPL;
static HRESULT WINAPI LangBarMgr_SetModalInput( ITfLangBarMgr* iface, ITfLangBarEventSink *pSink, DWORD dwThreadId, DWORD dwFlags)
{
- LangBarMgr *This = (LangBarMgr *)iface;
+ LangBarMgr *This = impl_from_ITfLangBarMgr(iface);
FIXME("STUB:(%p)\n",This);
return E_NOTIMPL;
static HRESULT WINAPI LangBarMgr_ShowFloating( ITfLangBarMgr* iface, DWORD dwFlags)
{
- LangBarMgr *This = (LangBarMgr *)iface;
+ LangBarMgr *This = impl_from_ITfLangBarMgr(iface);
FIXME("STUB:(%p)\n",This);
return E_NOTIMPL;
static HRESULT WINAPI LangBarMgr_GetShowFloatingStatus( ITfLangBarMgr* iface, DWORD *pdwFlags)
{
- LangBarMgr *This = (LangBarMgr *)iface;
+ LangBarMgr *This = impl_from_ITfLangBarMgr(iface);
FIXME("STUB:(%p)\n",This);
return E_NOTIMPL;
if (This == NULL)
return E_OUTOFMEMORY;
- This->LangBarMgrVtbl= &LangBarMgr_LangBarMgrVtbl;
+ This->ITfLangBarMgr_iface.lpVtbl = &LangBarMgr_LangBarMgrVtbl;
This->refCount = 1;
- TRACE("returning %p\n", This);
- *ppOut = (IUnknown *)This;
+ *ppOut = (IUnknown *)&This->ITfLangBarMgr_iface;
+ TRACE("returning %p\n", *ppOut);
return S_OK;
}