You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1326 lines
36 KiB
1326 lines
36 KiB
//
|
|
// mstub.cpp
|
|
//
|
|
|
|
#include "private.h"
|
|
#include "mstub.h"
|
|
#include "mproxy.h"
|
|
#include "ithdmshl.h"
|
|
#include "transmit.h"
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// StubCreator
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
#define CREATENEWSTUB(interface_name) \
|
|
if (IsEqualIID(riid, IID_ ## interface_name ## )) \
|
|
{ \
|
|
CStub *pStub = new CStub ## interface_name ## ; \
|
|
if (!pStub) \
|
|
return NULL; \
|
|
pStub->_iid = riid; \
|
|
pStub->_ulStubId = ulStubId; \
|
|
pStub->_dwStubTime = dwStubTime; \
|
|
pStub->_dwStubThreadId = dwCurThreadId; \
|
|
pStub->_dwStubProcessId = dwCurProcessId; \
|
|
pStub->_dwSrcThreadId = dwSrcThreadId; \
|
|
pStub->_punk = punk; \
|
|
pStub->_punk->AddRef(); \
|
|
return pStub; \
|
|
}
|
|
|
|
CStub *StubCreator(REFIID riid, IUnknown *punk, ULONG ulStubId, DWORD dwStubTime, DWORD dwCurThreadId, DWORD dwCurProcessId, DWORD dwSrcThreadId)
|
|
{
|
|
Assert(dwCurThreadId != dwSrcThreadId);
|
|
|
|
CREATENEWSTUB(ITfLangBarMgr);
|
|
CREATENEWSTUB(ITfLangBarItemMgr);
|
|
CREATENEWSTUB(ITfLangBarItemSink);
|
|
CREATENEWSTUB(IEnumTfLangBarItems);
|
|
CREATENEWSTUB(ITfLangBarItem);
|
|
CREATENEWSTUB(ITfLangBarItemButton);
|
|
CREATENEWSTUB(ITfLangBarItemBitmapButton);
|
|
CREATENEWSTUB(ITfLangBarItemBitmap);
|
|
CREATENEWSTUB(ITfLangBarItemBalloon);
|
|
CREATENEWSTUB(ITfMenu);
|
|
CREATENEWSTUB(ITfInputProcessorProfiles);
|
|
return NULL;
|
|
}
|
|
|
|
|
|
void StubPointerToParam(MARSHALPARAM *pParam, void *pv)
|
|
{
|
|
Assert(pParam->dwFlags & MPARAM_OUT);
|
|
Assert(pParam->cbBufSize >= sizeof(void *));
|
|
void **ppv = (void **)ParamToBufferPointer(pParam);
|
|
*ppv = pv;
|
|
}
|
|
|
|
void StubParamPointerToParam(MARSHALPARAM *pParam, void *pv)
|
|
{
|
|
Assert(pParam->dwFlags & MPARAM_OUT);
|
|
Assert(pParam->cbBufSize >= sizeof(void *));
|
|
void *pBuf = ParamToBufferPointer(pParam);
|
|
memcpy(pBuf, pv, pParam->cbBufSize);
|
|
}
|
|
|
|
void *ParamToMarshaledPointer(MARSHALMSG *pMsg, REFIID riid, ULONG ulParam, BOOL *pfNULLStack = NULL)
|
|
{
|
|
MARSHALINTERFACEPARAM *pmiparam = (MARSHALINTERFACEPARAM *)ParamToBufferPointer(pMsg, ulParam);
|
|
void *pv = NULL;
|
|
|
|
Assert(pfNULLStack || !pmiparam->fNULLStack);
|
|
if (pfNULLStack)
|
|
*pfNULLStack = pmiparam->fNULLStack;
|
|
|
|
if (pmiparam->fNULLPointer)
|
|
return NULL;
|
|
|
|
CicCoUnmarshalInterface(riid, pMsg->dwSrcThreadId, pmiparam->ulStubId, pmiparam->dwStubTime, &pv);
|
|
return pv;
|
|
}
|
|
|
|
BOOL ParamToArrayMarshaledPointer(ULONG ulCount, void **ppv, MARSHALMSG *pMsg, REFIID riid, ULONG ulParam, BOOL *pfNULLStack = NULL)
|
|
{
|
|
MARSHALINTERFACEPARAM *pmiparam = (MARSHALINTERFACEPARAM *)ParamToBufferPointer(pMsg, ulParam);
|
|
|
|
Assert(pfNULLStack || !pmiparam->fNULLStack);
|
|
if (pfNULLStack)
|
|
*pfNULLStack = pmiparam->fNULLStack;
|
|
|
|
if (pmiparam->fNULLPointer)
|
|
return FALSE;
|
|
|
|
ULONG ul;
|
|
for (ul = 0; ul < ulCount; ul++)
|
|
{
|
|
CicCoUnmarshalInterface(riid, pMsg->dwSrcThreadId, pmiparam->ulStubId, pmiparam->dwStubTime, ppv);
|
|
ppv++;
|
|
pmiparam++;
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
void ClearMarshaledPointer(IUnknown *punk)
|
|
{
|
|
if (!punk)
|
|
return;
|
|
|
|
CProxyIUnknown *pProxy = GetCProxyIUnknown(punk);
|
|
if (!pProxy)
|
|
return;
|
|
|
|
if (pProxy->InternalRelease())
|
|
pProxy->InternalRelease();
|
|
else
|
|
Assert(0);
|
|
}
|
|
|
|
HBITMAP ParamToHBITMAP(MARSHALMSG *pMsg , ULONG ulParam)
|
|
{
|
|
MARSHALPARAM *pParam = GetMarshalParam(pMsg, ulParam);
|
|
HBITMAP hbmp = NULL;
|
|
if (pParam->cbBufSize)
|
|
{
|
|
BYTE *pBuf = (BYTE *)ParamToBufferPointer(pParam);
|
|
Cic_HBITMAP_UserUnmarshal(pBuf, &hbmp);
|
|
}
|
|
return hbmp;
|
|
}
|
|
|
|
#define PREPARE_PARAM_START() \
|
|
if (!psb->GetMutex()->Enter()) \
|
|
return E_FAIL; \
|
|
_try \
|
|
{
|
|
|
|
#define PREPARE_PARAM_END() \
|
|
} \
|
|
_except(1) \
|
|
{ \
|
|
Assert(0); \
|
|
psb->GetMutex()->Leave(); \
|
|
return E_FAIL; \
|
|
} \
|
|
psb->GetMutex()->Leave();
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// CStubIUnknown
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
MSTUBCALL CStubIUnknown::_StubTbl[] =
|
|
{
|
|
stub_QueryInterface,
|
|
stub_AddRef,
|
|
stub_Release
|
|
};
|
|
|
|
HRESULT CStubIUnknown::stub_QueryInterface(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
IID iid;
|
|
void *pv;
|
|
|
|
Assert(pMsg->ulParamNum == 2);
|
|
|
|
PREPARE_PARAM_START()
|
|
|
|
iid = *(IID *)ParamToBufferPointer(pMsg, 0);
|
|
|
|
PREPARE_PARAM_END()
|
|
|
|
HRESULT hrRet = _this->_punk->QueryInterface(iid, &pv);
|
|
|
|
if (SUCCEEDED(hrRet))
|
|
{
|
|
_this->_AddRef();
|
|
}
|
|
else
|
|
{
|
|
pv = NULL;
|
|
}
|
|
|
|
CSTUB_PARAM_START()
|
|
CSTUB_PARAM_POINTER_IN(&iid)
|
|
CSTUB_PARAM_INTERFACE_OUT(&pv, iid)
|
|
CSTUB_PARAM_END()
|
|
CSTUB_PARAM_CALL(pMsg, hrRet, psb);
|
|
CSTUB_PARAM_INTERFACE_OUT_RELEASE(pv)
|
|
CSTUB_PARAM_RETURN()
|
|
}
|
|
|
|
HRESULT CStubIUnknown::stub_AddRef(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
Assert(pMsg->ulParamNum == 0);
|
|
pMsg->ulRet = _this->_punk->AddRef();
|
|
_this->_AddRef();
|
|
return S_OK;
|
|
}
|
|
|
|
HRESULT CStubIUnknown::stub_Release(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
Assert(pMsg->ulParamNum == 0);
|
|
pMsg->ulRet = _this->_punk->Release();
|
|
|
|
if (!pMsg->ulRet)
|
|
_this->_punk = NULL;
|
|
|
|
_this->_Release();
|
|
return S_OK;
|
|
}
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// CStubITfLangBarMgr
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
MSTUBCALL CStubITfLangBarMgr::_StubTbl[] =
|
|
{
|
|
stub_QueryInterface,
|
|
stub_AddRef,
|
|
stub_Release,
|
|
stub_AdviseEventSink,
|
|
stub_UnadviseEventSink,
|
|
stub_GetThreadMarshalInterface,
|
|
stub_GetThreadLangBarItemMgr,
|
|
stub_GetInputProcessorProfiles,
|
|
stub_RestoreLastFocus,
|
|
stub_SetModalInput,
|
|
stub_ShowFloating,
|
|
stub_GetShowFloatingStatus,
|
|
};
|
|
|
|
HRESULT CStubITfLangBarMgr::stub_AdviseEventSink(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
CSTUB_NOT_IMPL()
|
|
}
|
|
HRESULT CStubITfLangBarMgr::stub_UnadviseEventSink(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
CSTUB_NOT_IMPL()
|
|
}
|
|
HRESULT CStubITfLangBarMgr::stub_GetThreadMarshalInterface(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
CSTUB_NOT_IMPL()
|
|
}
|
|
HRESULT CStubITfLangBarMgr::stub_GetThreadLangBarItemMgr(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
CSTUB_NOT_IMPL()
|
|
}
|
|
HRESULT CStubITfLangBarMgr::stub_GetInputProcessorProfiles(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
CSTUB_NOT_IMPL()
|
|
}
|
|
HRESULT CStubITfLangBarMgr::stub_RestoreLastFocus(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
CSTUB_NOT_IMPL()
|
|
}
|
|
HRESULT CStubITfLangBarMgr::stub_SetModalInput(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
CSTUB_NOT_IMPL()
|
|
}
|
|
HRESULT CStubITfLangBarMgr::stub_ShowFloating(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
CSTUB_NOT_IMPL()
|
|
}
|
|
HRESULT CStubITfLangBarMgr::stub_GetShowFloatingStatus(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
CSTUB_NOT_IMPL()
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// CStubITfLangBarItemMgr
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
MSTUBCALL CStubITfLangBarItemMgr::_StubTbl[] =
|
|
{
|
|
stub_QueryInterface,
|
|
stub_AddRef,
|
|
stub_Release,
|
|
stub_EnumItems,
|
|
stub_GetItem,
|
|
stub_AddItem,
|
|
stub_RemoveItem,
|
|
stub_AdviseItemSink,
|
|
stub_UnadviseItemSink,
|
|
stub_GetItemFloatingRect,
|
|
stub_GetItemsStatus,
|
|
stub_GetItemNum,
|
|
stub_GetItems,
|
|
stub_AdviseItemsSink,
|
|
stub_UnadviseItemsSink,
|
|
};
|
|
|
|
HRESULT CStubITfLangBarItemMgr::stub_EnumItems(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
HRESULT hrRet;
|
|
void *pv = NULL;
|
|
|
|
Assert(pMsg->ulParamNum == 1);
|
|
hrRet = ((ITfLangBarItemMgr *)_this->_punk)->EnumItems((IEnumTfLangBarItems **)&pv);
|
|
|
|
CSTUB_PARAM_START()
|
|
CSTUB_PARAM_INTERFACE_OUT(&pv, IID_IEnumTfLangBarItems)
|
|
CSTUB_PARAM_END()
|
|
CSTUB_PARAM_CALL(pMsg, hrRet, psb);
|
|
CSTUB_PARAM_INTERFACE_OUT_RELEASE(pv)
|
|
CSTUB_PARAM_RETURN()
|
|
}
|
|
|
|
HRESULT CStubITfLangBarItemMgr::stub_GetItem(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
CSTUB_NOT_IMPL()
|
|
}
|
|
|
|
HRESULT CStubITfLangBarItemMgr::stub_AddItem(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
CSTUB_NOT_IMPL()
|
|
}
|
|
|
|
HRESULT CStubITfLangBarItemMgr::stub_RemoveItem(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
CSTUB_NOT_IMPL()
|
|
}
|
|
|
|
HRESULT CStubITfLangBarItemMgr::stub_AdviseItemSink(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
TraceMsg(TF_FUNC, "CStubITfLangbarItemMgr::AdviseItemSink");
|
|
ITfLangBarItemSink *punk = NULL;
|
|
DWORD dwCookie = 0;
|
|
GUID guid = {0};
|
|
|
|
PREPARE_PARAM_START()
|
|
|
|
punk = (ITfLangBarItemSink *)ParamToMarshaledPointer(pMsg, IID_ITfLangBarItemSink, 0);
|
|
guid = *(GUID *)ParamToBufferPointer(pMsg, 2);
|
|
|
|
PREPARE_PARAM_END()
|
|
|
|
HRESULT hrRet = ((ITfLangBarItemMgr *)_this->_punk)->AdviseItemSink(punk, &dwCookie, (REFGUID)guid);
|
|
|
|
ClearMarshaledPointer(punk);
|
|
CSTUB_PARAM_START()
|
|
CSTUB_PARAM_INTERFACE_IN(NULL, IID_ITfLangBarItemSink)
|
|
CSTUB_PARAM_POINTER_OUT(&dwCookie)
|
|
CSTUB_PARAM_POINTER_IN(&guid)
|
|
CSTUB_PARAM_END()
|
|
CSTUB_PARAM_CALL(pMsg, hrRet, psb);
|
|
CSTUB_PARAM_RETURN()
|
|
}
|
|
|
|
HRESULT CStubITfLangBarItemMgr::stub_UnadviseItemSink(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
DWORD dwCookie = 0;
|
|
|
|
PREPARE_PARAM_START()
|
|
|
|
dwCookie = (DWORD)ParamToULONG(pMsg, 0);
|
|
|
|
PREPARE_PARAM_END()
|
|
|
|
pMsg->hrRet = ((ITfLangBarItemMgr *)_this->_punk)->UnadviseItemSink(dwCookie);
|
|
return S_OK;
|
|
}
|
|
|
|
HRESULT CStubITfLangBarItemMgr::stub_GetItemFloatingRect(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
DWORD dwThreadId = 0;
|
|
GUID guid = {0};
|
|
|
|
PREPARE_PARAM_START()
|
|
|
|
dwThreadId = (DWORD)ParamToULONG(pMsg, 0);
|
|
guid = *(GUID *)ParamToBufferPointer(pMsg, 1);
|
|
|
|
PREPARE_PARAM_END()
|
|
|
|
RECT rc;
|
|
HRESULT hrRet = ((ITfLangBarItemMgr *)_this->_punk)->GetItemFloatingRect(dwThreadId, guid, &rc);
|
|
CSTUB_PARAM_START()
|
|
CSTUB_PARAM_ULONG_IN(dwThreadId)
|
|
CSTUB_PARAM_POINTER_IN(&guid)
|
|
CSTUB_PARAM_POINTER_OUT(&rc)
|
|
CSTUB_PARAM_END()
|
|
CSTUB_PARAM_CALL(pMsg, hrRet, psb)
|
|
CSTUB_PARAM_RETURN()
|
|
return S_OK;
|
|
}
|
|
|
|
HRESULT CStubITfLangBarItemMgr::stub_GetItemsStatus(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
ULONG ulCount = 0;
|
|
GUID *pguid = NULL;
|
|
|
|
PREPARE_PARAM_START()
|
|
|
|
ulCount = (ULONG)ParamToULONG(pMsg, 0);
|
|
pguid = new GUID[ulCount];
|
|
|
|
if (pguid)
|
|
memcpy(pguid, ParamToBufferPointer(pMsg, 1), sizeof(GUID) * ulCount);
|
|
|
|
PREPARE_PARAM_END()
|
|
|
|
if (!pguid)
|
|
return E_OUTOFMEMORY;
|
|
|
|
DWORD *pdwStatus;
|
|
|
|
pdwStatus = new DWORD[ulCount];
|
|
if (!pdwStatus)
|
|
{
|
|
delete pguid;
|
|
return E_OUTOFMEMORY;
|
|
}
|
|
|
|
HRESULT hrRet = ((ITfLangBarItemMgr *)_this->_punk)->GetItemsStatus(ulCount, pguid, pdwStatus);
|
|
|
|
CSTUB_PARAM_START()
|
|
CSTUB_PARAM_ULONG_IN(ulCount)
|
|
CSTUB_PARAM_POINTER_ARRAY_IN(pguid, ulCount)
|
|
CSTUB_PARAM_POINTER_ARRAY_OUT(pdwStatus, ulCount)
|
|
CSTUB_PARAM_END()
|
|
CSTUB_PARAM_CALL(pMsg, hrRet, psb)
|
|
delete pdwStatus;
|
|
delete pguid;
|
|
CSTUB_PARAM_RETURN()
|
|
return S_OK;
|
|
}
|
|
|
|
HRESULT CStubITfLangBarItemMgr::stub_GetItemNum(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
HRESULT hrRet;
|
|
DWORD dw;
|
|
hrRet = ((ITfLangBarItemMgr *)_this->_punk)->GetItemNum(&dw);
|
|
CSTUB_PARAM_START()
|
|
CSTUB_PARAM_POINTER_OUT(&dw)
|
|
CSTUB_PARAM_END()
|
|
CSTUB_PARAM_CALL(pMsg, hrRet, psb)
|
|
CSTUB_PARAM_RETURN()
|
|
}
|
|
|
|
HRESULT CStubITfLangBarItemMgr::stub_GetItems(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
ULONG ulCount;
|
|
ULONG ulFetched;
|
|
HRESULT hrRet;
|
|
IUnknown **ppunk;
|
|
TF_LANGBARITEMINFO *pInfo;
|
|
DWORD *pdwStatus;
|
|
|
|
PREPARE_PARAM_START()
|
|
|
|
ulCount = ParamToULONG(pMsg, 0);
|
|
|
|
PREPARE_PARAM_END()
|
|
|
|
ppunk = new IUnknown*[ulCount];
|
|
if (!ppunk)
|
|
return E_OUTOFMEMORY;
|
|
|
|
pInfo = new TF_LANGBARITEMINFO[ulCount];
|
|
if (!pInfo)
|
|
{
|
|
delete ppunk;
|
|
return E_OUTOFMEMORY;
|
|
}
|
|
|
|
pdwStatus = new DWORD[ulCount];
|
|
if (!pdwStatus)
|
|
{
|
|
delete ppunk;
|
|
delete pInfo;
|
|
return E_OUTOFMEMORY;
|
|
}
|
|
|
|
hrRet = ((ITfLangBarItemMgr *)_this->_punk)->GetItems(ulCount, (ITfLangBarItem **)ppunk, pInfo, pdwStatus, &ulFetched);
|
|
|
|
CSTUB_PARAM_START()
|
|
CSTUB_PARAM_ULONG_IN(ulCount)
|
|
CSTUB_PARAM_INTERFACE_ARRAY_OUT(ppunk, IID_ITfLangBarItem, ulCount)
|
|
CSTUB_PARAM_POINTER_ARRAY_OUT(pInfo, ulCount)
|
|
CSTUB_PARAM_POINTER_ARRAY_OUT(pdwStatus, ulCount)
|
|
CSTUB_PARAM_POINTER_OUT(&ulFetched)
|
|
CSTUB_PARAM_END()
|
|
CSTUB_PARAM_CALL(pMsg, hrRet, psb);
|
|
CSTUB_PARAM_INTERFACE_ARRAY_OUT_RELEASE(ppunk, ulFetched)
|
|
|
|
delete ppunk;
|
|
delete pInfo;
|
|
delete pdwStatus;
|
|
CSTUB_PARAM_RETURN()
|
|
}
|
|
|
|
HRESULT CStubITfLangBarItemMgr::stub_AdviseItemsSink(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
ULONG ulCount = 0;
|
|
HRESULT hrRet;
|
|
IUnknown **ppunk = NULL;
|
|
DWORD *pdwCookie = NULL;
|
|
GUID *pguid = NULL;
|
|
|
|
PREPARE_PARAM_START()
|
|
|
|
ulCount = ParamToULONG(pMsg, 0);
|
|
|
|
|
|
ppunk = new IUnknown*[ulCount];
|
|
|
|
if (ppunk)
|
|
ParamToArrayMarshaledPointer(ulCount, (void **)ppunk, pMsg, IID_ITfLangBarItemSink, 1);
|
|
|
|
pguid = new GUID[ulCount];
|
|
if (pguid)
|
|
memcpy(pguid, ParamToBufferPointer(pMsg, 2), sizeof(GUID) * ulCount);
|
|
|
|
PREPARE_PARAM_END()
|
|
|
|
if (!ppunk)
|
|
{
|
|
if (pguid)
|
|
delete pguid;
|
|
return E_OUTOFMEMORY;
|
|
}
|
|
|
|
if (!pguid)
|
|
{
|
|
delete ppunk;
|
|
return E_OUTOFMEMORY;
|
|
}
|
|
|
|
pdwCookie = new DWORD[ulCount];
|
|
if (!pdwCookie)
|
|
{
|
|
delete ppunk;
|
|
delete pguid;
|
|
return E_OUTOFMEMORY;
|
|
}
|
|
|
|
hrRet = ((ITfLangBarItemMgr *)_this->_punk)->AdviseItemsSink(ulCount, (ITfLangBarItemSink **)ppunk, pguid, pdwCookie);
|
|
|
|
CSTUB_PARAM_START()
|
|
CSTUB_PARAM_ULONG_IN(ulCount)
|
|
CSTUB_PARAM_INTERFACE_ARRAY_IN(NULL, IID_ITfLangBarItemSink, ulCount)
|
|
CSTUB_PARAM_POINTER_ARRAY_IN(pguid, ulCount)
|
|
CSTUB_PARAM_POINTER_ARRAY_OUT(pdwCookie, ulCount)
|
|
CSTUB_PARAM_END()
|
|
CSTUB_PARAM_CALL(pMsg, hrRet, psb);
|
|
|
|
CSTUB_PARAM_INTERFACE_ARRAY_OUT_RELEASE(ppunk, ulCount)
|
|
|
|
delete ppunk;
|
|
delete pdwCookie;
|
|
delete pguid;
|
|
CSTUB_PARAM_RETURN()
|
|
}
|
|
|
|
HRESULT CStubITfLangBarItemMgr::stub_UnadviseItemsSink(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
ULONG ulCount;
|
|
HRESULT hrRet;
|
|
DWORD *pdwCookie;
|
|
|
|
PREPARE_PARAM_START()
|
|
|
|
ulCount = ParamToULONG(pMsg, 0);
|
|
|
|
pdwCookie = new DWORD[ulCount];
|
|
if (pdwCookie)
|
|
memcpy(pdwCookie,ParamToBufferPointer(pMsg, 1), sizeof(DWORD) * ulCount);
|
|
|
|
PREPARE_PARAM_END()
|
|
|
|
if (!pdwCookie)
|
|
return E_OUTOFMEMORY;
|
|
|
|
hrRet = ((ITfLangBarItemMgr *)_this->_punk)->UnadviseItemsSink(ulCount, pdwCookie);
|
|
|
|
CSTUB_PARAM_START()
|
|
CSTUB_PARAM_ULONG_IN(ulCount)
|
|
CSTUB_PARAM_POINTER_ARRAY_IN(pdwCookie, ulCount)
|
|
CSTUB_PARAM_END()
|
|
CSTUB_PARAM_CALL(pMsg, hrRet, psb);
|
|
|
|
delete pdwCookie;
|
|
CSTUB_PARAM_RETURN()
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// CStubITfLangBarItemSink
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
MSTUBCALL CStubITfLangBarItemSink::_StubTbl[] =
|
|
{
|
|
stub_QueryInterface,
|
|
stub_AddRef,
|
|
stub_Release,
|
|
stub_OnUpdate,
|
|
};
|
|
|
|
HRESULT CStubITfLangBarItemSink::stub_OnUpdate(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
DWORD dw = 0;
|
|
|
|
PREPARE_PARAM_START()
|
|
|
|
dw = (DWORD)ParamToULONG(pMsg, 0);
|
|
|
|
PREPARE_PARAM_END()
|
|
|
|
pMsg->hrRet = ((ITfLangBarItemSink *)_this->_punk)->OnUpdate(dw);
|
|
return S_OK;
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// CStubIEnumTfLangBarItems
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
MSTUBCALL CStubIEnumTfLangBarItems::_StubTbl[] =
|
|
{
|
|
stub_QueryInterface,
|
|
stub_AddRef,
|
|
stub_Release,
|
|
stub_Clone,
|
|
stub_Next,
|
|
stub_Reset,
|
|
stub_Skip,
|
|
};
|
|
|
|
HRESULT CStubIEnumTfLangBarItems::stub_Clone(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
CSTUB_NOT_IMPL()
|
|
}
|
|
|
|
HRESULT CStubIEnumTfLangBarItems::stub_Next(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
ULONG ulCount;
|
|
ULONG ulFetched;
|
|
HRESULT hrRet;
|
|
IUnknown **ppunk;
|
|
|
|
PREPARE_PARAM_START()
|
|
|
|
ulCount = ParamToULONG(pMsg, 0);
|
|
|
|
PREPARE_PARAM_END()
|
|
|
|
ppunk = new IUnknown*[ulCount];
|
|
if (!ppunk)
|
|
return E_OUTOFMEMORY;
|
|
|
|
hrRet = ((IEnumTfLangBarItems *)_this->_punk)->Next(ulCount, (ITfLangBarItem **)ppunk, &ulFetched);
|
|
|
|
CSTUB_PARAM_START()
|
|
CSTUB_PARAM_ULONG_IN(ulCount)
|
|
CSTUB_PARAM_INTERFACE_ARRAY_OUT(ppunk, IID_ITfLangBarItem, ulCount)
|
|
CSTUB_PARAM_POINTER_OUT(&ulFetched)
|
|
CSTUB_PARAM_END()
|
|
CSTUB_PARAM_CALL(pMsg, hrRet, psb);
|
|
CSTUB_PARAM_INTERFACE_ARRAY_OUT_RELEASE(ppunk, ulFetched)
|
|
|
|
delete ppunk;
|
|
CSTUB_PARAM_RETURN()
|
|
}
|
|
|
|
HRESULT CStubIEnumTfLangBarItems::stub_Reset(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
CSTUB_NOT_IMPL()
|
|
}
|
|
|
|
HRESULT CStubIEnumTfLangBarItems::stub_Skip(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
CSTUB_NOT_IMPL()
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// CStubITfLangBarItem
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
MSTUBCALL CStubITfLangBarItem::_StubTbl[] =
|
|
{
|
|
stub_QueryInterface,
|
|
stub_AddRef,
|
|
stub_Release,
|
|
stub_GetInfo,
|
|
stub_GetStatus,
|
|
stub_Show,
|
|
stub_GetTooltipString
|
|
};
|
|
|
|
HRESULT CStubITfLangBarItem::stub_GetInfo(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
HRESULT hrRet;
|
|
TF_LANGBARITEMINFO info;
|
|
hrRet = ((ITfLangBarItem *)_this->_punk)->GetInfo(&info);
|
|
CSTUB_PARAM_START()
|
|
CSTUB_PARAM_POINTER_OUT(&info)
|
|
CSTUB_PARAM_END()
|
|
CSTUB_PARAM_CALL(pMsg, hrRet, psb)
|
|
CSTUB_PARAM_RETURN()
|
|
}
|
|
|
|
HRESULT CStubITfLangBarItem::stub_GetStatus(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
HRESULT hrRet;
|
|
DWORD dw;
|
|
hrRet = ((ITfLangBarItem *)_this->_punk)->GetStatus(&dw);
|
|
CSTUB_PARAM_START()
|
|
CSTUB_PARAM_POINTER_OUT(&dw)
|
|
CSTUB_PARAM_END()
|
|
CSTUB_PARAM_CALL(pMsg, hrRet, psb)
|
|
CSTUB_PARAM_RETURN()
|
|
}
|
|
|
|
HRESULT CStubITfLangBarItem::stub_Show(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
BOOL fShow = FALSE;
|
|
|
|
PREPARE_PARAM_START()
|
|
|
|
fShow = (BOOL)ParamToULONG(pMsg, 0);
|
|
|
|
PREPARE_PARAM_END()
|
|
|
|
pMsg->hrRet = ((ITfLangBarItem *)_this->_punk)->Show(fShow);
|
|
return S_OK;
|
|
}
|
|
|
|
HRESULT CStubITfLangBarItem::stub_GetTooltipString(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
BSTR bstr = NULL;
|
|
HRESULT hrRet = ((ITfLangBarItem *)_this->_punk)->GetTooltipString(&bstr);
|
|
CSTUB_PARAM_START()
|
|
CSTUB_PARAM_BSTR_OUT(bstr)
|
|
CSTUB_PARAM_END()
|
|
CSTUB_PARAM_CALL(pMsg, hrRet, psb)
|
|
CSTUB_PARAM_RETURN()
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// CStubITfLangBarItemButton
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
MSTUBCALL CStubITfLangBarItemButton::_StubTbl[] =
|
|
{
|
|
stub_QueryInterface,
|
|
stub_AddRef,
|
|
stub_Release,
|
|
stub_GetInfo,
|
|
stub_GetStatus,
|
|
stub_Show,
|
|
stub_GetTooltipString,
|
|
stub_OnClick,
|
|
stub_InitMenu,
|
|
stub_OnMenuSelect,
|
|
stub_GetIcon,
|
|
stub_GetText,
|
|
};
|
|
|
|
HRESULT CStubITfLangBarItemButton::stub_OnClick(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
TfLBIClick click;
|
|
POINT pt;
|
|
RECT rc;
|
|
|
|
PREPARE_PARAM_START()
|
|
|
|
click = (TfLBIClick)ParamToULONG(pMsg, 0);
|
|
pt = *(POINT *)ParamToBufferPointer(pMsg, 1);
|
|
rc = *(RECT *)ParamToBufferPointer(pMsg, 2);
|
|
|
|
PREPARE_PARAM_END()
|
|
|
|
pMsg->hrRet = ((ITfLangBarItemButton *)_this->_punk)->OnClick(click, pt, &rc);
|
|
return S_OK;
|
|
}
|
|
|
|
HRESULT CStubITfLangBarItemButton::stub_InitMenu(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
ITfMenu *punk = NULL;
|
|
|
|
PREPARE_PARAM_START()
|
|
|
|
punk = (ITfMenu *)ParamToMarshaledPointer(pMsg, IID_ITfMenu, 0);
|
|
|
|
PREPARE_PARAM_END()
|
|
|
|
pMsg->hrRet = ((ITfLangBarItemButton *)_this->_punk)->InitMenu(punk);
|
|
|
|
CSTUB_PARAM_INTERFACE_OUT_RELEASE(punk)
|
|
CSTUB_PARAM_RETURN()
|
|
}
|
|
|
|
HRESULT CStubITfLangBarItemButton::stub_OnMenuSelect(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
ULONG ulId;
|
|
|
|
PREPARE_PARAM_START()
|
|
|
|
ulId = (ULONG)ParamToULONG(pMsg, 0);
|
|
|
|
PREPARE_PARAM_END()
|
|
|
|
pMsg->hrRet = ((ITfLangBarItemButton *)_this->_punk)->OnMenuSelect(ulId);
|
|
return S_OK;
|
|
}
|
|
|
|
HRESULT CStubITfLangBarItemButton::stub_GetIcon(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
HICON hIcon;
|
|
HRESULT hrRet = ((ITfLangBarItemButton *)_this->_punk)->GetIcon(&hIcon);
|
|
CSTUB_PARAM_START()
|
|
CSTUB_PARAM_HICON_OUT(&hIcon)
|
|
CSTUB_PARAM_END()
|
|
CSTUB_PARAM_CALL(pMsg, hrRet, psb)
|
|
CSTUB_PARAM_RETURN()
|
|
}
|
|
|
|
HRESULT CStubITfLangBarItemButton::stub_GetText(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
BSTR bstr = NULL;
|
|
HRESULT hrRet = ((ITfLangBarItemButton *)_this->_punk)->GetText(&bstr);
|
|
CSTUB_PARAM_START()
|
|
CSTUB_PARAM_BSTR_OUT(bstr)
|
|
CSTUB_PARAM_END()
|
|
CSTUB_PARAM_CALL(pMsg, hrRet, psb)
|
|
CSTUB_PARAM_RETURN()
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// CStubITfLangBarItemBitmapButton
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
MSTUBCALL CStubITfLangBarItemBitmapButton::_StubTbl[] =
|
|
{
|
|
stub_QueryInterface,
|
|
stub_AddRef,
|
|
stub_Release,
|
|
stub_GetInfo,
|
|
stub_GetStatus,
|
|
stub_Show,
|
|
stub_GetTooltipString,
|
|
stub_OnClick,
|
|
stub_InitMenu,
|
|
stub_OnMenuSelect,
|
|
stub_GetPreferredSize,
|
|
stub_DrawBitmap,
|
|
stub_GetText,
|
|
};
|
|
|
|
HRESULT CStubITfLangBarItemBitmapButton::stub_OnClick(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
TfLBIClick click;
|
|
POINT pt;
|
|
RECT rc;
|
|
|
|
PREPARE_PARAM_START()
|
|
|
|
click = (TfLBIClick)ParamToULONG(pMsg, 0);
|
|
pt = *(POINT *)ParamToBufferPointer(pMsg, 1);
|
|
rc = *(RECT *)ParamToBufferPointer(pMsg, 2);
|
|
|
|
PREPARE_PARAM_END()
|
|
|
|
pMsg->hrRet = ((ITfLangBarItemBitmapButton *)_this->_punk)->OnClick(click, pt, &rc);
|
|
return S_OK;
|
|
}
|
|
|
|
HRESULT CStubITfLangBarItemBitmapButton::stub_InitMenu(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
ITfMenu *punk;
|
|
|
|
PREPARE_PARAM_START()
|
|
|
|
punk = (ITfMenu *)ParamToMarshaledPointer(pMsg, IID_ITfMenu, 0);
|
|
|
|
PREPARE_PARAM_END()
|
|
|
|
pMsg->hrRet = ((ITfLangBarItemBitmapButton *)_this->_punk)->InitMenu(punk);
|
|
|
|
CSTUB_PARAM_INTERFACE_OUT_RELEASE(punk)
|
|
CSTUB_PARAM_RETURN()
|
|
}
|
|
|
|
HRESULT CStubITfLangBarItemBitmapButton::stub_OnMenuSelect(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
ULONG ulId;
|
|
|
|
PREPARE_PARAM_START()
|
|
|
|
ulId = (ULONG)ParamToULONG(pMsg, 0);
|
|
|
|
PREPARE_PARAM_END()
|
|
|
|
pMsg->hrRet = ((ITfLangBarItemBitmapButton *)_this->_punk)->OnMenuSelect(ulId);
|
|
return S_OK;
|
|
}
|
|
|
|
HRESULT CStubITfLangBarItemBitmapButton::stub_GetPreferredSize(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
SIZE size;
|
|
SIZE sizeOut;
|
|
|
|
PREPARE_PARAM_START()
|
|
|
|
size = *(SIZE *)ParamToBufferPointer(pMsg, 0);
|
|
|
|
PREPARE_PARAM_END()
|
|
|
|
HRESULT hrRet = ((ITfLangBarItemBitmapButton *)_this->_punk)->GetPreferredSize(&size, &sizeOut);
|
|
CSTUB_PARAM_START()
|
|
CSTUB_PARAM_POINTER_IN(&size)
|
|
CSTUB_PARAM_POINTER_OUT(&sizeOut)
|
|
CSTUB_PARAM_END()
|
|
CSTUB_PARAM_CALL(pMsg, hrRet, psb)
|
|
CSTUB_PARAM_RETURN()
|
|
}
|
|
|
|
HRESULT CStubITfLangBarItemBitmapButton::stub_DrawBitmap(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
ULONG bmWidth;
|
|
ULONG bmHeight;
|
|
DWORD dwFlags;
|
|
|
|
PREPARE_PARAM_START()
|
|
|
|
bmWidth = (ULONG)ParamToULONG(pMsg, 0);
|
|
bmHeight = (ULONG)ParamToULONG(pMsg, 1);
|
|
dwFlags = (DWORD)ParamToULONG(pMsg, 2);
|
|
|
|
PREPARE_PARAM_END()
|
|
|
|
HBITMAP hbmp;
|
|
HBITMAP hbmpMask;
|
|
HRESULT hrRet = ((ITfLangBarItemBitmapButton *)_this->_punk)->DrawBitmap(bmWidth, bmHeight, dwFlags, &hbmp, &hbmpMask);
|
|
CSTUB_PARAM_START()
|
|
CSTUB_PARAM_ULONG_IN(bmWidth)
|
|
CSTUB_PARAM_ULONG_IN(bmHeight)
|
|
CSTUB_PARAM_ULONG_IN(dwFlags)
|
|
CSTUB_PARAM_HBITMAP_OUT(&hbmp)
|
|
CSTUB_PARAM_HBITMAP_OUT(&hbmpMask)
|
|
CSTUB_PARAM_END()
|
|
CSTUB_PARAM_CALL(pMsg, hrRet, psb)
|
|
CSTUB_PARAM_RETURN()
|
|
}
|
|
|
|
HRESULT CStubITfLangBarItemBitmapButton::stub_GetText(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
BSTR bstr = NULL;
|
|
HRESULT hrRet = ((ITfLangBarItemBitmapButton *)_this->_punk)->GetText(&bstr);
|
|
CSTUB_PARAM_START()
|
|
CSTUB_PARAM_BSTR_OUT(bstr)
|
|
CSTUB_PARAM_END()
|
|
CSTUB_PARAM_CALL(pMsg, hrRet, psb)
|
|
CSTUB_PARAM_RETURN()
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// CStubITfLangBarItemBitmap
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
MSTUBCALL CStubITfLangBarItemBitmap::_StubTbl[] =
|
|
{
|
|
stub_QueryInterface,
|
|
stub_AddRef,
|
|
stub_Release,
|
|
stub_GetInfo,
|
|
stub_GetStatus,
|
|
stub_Show,
|
|
stub_GetTooltipString,
|
|
stub_OnClick,
|
|
stub_GetPreferredSize,
|
|
stub_DrawBitmap,
|
|
};
|
|
|
|
HRESULT CStubITfLangBarItemBitmap::stub_OnClick(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
TfLBIClick click;
|
|
POINT pt;
|
|
RECT rc;
|
|
|
|
PREPARE_PARAM_START()
|
|
|
|
click = (TfLBIClick)ParamToULONG(pMsg, 0);
|
|
pt = *(POINT *)ParamToBufferPointer(pMsg, 1);
|
|
rc = *(RECT *)ParamToBufferPointer(pMsg, 2);
|
|
|
|
PREPARE_PARAM_END()
|
|
|
|
pMsg->hrRet = ((ITfLangBarItemBitmap *)_this->_punk)->OnClick(click, pt, &rc);
|
|
return S_OK;
|
|
}
|
|
|
|
HRESULT CStubITfLangBarItemBitmap::stub_GetPreferredSize(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
SIZE size;
|
|
SIZE sizeOut;
|
|
|
|
PREPARE_PARAM_START()
|
|
|
|
size = *(SIZE *)ParamToBufferPointer(pMsg, 0);
|
|
|
|
PREPARE_PARAM_END()
|
|
|
|
HRESULT hrRet = ((ITfLangBarItemBitmap *)_this->_punk)->GetPreferredSize(&size, &sizeOut);
|
|
CSTUB_PARAM_START()
|
|
CSTUB_PARAM_POINTER_IN(&size)
|
|
CSTUB_PARAM_POINTER_OUT(&sizeOut)
|
|
CSTUB_PARAM_END()
|
|
CSTUB_PARAM_CALL(pMsg, hrRet, psb)
|
|
CSTUB_PARAM_RETURN()
|
|
}
|
|
|
|
HRESULT CStubITfLangBarItemBitmap::stub_DrawBitmap(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
ULONG bmWidth;
|
|
ULONG bmHeight;
|
|
DWORD dwFlags;
|
|
|
|
PREPARE_PARAM_START()
|
|
|
|
bmWidth = (ULONG)ParamToULONG(pMsg, 0);
|
|
bmHeight = (ULONG)ParamToULONG(pMsg, 1);
|
|
dwFlags = (DWORD)ParamToULONG(pMsg, 2);
|
|
|
|
PREPARE_PARAM_END()
|
|
|
|
HBITMAP hbmp;
|
|
HBITMAP hbmpMask;
|
|
HRESULT hrRet = ((ITfLangBarItemBitmap *)_this->_punk)->DrawBitmap(bmWidth, bmHeight, dwFlags, &hbmp, &hbmpMask);
|
|
CSTUB_PARAM_START()
|
|
CSTUB_PARAM_ULONG_IN(bmWidth)
|
|
CSTUB_PARAM_ULONG_IN(bmHeight)
|
|
CSTUB_PARAM_ULONG_IN(dwFlags)
|
|
CSTUB_PARAM_HBITMAP_OUT(&hbmp)
|
|
CSTUB_PARAM_HBITMAP_OUT(&hbmpMask)
|
|
CSTUB_PARAM_END()
|
|
CSTUB_PARAM_CALL(pMsg, hrRet, psb)
|
|
CSTUB_PARAM_RETURN()
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// CStubITfLangBarItemBalloon
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
MSTUBCALL CStubITfLangBarItemBalloon::_StubTbl[] =
|
|
{
|
|
stub_QueryInterface,
|
|
stub_AddRef,
|
|
stub_Release,
|
|
stub_GetInfo,
|
|
stub_GetStatus,
|
|
stub_Show,
|
|
stub_GetTooltipString,
|
|
stub_OnClick,
|
|
stub_GetPreferredSize,
|
|
stub_GetBalloonInfo,
|
|
};
|
|
|
|
HRESULT CStubITfLangBarItemBalloon::stub_OnClick(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
TfLBIClick click;
|
|
POINT pt;
|
|
RECT rc;
|
|
|
|
PREPARE_PARAM_START()
|
|
|
|
click = (TfLBIClick)ParamToULONG(pMsg, 0);
|
|
pt = *(POINT *)ParamToBufferPointer(pMsg, 1);
|
|
rc = *(RECT *)ParamToBufferPointer(pMsg, 2);
|
|
|
|
PREPARE_PARAM_END()
|
|
|
|
pMsg->hrRet = ((ITfLangBarItemBalloon *)_this->_punk)->OnClick(click, pt, &rc);
|
|
return S_OK;
|
|
}
|
|
|
|
HRESULT CStubITfLangBarItemBalloon::stub_GetPreferredSize(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
SIZE size;
|
|
SIZE sizeOut;
|
|
|
|
PREPARE_PARAM_START()
|
|
|
|
size = *(SIZE *)ParamToBufferPointer(pMsg, 0);
|
|
|
|
PREPARE_PARAM_END()
|
|
|
|
HRESULT hrRet = ((ITfLangBarItemBalloon *)_this->_punk)->GetPreferredSize(&size, &sizeOut);
|
|
CSTUB_PARAM_START()
|
|
CSTUB_PARAM_POINTER_IN(&size)
|
|
CSTUB_PARAM_POINTER_OUT(&sizeOut)
|
|
CSTUB_PARAM_END()
|
|
CSTUB_PARAM_CALL(pMsg, hrRet, psb)
|
|
CSTUB_PARAM_RETURN()
|
|
}
|
|
|
|
HRESULT CStubITfLangBarItemBalloon::stub_GetBalloonInfo(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
TF_LBBALLOONINFO info;
|
|
HRESULT hrRet = ((ITfLangBarItemBalloon *)_this->_punk)->GetBalloonInfo(&info);
|
|
CSTUB_PARAM_START()
|
|
CSTUB_PARAM_TF_LBBALLOONINFO_OUT(&info)
|
|
CSTUB_PARAM_END()
|
|
CSTUB_PARAM_CALL(pMsg, hrRet, psb)
|
|
CSTUB_PARAM_RETURN()
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// CStubITfMenu
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
MSTUBCALL CStubITfMenu::_StubTbl[] =
|
|
{
|
|
stub_QueryInterface,
|
|
stub_AddRef,
|
|
stub_Release,
|
|
stub_AddItemMenu,
|
|
};
|
|
|
|
HRESULT CStubITfMenu::stub_AddItemMenu(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
UINT uId = 0;
|
|
DWORD dwFlags = 0;
|
|
HBITMAP hbmp = NULL;
|
|
HBITMAP hbmpMask = NULL;
|
|
WCHAR *pchTemp = NULL;
|
|
ULONG cch = 0;
|
|
WCHAR *pch = NULL;
|
|
BOOL fNULLStack;
|
|
ITfMenu *pMenu = NULL;
|
|
|
|
PREPARE_PARAM_START()
|
|
|
|
uId = (ULONG)ParamToULONG(pMsg, 0);
|
|
dwFlags = (ULONG)ParamToULONG(pMsg, 1);
|
|
hbmp = ParamToHBITMAP(pMsg, 2);
|
|
hbmpMask = ParamToHBITMAP(pMsg, 3);
|
|
pchTemp = (WCHAR *)ParamToBufferPointer(pMsg, 4);
|
|
cch = (ULONG)ParamToULONG(pMsg, 5);
|
|
pch = new WCHAR[cch + 1];
|
|
if (pch)
|
|
wcsncpy(pch, pchTemp, cch);
|
|
|
|
pMenu = (ITfMenu *)ParamToMarshaledPointer(pMsg, IID_ITfMenu, 6, &fNULLStack);
|
|
|
|
PREPARE_PARAM_END()
|
|
|
|
if (!pch)
|
|
return E_OUTOFMEMORY;
|
|
|
|
|
|
HRESULT hrRet = ((ITfMenu *)_this->_punk)->AddMenuItem(uId,
|
|
dwFlags,
|
|
hbmp,
|
|
hbmpMask,
|
|
pch,
|
|
cch,
|
|
!fNULLStack ? &pMenu : NULL);
|
|
|
|
CSTUB_PARAM_START()
|
|
CSTUB_PARAM_ULONG_IN(uId)
|
|
CSTUB_PARAM_ULONG_IN(dwFlags)
|
|
CSTUB_PARAM_HBITMAP_IN(hbmp)
|
|
CSTUB_PARAM_HBITMAP_IN(hbmpMask)
|
|
CSTUB_PARAM_POINTER_IN(pch)
|
|
CSTUB_PARAM_ULONG_IN(cch)
|
|
CSTUB_PARAM_INTERFACE_OUT(&pMenu, IID_ITfMenu)
|
|
CSTUB_PARAM_END()
|
|
CSTUB_PARAM_CALL(pMsg, hrRet, psb)
|
|
CSTUB_PARAM_INTERFACE_OUT_RELEASE(pMenu)
|
|
|
|
delete pch;
|
|
|
|
CSTUB_PARAM_RETURN()
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// CStubITfInputProcessorProfiles
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
MSTUBCALL CStubITfInputProcessorProfiles::_StubTbl[] =
|
|
{
|
|
stub_QueryInterface,
|
|
stub_AddRef,
|
|
stub_Release,
|
|
stub_Register,
|
|
stub_Unregister,
|
|
stub_AddLanguageProfile,
|
|
stub_RemoveLanguageProfile,
|
|
stub_EnumInputProcessorInfo,
|
|
stub_GetDefaultLanguageProfile,
|
|
stub_SetDefaultLanguageProfile,
|
|
stub_ActivateLanguageProfile,
|
|
stub_GetActiveLanguageProfile,
|
|
stub_GetCurrentLanguage,
|
|
stub_ChangeCurrentLanguage,
|
|
stub_GetLanguageList,
|
|
stub_EnumLanguageProfiles,
|
|
stub_EnableLanguageProfile,
|
|
stub_IsEnabledLanguageProfile,
|
|
stub_EnableLanguageProfileByDefault,
|
|
stub_SubstituteKeyboardLayout,
|
|
};
|
|
|
|
|
|
HRESULT CStubITfInputProcessorProfiles::stub_Register(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
CSTUB_NOT_IMPL()
|
|
}
|
|
|
|
HRESULT CStubITfInputProcessorProfiles::stub_Unregister(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
CSTUB_NOT_IMPL()
|
|
}
|
|
|
|
HRESULT CStubITfInputProcessorProfiles::stub_AddLanguageProfile(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
CSTUB_NOT_IMPL()
|
|
}
|
|
|
|
HRESULT CStubITfInputProcessorProfiles::stub_RemoveLanguageProfile(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
CSTUB_NOT_IMPL()
|
|
}
|
|
|
|
HRESULT CStubITfInputProcessorProfiles::stub_EnumInputProcessorInfo(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
CSTUB_NOT_IMPL()
|
|
}
|
|
|
|
HRESULT CStubITfInputProcessorProfiles::stub_GetDefaultLanguageProfile(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
CSTUB_NOT_IMPL()
|
|
}
|
|
|
|
HRESULT CStubITfInputProcessorProfiles::stub_SetDefaultLanguageProfile(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
CSTUB_NOT_IMPL()
|
|
}
|
|
|
|
HRESULT CStubITfInputProcessorProfiles::stub_ActivateLanguageProfile(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
CSTUB_NOT_IMPL()
|
|
}
|
|
|
|
HRESULT CStubITfInputProcessorProfiles::stub_GetActiveLanguageProfile(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
CSTUB_NOT_IMPL()
|
|
}
|
|
|
|
HRESULT CStubITfInputProcessorProfiles::stub_GetLanguageProfileDescription(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
CSTUB_NOT_IMPL()
|
|
}
|
|
|
|
HRESULT CStubITfInputProcessorProfiles::stub_GetCurrentLanguage(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
LANGID langid;
|
|
HRESULT hrRet = ((ITfInputProcessorProfiles *)_this->_punk)->GetCurrentLanguage(&langid);
|
|
CSTUB_PARAM_START()
|
|
CSTUB_PARAM_POINTER_OUT(&langid)
|
|
CSTUB_PARAM_END()
|
|
CSTUB_PARAM_CALL(pMsg, hrRet, psb)
|
|
CSTUB_PARAM_RETURN()
|
|
}
|
|
|
|
HRESULT CStubITfInputProcessorProfiles::stub_ChangeCurrentLanguage(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
CSTUB_NOT_IMPL()
|
|
}
|
|
|
|
HRESULT CStubITfInputProcessorProfiles::stub_GetLanguageList(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
CSTUB_NOT_IMPL()
|
|
}
|
|
|
|
HRESULT CStubITfInputProcessorProfiles::stub_EnumLanguageProfiles(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
CSTUB_NOT_IMPL()
|
|
}
|
|
|
|
HRESULT CStubITfInputProcessorProfiles::stub_EnableLanguageProfile(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
CSTUB_NOT_IMPL()
|
|
}
|
|
|
|
HRESULT CStubITfInputProcessorProfiles::stub_IsEnabledLanguageProfile(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
CSTUB_NOT_IMPL()
|
|
}
|
|
|
|
HRESULT CStubITfInputProcessorProfiles::stub_EnableLanguageProfileByDefault(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
CSTUB_NOT_IMPL()
|
|
}
|
|
|
|
HRESULT CStubITfInputProcessorProfiles::stub_SubstituteKeyboardLayout(CStub *_this, MARSHALMSG *pMsg, CSharedBlock *psb)
|
|
{
|
|
CSTUB_NOT_IMPL()
|
|
}
|
|
|