https://git.reactos.org/?p=reactos.git;a=commitdiff;h=f8b62abf16abd912ae0ff…
commit f8b62abf16abd912ae0ff5c8fdd7ed67faa89d24
Author: Katayama Hirofumi MZ <katayama.hirofumi.mz(a)gmail.com>
AuthorDate: Fri Feb 9 15:04:45 2024 +0900
Commit: GitHub <noreply(a)github.com>
CommitDate: Fri Feb 9 15:04:45 2024 +0900
[MSUTB][SDK] Add CTipbarWnd (stub) (#6465)
Supporting Language Bar...
JIRA issue: CORE-19363
- Add CTipbarWnd class (stub;
empty implementation).
---
dll/win32/msutb/msutb.cpp | 676 +++++++++++++++++++++++++++++++++++-
sdk/include/reactos/cicero/cicutb.h | 5 +
2 files changed, 666 insertions(+), 15 deletions(-)
diff --git a/dll/win32/msutb/msutb.cpp b/dll/win32/msutb/msutb.cpp
index 4424debb8ff..2ca74b357a9 100644
--- a/dll/win32/msutb/msutb.cpp
+++ b/dll/win32/msutb/msutb.cpp
@@ -1166,6 +1166,177 @@ public:
STDMETHOD(GetText)(BSTR *pbstr) override;
};
+/***********************************************************************/
+
+class CTipbarItem;
+class CTipbarThread;
+class CTipbarCtrlButtonHolder;
+class CDeskBand;
+
+class CTipbarWnd
+ : public ITfLangBarEventSink
+ , public ITfLangBarEventSink_P
+ , public CTipbarAccItem
+ , public CUIFWindow
+{
+ DWORD m_dwUnknown19[2];
+ CModalMenu *m_pModalMenu;
+ CTipbarThread *m_pThread;
+ CicArray<GUID*> m_TipbarGUIDArray;
+ DWORD m_dwUnknown20;
+ CUIFWndFrame *m_pWndFrame;
+ CTipbarGripper *m_pTipbarGripper;
+ CTipbarThread *m_pFocusThread;
+ CicArray<CTipbarThread*> m_Threads;
+ CicArray<CTipbarThread*> m_ThreadCreatingList;
+ DWORD m_dwAlphaValue;
+ DWORD m_dwTipbarWndFlags;
+ LONG m_ButtonWidth;
+ DWORD m_dwShowType;
+ DWORD m_dwUnknown21;
+ INT m_cxSmallIcon;
+ INT m_cySmallIcon;
+ INT m_cxDlgFrameX2;
+ INT m_cyDlgFrameX2;
+ HFONT m_hMarlettFont;
+ HFONT m_hTextFont;
+ ITfLangBarMgr *m_pLangBarMgr;
+ DWORD m_dwUnknown23;
+ CTipbarCtrlButtonHolder *m_pTipbarCtrlButtonHolder;
+ DWORD m_dwUnknown23_1[8];
+ CUIFWindow *m_pBalloon;
+ DWORD m_dwChangingThreadId;
+ LONG m_bInCallOn;
+ LONG m_X;
+ LONG m_Y;
+ LONG m_CX;
+ LONG m_CY;
+ CTipbarAccessible *m_pTipbarAccessible;
+ UINT m_nID;
+ MARGINS m_Margins;
+ DWORD m_dwUnknown23_5[4];
+ CTipbarThread *m_pUnknownThread;
+ CDeskBand *m_pDeskBand;
+ CShellWndThread m_ShellWndThread;
+ LONG m_cRefs;
+ friend class CUTBContextMenu;
+ friend class CTipbarGripper;
+
+public:
+ CTipbarWnd(DWORD style);
+ ~CTipbarWnd() override;
+
+ void Init(BOOL bFlag, CDeskBand *pDeskBand);
+ void InitHighContrast();
+ void InitMetrics();
+ void InitThemeMargins();
+ void UnInit();
+
+ BOOL IsFullScreenWindow(HWND hWnd);
+ BOOL IsHKLToSkipRedrawOnNoItem();
+ BOOL IsInItemChangeOrDirty(CTipbarThread *pTarget);
+
+ void AddThreadToThreadCreatingList(CTipbarThread *pThread);
+ void RemoveThredFromThreadCreatingList(CTipbarThread *pTarget);
+
+ void MoveToStub(BOOL bFlag);
+ void RestoreFromStub();
+
+ INT GetCtrlButtonWidth();
+ INT GetGripperWidth();
+ INT GetTipbarHeight();
+ BOOL AutoAdjustDeskBandSize();
+ INT AdjustDeskBandSize(BOOL bFlag);
+ void LocateCtrlButtons();
+ void AdjustPosOnDisplayChange();
+ void SetVertical(BOOL bVertical);
+ void UpdatePosFlags();
+
+ void CancelMenu();
+ BOOL CheckExcludeCaptionButtonMode(LPRECT prc1, LPCRECT prc2);
+ void ClearLBItemList();
+
+ HFONT CreateVerticalFont();
+ void UpdateVerticalFont();
+
+ void ShowOverScreenSizeBalloon();
+ void DestroyOverScreenSizeBalloon();
+ void DestroyWnd();
+
+ HKL GetFocusKeyboardLayout();
+ void KillOnTheadItemChangeTimer();
+
+ UINT_PTR SetTimer(UINT_PTR nIDEvent, UINT uElapse);
+ BOOL KillTimer(UINT_PTR uIDEvent);
+
+ void MoveToTray();
+ void MyClientToScreen(LPPOINT lpPoint, LPRECT prc);
+ void SavePosition();
+ void SetAlpha(BYTE bAlpha, BOOL bFlag);
+ BOOL SetLangBand(BOOL bFlag1, BOOL bFlag2);
+ void SetMoveRect(INT X, INT Y, INT nWidth, INT nHeight);
+ void SetShowText(BOOL bShow);
+ void SetShowTrayIcon(BOOL bShow);
+
+ void ShowContextMenu(POINT pt, LPCRECT prc, BOOL bFlag);
+ void StartBackToAlphaTimer();
+ BOOL StartDoAccDefaultActionTimer(CTipbarItem *pTarget);
+
+ void StartModalInput(ITfLangBarEventSink *pSink, DWORD dwFlags);
+ void StopModalInput(DWORD dwThreadId);
+
+ CTipbarThread *_CreateThread(DWORD dwThreadId);
+ CTipbarThread *_FindThread(DWORD dwThreadId);
+ void EnsureFocusThread();
+ HRESULT SetFocusThread(CTipbarThread *pFocusThread);
+ HRESULT AttachFocusThread();
+ void RestoreLastFocus(DWORD *pdwThreadId, BOOL fPrev);
+ void CleanUpThreadPointer(CTipbarThread *pThread, BOOL bRemove);
+ void TerminateAllThreads(BOOL bFlag);
+
+ // IUnknown methods
+ STDMETHOD(QueryInterface)(REFIID riid, void **ppvObj);
+ STDMETHOD_(ULONG, AddRef)();
+ STDMETHOD_(ULONG, Release)();
+
+ // ITfLangBarEventSink methods
+ STDMETHOD(OnSetFocus)(DWORD dwThreadId) override;
+ STDMETHOD(OnThreadTerminate)(DWORD dwThreadId) override;
+ STDMETHOD(OnThreadItemChange)(DWORD dwThreadId) override;
+ STDMETHOD(OnModalInput)(DWORD dwThreadId, UINT uMsg, WPARAM wParam, LPARAM lParam)
override;
+ STDMETHOD(ShowFloating)(DWORD dwFlags) override;
+ STDMETHOD(GetItemFloatingRect)(DWORD dwThreadId, REFGUID rguid, RECT *prc) override;
+
+ // ITfLangBarEventSink_P methods
+ STDMETHOD(OnLangBarUpdate)(TfLBIClick click, BOOL bFlag) override;
+
+ // CTipbarAccItem methods
+ STDMETHOD_(BSTR, GetAccName)() override;
+ STDMETHOD_(void, GetAccLocation)(LPRECT lprc) override;
+
+ // CUIFWindow methods
+ STDMETHOD_(void, PaintObject)(HDC hDC, LPCRECT prc) override;
+ STDMETHOD_(DWORD, GetWndStyle)() override;
+ STDMETHOD_(void, Move)(INT x, INT y, INT nWidth, INT nHeight) override;
+ STDMETHOD_(void, OnMouseOutFromWindow)(LONG x, LONG y) override;
+ STDMETHOD_(void, OnCreate)(HWND hWnd) override;
+ STDMETHOD_(void, OnDestroy)(HWND hWnd) override;
+ STDMETHOD_(void, OnTimer)(WPARAM wParam) override;
+ STDMETHOD_(void, OnSysColorChange)() override;
+ STDMETHOD_(void, OnEndSession)(HWND hWnd, WPARAM wParam, LPARAM lParam) override;
+ STDMETHOD_(void, OnUser)(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
override;
+ STDMETHOD_(LRESULT, OnWindowPosChanged)(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM
lParam) override;
+ STDMETHOD_(LRESULT, OnWindowPosChanging)(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM
lParam) override;
+ STDMETHOD_(LRESULT, OnShowWindow)(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
override;
+ STDMETHOD_(LRESULT, OnSettingChange)(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM
lParam) override;
+ STDMETHOD_(LRESULT, OnDisplayChange)(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM
lParam) override;
+ STDMETHOD_(HRESULT, OnGetObject)(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
override;
+ STDMETHOD_(BOOL, OnEraseBkGnd)(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
override;
+ STDMETHOD_(void, OnThemeChanged)(HWND hWnd, WPARAM wParam, LPARAM lParam) override;
+ STDMETHOD_(void, UpdateUI)(LPCRECT prc) override;
+ STDMETHOD_(void, HandleMouseMsg)(UINT uMsg, LONG x, LONG y) override;
+};
+
/***********************************************************************
* CUTBLangBarDlg
*/
@@ -2334,12 +2505,8 @@ CUTBContextMenu::CUTBContextMenu(CTipbarWnd *pTipbarWnd)
/// @unimplemented
BOOL CUTBContextMenu::Init()
{
-#if 0 // FIXME: m_pTipbarWnd
m_pTipbarThread = m_pTipbarWnd->m_pFocusThread;
return !!m_pTipbarThread;
-#else
- return TRUE;
-#endif
}
/// @unimplemented
@@ -2347,11 +2514,9 @@ CUTBMenuWnd *CUTBContextMenu::CreateMenuUI(BOOL bFlag)
{
DWORD dwStatus = 0;
-#if 0 // FIXME: m_pTipbarWnd
if (FAILED(m_pTipbarWnd->m_pLangBarMgr->GetShowFloatingStatus(&dwStatus)))
return NULL;
-#endif
-
+
CUTBMenuWnd *pMenuUI = new (cicNoThrow) CUTBMenuWnd(g_hInst, g_dwMenuStyle, 0);
if (!pMenuUI)
return NULL;
@@ -2361,11 +2526,8 @@ CUTBMenuWnd *CUTBContextMenu::CreateMenuUI(BOOL bFlag)
if (dwStatus & (TF_SFT_DESKBAND | TF_SFT_MINIMIZED))
{
CUTBMenuItem *pRestoreLangBar = InsertItem(pMenuUI, ID_RESTORELANGBAR,
IDS_RESTORELANGBAR2);
-#if 0 // FIXME: m_pTipbarWnd
if (pRestoreLangBar && !m_pTipbarWnd->m_dwUnknown20)
pRestoreLangBar->Gray(TRUE);
-#endif
- pRestoreLangBar = pRestoreLangBar;
}
else
{
@@ -2399,11 +2561,8 @@ CUTBMenuWnd *CUTBContextMenu::CreateMenuUI(BOOL bFlag)
}
CUTBMenuItem *pVertical = InsertItem(pMenuUI, ID_VERTICAL, IDS_VERTICAL);
-#if 0 // FIXME: m_pTipbarWnd
if (pVertical)
pVertical->Check(!!(m_pTipbarWnd->m_dwTipbarWndFlags &
0x800000));
-#endif
- pVertical = pVertical;
}
}
@@ -3414,7 +3573,6 @@ CTipbarGripper::CTipbarGripper(CTipbarWnd *pTipbarWnd, LPCRECT prc,
DWORD style)
/// @unimplemented
STDMETHODIMP_(void) CTipbarGripper::OnLButtonUp(LONG x, LONG y)
{
-#if 0 // FIXME: m_pTipbarWnd
m_pTipbarWnd->RestoreFromStub();
APPBARDATA AppBar = { sizeof(AppBar) };
@@ -3430,7 +3588,6 @@ STDMETHODIMP_(void) CTipbarGripper::OnLButtonUp(LONG x, LONG y)
CUIFGripper::OnLButtonUp(x, y);
m_pTipbarWnd->UpdatePosFlags();
-#endif
}
/// @unimplemented
@@ -3450,6 +3607,495 @@ STDMETHODIMP_(BOOL) CTipbarGripper::OnSetCursor(UINT uMsg, LONG x,
LONG y)
return CUIFGripper::OnSetCursor(uMsg, x, y);
}
+/***********************************************************************
+ * CTipbarWnd
+ */
+
+/// @unimplemented
+CTipbarWnd::CTipbarWnd(DWORD style)
+ : CUIFWindow(g_hInst, style)
+{
+}
+
+/// @unimplemented
+CTipbarWnd::~CTipbarWnd()
+{
+}
+
+/// @unimplemented
+void CTipbarWnd::Init(BOOL bFlag, CDeskBand *pDeskBand)
+{
+}
+
+/// @unimplemented
+void CTipbarWnd::InitHighContrast()
+{
+}
+
+/// @unimplemented
+void CTipbarWnd::InitMetrics()
+{
+}
+
+/// @unimplemented
+void CTipbarWnd::InitThemeMargins()
+{
+}
+
+/// @unimplemented
+void CTipbarWnd::UnInit()
+{
+}
+
+/// @unimplemented
+BOOL CTipbarWnd::IsFullScreenWindow(HWND hWnd)
+{
+ return FALSE;
+}
+
+/// @unimplemented
+BOOL CTipbarWnd::IsHKLToSkipRedrawOnNoItem()
+{
+ return FALSE;
+}
+
+/// @unimplemented
+BOOL CTipbarWnd::IsInItemChangeOrDirty(CTipbarThread *pTarget)
+{
+ return FALSE;
+}
+
+/// @unimplemented
+void CTipbarWnd::AddThreadToThreadCreatingList(CTipbarThread *pThread)
+{
+}
+
+/// @unimplemented
+void CTipbarWnd::RemoveThredFromThreadCreatingList(CTipbarThread *pTarget)
+{
+}
+
+/// @unimplemented
+void CTipbarWnd::MoveToStub(BOOL bFlag)
+{
+}
+
+/// @unimplemented
+void CTipbarWnd::RestoreFromStub()
+{
+}
+
+/// @unimplemented
+INT CTipbarWnd::GetCtrlButtonWidth()
+{
+ return 0;
+}
+
+/// @unimplemented
+INT CTipbarWnd::GetGripperWidth()
+{
+ return 0;
+}
+
+/// @unimplemented
+INT CTipbarWnd::GetTipbarHeight()
+{
+ return 0;
+}
+
+/// @unimplemented
+BOOL CTipbarWnd::AutoAdjustDeskBandSize()
+{
+ return FALSE;
+}
+
+/// @unimplemented
+INT CTipbarWnd::AdjustDeskBandSize(BOOL bFlag)
+{
+ return 0;
+}
+
+/// @unimplemented
+void CTipbarWnd::LocateCtrlButtons()
+{
+}
+
+/// @unimplemented
+void CTipbarWnd::AdjustPosOnDisplayChange()
+{
+}
+
+/// @unimplemented
+void CTipbarWnd::SetVertical(BOOL bVertical)
+{
+}
+
+/// @unimplemented
+void CTipbarWnd::UpdatePosFlags()
+{
+}
+
+/// @unimplemented
+void CTipbarWnd::CancelMenu()
+{
+}
+
+/// @unimplemented
+BOOL CTipbarWnd::CheckExcludeCaptionButtonMode(LPRECT prc1, LPCRECT prc2)
+{
+ return FALSE;
+}
+
+/// @unimplemented
+void CTipbarWnd::ClearLBItemList()
+{
+}
+
+/// @unimplemented
+HFONT CTipbarWnd::CreateVerticalFont()
+{
+ return NULL;
+}
+
+/// @unimplemented
+void CTipbarWnd::UpdateVerticalFont()
+{
+}
+
+/// @unimplemented
+void CTipbarWnd::ShowOverScreenSizeBalloon()
+{
+}
+
+/// @unimplemented
+void CTipbarWnd::DestroyOverScreenSizeBalloon()
+{
+}
+
+/// @unimplemented
+void CTipbarWnd::DestroyWnd()
+{
+}
+
+/// @unimplemented
+HKL CTipbarWnd::GetFocusKeyboardLayout()
+{
+ return NULL;
+}
+
+/// @unimplemented
+void CTipbarWnd::KillOnTheadItemChangeTimer()
+{
+}
+
+/// @unimplemented
+UINT_PTR CTipbarWnd::SetTimer(UINT_PTR nIDEvent, UINT uElapse)
+{
+ return 0;
+}
+
+/// @unimplemented
+BOOL CTipbarWnd::KillTimer(UINT_PTR uIDEvent)
+{
+ return FALSE;
+}
+
+/// @unimplemented
+void CTipbarWnd::MoveToTray()
+{
+}
+
+/// @unimplemented
+void CTipbarWnd::MyClientToScreen(LPPOINT lpPoint, LPRECT prc)
+{
+}
+
+/// @unimplemented
+void CTipbarWnd::SavePosition()
+{
+}
+
+/// @unimplemented
+void CTipbarWnd::SetAlpha(BYTE bAlpha, BOOL bFlag)
+{
+}
+
+/// @unimplemented
+BOOL CTipbarWnd::SetLangBand(BOOL bFlag1, BOOL bFlag2)
+{
+ return FALSE;
+}
+
+/// @unimplemented
+void CTipbarWnd::SetMoveRect(INT X, INT Y, INT nWidth, INT nHeight)
+{
+}
+
+/// @unimplemented
+void CTipbarWnd::SetShowText(BOOL bShow)
+{
+}
+
+/// @unimplemented
+void CTipbarWnd::SetShowTrayIcon(BOOL bShow)
+{
+}
+
+/// @unimplemented
+void CTipbarWnd::ShowContextMenu(POINT pt, LPCRECT prc, BOOL bFlag)
+{
+}
+
+/// @unimplemented
+void CTipbarWnd::StartBackToAlphaTimer()
+{
+}
+
+/// @unimplemented
+BOOL CTipbarWnd::StartDoAccDefaultActionTimer(CTipbarItem *pTarget)
+{
+ return FALSE;
+}
+
+/// @unimplemented
+void CTipbarWnd::StartModalInput(ITfLangBarEventSink *pSink, DWORD dwFlags)
+{
+}
+
+/// @unimplemented
+void CTipbarWnd::StopModalInput(DWORD dwThreadId)
+{
+}
+
+/// @unimplemented
+CTipbarThread *CTipbarWnd::_CreateThread(DWORD dwThreadId)
+{
+ return NULL;
+}
+
+/// @unimplemented
+CTipbarThread *CTipbarWnd::_FindThread(DWORD dwThreadId)
+{
+ return NULL;
+}
+
+/// @unimplemented
+void CTipbarWnd::EnsureFocusThread()
+{
+}
+
+/// @unimplemented
+HRESULT CTipbarWnd::SetFocusThread(CTipbarThread *pFocusThread)
+{
+ return E_NOTIMPL;
+}
+
+/// @unimplemented
+HRESULT CTipbarWnd::AttachFocusThread()
+{
+ return E_NOTIMPL;
+}
+
+/// @unimplemented
+void CTipbarWnd::RestoreLastFocus(DWORD *pdwThreadId, BOOL fPrev)
+{
+}
+
+/// @unimplemented
+void CTipbarWnd::CleanUpThreadPointer(CTipbarThread *pThread, BOOL bRemove)
+{
+}
+
+/// @unimplemented
+void CTipbarWnd::TerminateAllThreads(BOOL bFlag)
+{
+}
+
+/// @unimplemented
+STDMETHODIMP CTipbarWnd::QueryInterface(REFIID riid, void **ppvObj)
+{
+ return E_NOTIMPL;
+}
+
+/// @unimplemented
+STDMETHODIMP_(ULONG) CTipbarWnd::AddRef()
+{
+ return 0;
+}
+
+/// @unimplemented
+STDMETHODIMP_(ULONG) CTipbarWnd::Release()
+{
+ return 0;
+}
+
+/// @unimplemented
+STDMETHODIMP CTipbarWnd::OnSetFocus(DWORD dwThreadId)
+{
+ return E_NOTIMPL;
+}
+
+/// @unimplemented
+STDMETHODIMP CTipbarWnd::OnThreadTerminate(DWORD dwThreadId)
+{
+ return E_NOTIMPL;
+}
+
+/// @unimplemented
+STDMETHODIMP CTipbarWnd::OnThreadItemChange(DWORD dwThreadId)
+{
+ return E_NOTIMPL;
+}
+
+/// @unimplemented
+STDMETHODIMP CTipbarWnd::OnModalInput(DWORD dwThreadId, UINT uMsg, WPARAM wParam, LPARAM
lParam)
+{
+ return E_NOTIMPL;
+}
+
+/// @unimplemented
+STDMETHODIMP CTipbarWnd::ShowFloating(DWORD dwFlags)
+{
+ return E_NOTIMPL;
+}
+
+/// @unimplemented
+STDMETHODIMP CTipbarWnd::GetItemFloatingRect(DWORD dwThreadId, REFGUID rguid, RECT *prc)
+{
+ return E_NOTIMPL;
+}
+
+/// @unimplemented
+STDMETHODIMP CTipbarWnd::OnLangBarUpdate(TfLBIClick click, BOOL bFlag)
+{
+ return E_NOTIMPL;
+}
+
+/// @unimplemented
+STDMETHODIMP_(BSTR) CTipbarWnd::GetAccName()
+{
+ return NULL;
+}
+
+/// @unimplemented
+STDMETHODIMP_(void) CTipbarWnd::GetAccLocation(LPRECT lprc)
+{
+}
+
+/// @unimplemented
+STDMETHODIMP_(void) CTipbarWnd::PaintObject(HDC hDC, LPCRECT prc)
+{
+}
+
+/// @unimplemented
+STDMETHODIMP_(DWORD) CTipbarWnd::GetWndStyle()
+{
+ return 0;
+}
+
+/// @unimplemented
+STDMETHODIMP_(void) CTipbarWnd::Move(INT x, INT y, INT nWidth, INT nHeight)
+{
+}
+
+/// @unimplemented
+STDMETHODIMP_(void) CTipbarWnd::OnMouseOutFromWindow(LONG x, LONG y)
+{
+}
+
+/// @unimplemented
+STDMETHODIMP_(void) CTipbarWnd::OnCreate(HWND hWnd)
+{
+}
+
+/// @unimplemented
+STDMETHODIMP_(void) CTipbarWnd::OnDestroy(HWND hWnd)
+{
+}
+
+/// @unimplemented
+STDMETHODIMP_(void) CTipbarWnd::OnTimer(WPARAM wParam)
+{
+}
+
+/// @unimplemented
+STDMETHODIMP_(void) CTipbarWnd::OnSysColorChange()
+{
+}
+
+/// @unimplemented
+STDMETHODIMP_(void) CTipbarWnd::OnEndSession(HWND hWnd, WPARAM wParam, LPARAM lParam)
+{
+}
+
+/// @unimplemented
+STDMETHODIMP_(void) CTipbarWnd::OnUser(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM
lParam)
+{
+}
+
+/// @unimplemented
+STDMETHODIMP_(LRESULT)
+CTipbarWnd::OnWindowPosChanged(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
+{
+ return 0;
+}
+
+/// @unimplemented
+STDMETHODIMP_(LRESULT)
+CTipbarWnd::OnWindowPosChanging(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
+{
+ return 0;
+}
+
+/// @unimplemented
+STDMETHODIMP_(LRESULT)
+CTipbarWnd::OnShowWindow(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
+{
+ return 0;
+}
+
+/// @unimplemented
+STDMETHODIMP_(LRESULT)
+CTipbarWnd::OnSettingChange(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
+{
+ return 0;
+}
+
+/// @unimplemented
+STDMETHODIMP_(LRESULT)
+CTipbarWnd::OnDisplayChange(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
+{
+ return 0;
+}
+
+/// @unimplemented
+STDMETHODIMP_(HRESULT)
+CTipbarWnd::OnGetObject(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
+{
+ return E_NOTIMPL;
+}
+
+/// @unimplemented
+STDMETHODIMP_(BOOL) CTipbarWnd::OnEraseBkGnd(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM
lParam)
+{
+ return FALSE;
+}
+
+/// @unimplemented
+STDMETHODIMP_(void) CTipbarWnd::OnThemeChanged(HWND hWnd, WPARAM wParam, LPARAM lParam)
+{
+}
+
+/// @unimplemented
+STDMETHODIMP_(void) CTipbarWnd::UpdateUI(LPCRECT prc)
+{
+}
+
+/// @unimplemented
+STDMETHODIMP_(void) CTipbarWnd::HandleMouseMsg(UINT uMsg, LONG x, LONG y)
+{
+}
+
/***********************************************************************
* GetLibTls (MSUTB.@)
*
diff --git a/sdk/include/reactos/cicero/cicutb.h b/sdk/include/reactos/cicero/cicutb.h
index 6df17b7c0f2..c58a25db8bb 100644
--- a/sdk/include/reactos/cicero/cicutb.h
+++ b/sdk/include/reactos/cicero/cicutb.h
@@ -18,3 +18,8 @@ EXTERN_C LPVOID WINAPI GetLibTls(VOID);
EXTERN_C BOOL WINAPI GetPopupTipbar(HWND hWnd, BOOL fWinLogon);
EXTERN_C HRESULT WINAPI SetRegisterLangBand(BOOL bRegister);
EXTERN_C VOID WINAPI ClosePopupTipbar(VOID);
+
+struct ITfLangBarEventSink_P : IUnknown
+{
+ STDMETHOD(OnLangBarUpdate)(TfLBIClick click, BOOL bFlag) = 0;
+};