mirror of
https://github.com/reactos/reactos.git
synced 2025-05-06 18:31:26 +00:00
[MSUTB][SDK] Add CLBarItemBase (#6444)
Supporting Language Bar... JIRA issue: CORE-19363 - Implement CLBarItemBase class. - Add TF_E_... flags to "msctf.idl".
This commit is contained in:
parent
9e43518da5
commit
34705d1a5d
2 changed files with 160 additions and 4 deletions
|
@ -830,6 +830,40 @@ public:
|
||||||
STDMETHOD_(BOOL, OnDelayMsg)(UINT uMsg) override;
|
STDMETHOD_(BOOL, OnDelayMsg)(UINT uMsg) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/***********************************************************************/
|
||||||
|
|
||||||
|
class CLBarItemBase : public ITfLangBarItem
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
DWORD m_dwItemStatus;
|
||||||
|
TF_LANGBARITEMINFO m_NewUIInfo;
|
||||||
|
WCHAR m_szToolTipText[256];
|
||||||
|
LONG m_cRefs;
|
||||||
|
ITfLangBarItemSink *m_pLangBarItemSink;
|
||||||
|
|
||||||
|
public:
|
||||||
|
CLBarItemBase();
|
||||||
|
virtual ~CLBarItemBase();
|
||||||
|
|
||||||
|
HRESULT ShowInternal(BOOL bShow, BOOL bUpdate);
|
||||||
|
|
||||||
|
void InitNuiInfo(
|
||||||
|
REFIID clsidService,
|
||||||
|
REFGUID guidItem,
|
||||||
|
DWORD dwStyle,
|
||||||
|
DWORD ulSort,
|
||||||
|
LPCWSTR Source);
|
||||||
|
|
||||||
|
HRESULT AdviseSink(REFIID riid, IUnknown *punk, DWORD *pdwCookie);
|
||||||
|
HRESULT UnadviseSink(DWORD dwCookie);
|
||||||
|
|
||||||
|
// ITfLangBarItem methods
|
||||||
|
STDMETHOD(GetInfo)(TF_LANGBARITEMINFO *pInfo) override;
|
||||||
|
STDMETHOD(GetStatus)(DWORD *pdwStatus) override;
|
||||||
|
STDMETHOD(Show)(BOOL fShow) override;
|
||||||
|
STDMETHOD(GetTooltipString)(BSTR *pbstrToolTip) override;
|
||||||
|
};
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* CUTBLangBarDlg
|
* CUTBLangBarDlg
|
||||||
*/
|
*/
|
||||||
|
@ -2362,6 +2396,110 @@ CTrayIconWnd::_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* CLBarItemBase
|
||||||
|
*/
|
||||||
|
|
||||||
|
CLBarItemBase::CLBarItemBase()
|
||||||
|
{
|
||||||
|
m_dwItemStatus = 0;
|
||||||
|
m_szToolTipText[0] = 0;
|
||||||
|
m_cRefs = 1;
|
||||||
|
m_pLangBarItemSink = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
CLBarItemBase::~CLBarItemBase()
|
||||||
|
{
|
||||||
|
if (m_pLangBarItemSink)
|
||||||
|
m_pLangBarItemSink->Release();
|
||||||
|
}
|
||||||
|
|
||||||
|
HRESULT
|
||||||
|
CLBarItemBase::AdviseSink(
|
||||||
|
REFIID riid,
|
||||||
|
IUnknown *punk,
|
||||||
|
DWORD *pdwCookie)
|
||||||
|
{
|
||||||
|
if (IsEqualIID(riid, IID_ITfLangBarItemSink) || m_pLangBarItemSink)
|
||||||
|
return TF_E_NOOBJECT;
|
||||||
|
|
||||||
|
HRESULT hr = punk->QueryInterface(IID_ITfLangBarItemSink, (void **)&m_pLangBarItemSink);
|
||||||
|
if (SUCCEEDED(hr))
|
||||||
|
*pdwCookie = 0x80000001;
|
||||||
|
return hr;
|
||||||
|
}
|
||||||
|
|
||||||
|
HRESULT CLBarItemBase::UnadviseSink(DWORD dwCookie)
|
||||||
|
{
|
||||||
|
if (dwCookie != 0x80000001)
|
||||||
|
return E_FAIL;
|
||||||
|
|
||||||
|
if (!m_pLangBarItemSink)
|
||||||
|
return E_UNEXPECTED;
|
||||||
|
|
||||||
|
m_pLangBarItemSink->Release();
|
||||||
|
m_pLangBarItemSink = NULL;
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
CLBarItemBase::InitNuiInfo(
|
||||||
|
REFIID clsidService,
|
||||||
|
REFGUID guidItem,
|
||||||
|
DWORD dwStyle,
|
||||||
|
DWORD ulSort,
|
||||||
|
LPCWSTR Source)
|
||||||
|
{
|
||||||
|
m_NewUIInfo.clsidService = clsidService;
|
||||||
|
m_NewUIInfo.guidItem = guidItem;
|
||||||
|
m_NewUIInfo.dwStyle = dwStyle;
|
||||||
|
m_NewUIInfo.ulSort = ulSort;
|
||||||
|
StringCchCopyW(m_NewUIInfo.szDescription, _countof(m_NewUIInfo.szDescription), Source);
|
||||||
|
}
|
||||||
|
|
||||||
|
HRESULT
|
||||||
|
CLBarItemBase::ShowInternal(BOOL bShow, BOOL bUpdate)
|
||||||
|
{
|
||||||
|
DWORD dwOldStatus = m_dwItemStatus;
|
||||||
|
if (bShow)
|
||||||
|
m_dwItemStatus &= ~0x1;
|
||||||
|
else
|
||||||
|
m_dwItemStatus |= 0x1;
|
||||||
|
if (bUpdate && (dwOldStatus != m_dwItemStatus))
|
||||||
|
{
|
||||||
|
if (m_pLangBarItemSink)
|
||||||
|
m_pLangBarItemSink->OnUpdate(TF_LBI_STATUS);
|
||||||
|
}
|
||||||
|
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
STDMETHODIMP CLBarItemBase::GetInfo(TF_LANGBARITEMINFO *pInfo)
|
||||||
|
{
|
||||||
|
CopyMemory(pInfo, &m_NewUIInfo, sizeof(*pInfo));
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
STDMETHODIMP CLBarItemBase::GetStatus(DWORD *pdwStatus)
|
||||||
|
{
|
||||||
|
*pdwStatus = m_dwItemStatus;
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
STDMETHODIMP CLBarItemBase::Show(BOOL fShow)
|
||||||
|
{
|
||||||
|
return ShowInternal(fShow, TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
STDMETHODIMP CLBarItemBase::GetTooltipString(BSTR *pbstrToolTip)
|
||||||
|
{
|
||||||
|
if (!pbstrToolTip)
|
||||||
|
return E_INVALIDARG;
|
||||||
|
BSTR bstr = ::SysAllocString(m_szToolTipText);
|
||||||
|
*pbstrToolTip = bstr;
|
||||||
|
return bstr ? S_OK : E_OUTOFMEMORY;
|
||||||
|
}
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* GetLibTls (MSUTB.@)
|
* GetLibTls (MSUTB.@)
|
||||||
*
|
*
|
||||||
|
|
|
@ -23,10 +23,28 @@ import "textstor.idl";
|
||||||
import "ctfutb.idl";
|
import "ctfutb.idl";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
cpp_quote("#define TF_E_STACKFULL MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0501)")
|
cpp_quote("#define TF_E_ALREADY_EXISTS MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0506)")
|
||||||
cpp_quote("#define TF_E_DISCONNECTED MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0504)")
|
cpp_quote("#define TF_E_COMPOSITION_REJECTED MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0508)")
|
||||||
cpp_quote("#define TF_E_ALREADY_EXISTS MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0506)")
|
cpp_quote("#define TF_E_DISCONNECTED MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0504)")
|
||||||
cpp_quote("#define TF_E_NOLOCK MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0201)")
|
cpp_quote("#define TF_E_EMPTYCONTEXT MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0509)")
|
||||||
|
cpp_quote("#define TF_E_FORMAT MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x020A)")
|
||||||
|
cpp_quote("#define TF_E_INVALIDPOINT MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0207)")
|
||||||
|
cpp_quote("#define TF_E_INVALIDPOS MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0200)")
|
||||||
|
cpp_quote("#define TF_E_INVALIDVIEW MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0505)")
|
||||||
|
cpp_quote("#define TF_E_LOCKED MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0500)")
|
||||||
|
cpp_quote("#define TF_E_NOINTERFACE MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0204)")
|
||||||
|
cpp_quote("#define TF_E_NOLAYOUT MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0206)")
|
||||||
|
cpp_quote("#define TF_E_NOLOCK MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0201)")
|
||||||
|
cpp_quote("#define TF_E_NOOBJECT MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0202)")
|
||||||
|
cpp_quote("#define TF_E_NOPROVIDER MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0503)")
|
||||||
|
cpp_quote("#define TF_E_NOSELECTION MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0205)")
|
||||||
|
cpp_quote("#define TF_E_NOSERVICE MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0203)")
|
||||||
|
cpp_quote("#define TF_E_NOTOWNEDRANGE MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0502)")
|
||||||
|
cpp_quote("#define TF_E_RANGE_NOT_COVERED MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0507)")
|
||||||
|
cpp_quote("#define TF_E_READONLY MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0209)")
|
||||||
|
cpp_quote("#define TF_E_STACKFULL MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0501)")
|
||||||
|
cpp_quote("#define TF_E_SYNCHRONOUS MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0208)")
|
||||||
|
cpp_quote("#define TF_S_ASYNC MAKE_HRESULT(SEVERITY_SUCCESS, FACILITY_ITF, 0x0300)")
|
||||||
|
|
||||||
cpp_quote("EXTERN_C HRESULT WINAPI TF_InitSystem(VOID);")
|
cpp_quote("EXTERN_C HRESULT WINAPI TF_InitSystem(VOID);")
|
||||||
cpp_quote("EXTERN_C HRESULT WINAPI TF_UninitSystem(VOID);")
|
cpp_quote("EXTERN_C HRESULT WINAPI TF_UninitSystem(VOID);")
|
||||||
|
|
Loading…
Reference in a new issue