https://git.reactos.org/?p=reactos.git;a=commitdiff;h=f8b62abf16abd912ae0ff5c8fdd7ed67faa89d24

commit f8b62abf16abd912ae0ff5c8fdd7ed67faa89d24
Author:     Katayama Hirofumi MZ <katayama.hirofumi...@gmail.com>
AuthorDate: Fri Feb 9 15:04:45 2024 +0900
Commit:     GitHub <nore...@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;
+};

Reply via email to