ReactOS 0.4.17-dev-966-gf06eace
CTipbarThread Class Reference
Collaboration diagram for CTipbarThread:

Public Member Functions

 CTipbarThread (CTipbarWnd *pTipbarWnd)
 
virtual ~CTipbarThread ()
 
HRESULT Init (DWORD dwThreadId)
 
HRESULT InitItemList ()
 @unimplemented
 
HRESULT _UninitItemList (BOOL bUnAdvise)
 
DWORD IsDirtyItem ()
 
BOOL IsFocusThread ()
 
BOOL IsVertical ()
 
void AddAllSeparators ()
 
void RemoveAllSeparators ()
 
void AddUIObjs ()
 
void RemoveUIObjs ()
 
CTipbarItem * GetItem (REFCLSID rclsid)
 
void GetTextSize (BSTR bstr, LPSIZE pSize)
 
void LocateItems ()
 @unimplemented
 
void MyMoveWnd (LONG xDelta, LONG yDelta)
 
HRESULT _UnadviseItemsSink ()
 
LONG _AddRef ()
 
LONG _Release ()
 
BOOL SetFocus (CTipbarBalloonItem *pTarget)
 @unimplemented
 
HRESULT CallOnUpdateHandler ()
 @unimplemented
 

Protected Attributes

CTipbarWnd * m_pTipbarWnd
 
ITfLangBarItemMgr * m_pLangBarItemMgr
 
CicArray< CTipbarItem * > m_UIObjects
 
CicArray< CUIFObject * > m_Separators
 
DWORD m_dwUnknown32
 
DWORD m_dwThreadId
 
DWORD m_dwFlags1
 
DWORD m_dwFlags2
 
INT m_cxGrip
 
INT m_cyGrip
 
DWORD m_dwFlags3
 
DWORD m_dwUnknown34
 
LONG m_cRefs
 

Friends

class CTipbarWnd
 
class CTipbarItem
 

Detailed Description

Definition at line 1297 of file msutb.cpp.

Constructor & Destructor Documentation

◆ CTipbarThread()

CTipbarThread::CTipbarThread ( CTipbarWnd *  pTipbarWnd)

Definition at line 5731 of file msutb.cpp.

5732{
5733 m_pTipbarWnd = pTipbarWnd;
5734 m_dwThreadId = 0;
5736 m_cRefs = 1;
5737}
DWORD m_dwThreadId
Definition: msutb.cpp:1305
CTipbarWnd * m_pTipbarWnd
Definition: msutb.cpp:1300
ITfLangBarItemMgr * m_pLangBarItemMgr
Definition: msutb.cpp:1301
LONG m_cRefs
Definition: msutb.cpp:1312
#define NULL
Definition: types.h:112

◆ ~CTipbarThread()

CTipbarThread::~CTipbarThread ( )
virtual

Definition at line 5739 of file msutb.cpp.

5740{
5741 if (m_pTipbarWnd)
5742 {
5743 RemoveUIObjs();
5745 }
5746
5747 _UninitItemList(1);
5748
5750 {
5753 }
5754}
HRESULT _UninitItemList(BOOL bUnAdvise)
Definition: msutb.cpp:5774
void RemoveUIObjs()
Definition: msutb.cpp:5861
void CleanUpThreadPointer(CTipbarThread *pThread, BOOL bRemove)
Definition: msutb.cpp:5085
ULONG Release()

Member Function Documentation

◆ _AddRef()

LONG CTipbarThread::_AddRef ( )
inline

Definition at line 1341 of file msutb.cpp.

1341{ return ++m_cRefs; }

Referenced by AddUIObjs().

◆ _Release()

LONG CTipbarThread::_Release ( )

Definition at line 5969 of file msutb.cpp.

5970{
5971 if (--m_cRefs == 0)
5972 {
5973 delete this;
5974 return 0;
5975 }
5976 return m_cRefs;
5977}

Referenced by AddUIObjs(), CTipbarWnd::OnThreadTerminateInternal(), and CTipbarWnd::UnInit().

◆ _UnadviseItemsSink()

HRESULT CTipbarThread::_UnadviseItemsSink ( )

Definition at line 5979 of file msutb.cpp.

5980{
5981 if (!m_pLangBarItemMgr)
5982 return E_FAIL;
5983
5984 DWORD *pdwCoolkies = new(cicNoThrow) DWORD[m_UIObjects.size()];
5985 if (!pdwCoolkies)
5986 return E_OUTOFMEMORY;
5987
5988 const size_t cItems = m_UIObjects.size();
5989 for (size_t iItem = 0; iItem < cItems; ++iItem)
5990 {
5991 CTipbarItem* pItem = m_UIObjects[iItem];
5992 if (pItem)
5993 pdwCoolkies[iItem] = pItem->m_dwCookie;
5994 }
5995
5996 HRESULT hr = m_pLangBarItemMgr->UnadviseItemsSink((LONG)cItems, pdwCoolkies);
5997
5998 delete[] pdwCoolkies;
5999
6000 return hr;
6001}
#define cicNoThrow
Definition: cicbase.h:49
DWORD m_dwCookie
Definition: msutb.cpp:1364
CicArray< CTipbarItem * > m_UIObjects
Definition: msutb.cpp:1302
size_t size() const
Definition: cicarray.h:34
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define E_FAIL
Definition: ddrawi.h:102
HRESULT hr
Definition: delayimp.cpp:582
unsigned long DWORD
Definition: ntddk_ex.h:95
HRESULT UnadviseItemsSink([in] ULONG ulCount, [in, size_is(ulCount)] DWORD *pdwCookie)
long LONG
Definition: pedump.c:60

Referenced by _UninitItemList().

◆ _UninitItemList()

HRESULT CTipbarThread::_UninitItemList ( BOOL  bUnAdvise)

Definition at line 5774 of file msutb.cpp.

5775{
5776 for (size_t iItem = 0; iItem < m_UIObjects.size(); ++iItem)
5777 {
5778 CTipbarItem* pItem = m_UIObjects[iItem];
5779 if (pItem)
5780 pItem->m_dwItemFlags |= 0x10;
5781 }
5782
5783 HRESULT hr = S_OK;
5784 if (bUnAdvise)
5785 {
5788 }
5789
5790 for (size_t iItem = 0; iItem < m_UIObjects.size(); ++iItem)
5791 {
5792 CTipbarItem* pItem = m_UIObjects[iItem];
5793 if (pItem)
5794 {
5795 if (m_pTipbarWnd)
5797
5798 pItem->ClearConnections();
5799
5800 if (m_pTipbarWnd)
5801 pItem->OnUnknown50();
5802 else
5803 pItem->OnUnknown51();
5804
5805 pItem->OnUnknown59();
5806 pItem->OnUnknown42();
5807 }
5808 }
5809
5811
5813
5814 return hr;
5815}
STDMETHOD() OnUnknown42()
Definition: msutb.cpp:1402
void ClearConnections()
Definition: msutb.cpp:6156
STDMETHOD() OnUnknown50()
Definition: msutb.cpp:1412
DWORD m_dwItemFlags
Definition: msutb.cpp:1371
STDMETHOD() OnUnknown51()
Definition: msutb.cpp:1413
STDMETHOD() OnUnknown47(CUIFWindow *pWindow)
Definition: msutb.cpp:1409
void RemoveAllSeparators()
Definition: msutb.cpp:5827
HRESULT _UnadviseItemsSink()
Definition: msutb.cpp:5979
CUIFWindow * GetWindow()
Definition: msutb.cpp:1512
void clear()
Definition: cicarray.h:36
#define S_OK
Definition: intsafe.h:52
LONG MyWaitForInputIdle(DWORD dwThreadId, DWORD dwMilliseconds)
Definition: msutb.cpp:4952
DWORD WINAPI GetCurrentThreadId(void)
Definition: thread.c:459

Referenced by CTipbarWnd::OnThreadTerminateInternal(), CTipbarWnd::UnInit(), and ~CTipbarThread().

◆ AddAllSeparators()

void CTipbarThread::AddAllSeparators ( )

Definition at line 5817 of file msutb.cpp.

5818{
5819 for (size_t iItem = 0; iItem < m_Separators.size(); ++iItem)
5820 {
5821 CUIFObject *pItem = m_Separators[iItem];
5822 if (pItem)
5823 m_pTipbarWnd->AddUIObj(pItem);
5824 }
5825}
CicArray< CUIFObject * > m_Separators
Definition: msutb.cpp:1303

Referenced by CTipbarItem::AddRemoveMeToUI(), and AddUIObjs().

◆ AddUIObjs()

void CTipbarThread::AddUIObjs ( )

Definition at line 5842 of file msutb.cpp.

5843{
5844 _AddRef();
5845
5846 for (size_t iItem = 0; iItem < m_UIObjects.size(); ++iItem)
5847 {
5848 CTipbarItem* pItem = m_UIObjects[iItem];
5849 if (pItem && (pItem->m_dwItemFlags & 0x8))
5850 {
5852 }
5853 }
5854
5856 MyMoveWnd(0, 0);
5857
5858 _Release();
5859}
STDMETHOD() OnUnknown46(CUIFWindow *pWindow)
Definition: msutb.cpp:1408
void MyMoveWnd(LONG xDelta, LONG yDelta)
Definition: msutb.cpp:6003
LONG _Release()
Definition: msutb.cpp:5969
void AddAllSeparators()
Definition: msutb.cpp:5817
LONG _AddRef()
Definition: msutb.cpp:1341

◆ CallOnUpdateHandler()

HRESULT CTipbarThread::CallOnUpdateHandler ( )
inline

@unimplemented

Definition at line 1351 of file msutb.cpp.

1352 {
1353 return E_NOTIMPL;
1354 }
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ GetItem()

CTipbarItem * CTipbarThread::GetItem ( REFCLSID  rclsid)

Definition at line 5874 of file msutb.cpp.

5875{
5876 for (size_t iItem = 0; iItem < m_UIObjects.size(); ++iItem)
5877 {
5878 auto *pItem = m_UIObjects[iItem];
5879 if (pItem && IsEqualCLSID(pItem->m_ItemInfo.guidItem, rclsid))
5880 return pItem;
5881 }
5882 return NULL;
5883}
#define IsEqualCLSID(rclsid1, rclsid2)
Definition: guiddef.h:96

◆ GetTextSize()

void CTipbarThread::GetTextSize ( BSTR  bstr,
LPSIZE  pSize 
)

Definition at line 5885 of file msutb.cpp.

5886{
5888
5889 HGDIOBJ hFontOld = NULL;
5890
5891 HDC hDC = ::GetDC(hWnd);
5893 {
5894 HFONT hFont = m_pTipbarWnd->m_hFont;
5895 if (hFont)
5896 hFontOld = ::SelectObject(hDC, hFont);
5897 INT cch = ::SysStringLen(bstr);
5898 ::GetTextExtentPoint32W(hDC, bstr, cch, pSize);
5899 if (hFontOld)
5900 ::SelectObject(hDC, hFontOld);
5901 }
5902 else
5903 {
5904 CUIFTheme theme;
5905 theme.m_iPartId = 1;
5906 theme.m_iStateId = 0;
5907 theme.m_pszClassList = L"TOOLBAR";
5908
5909 HFONT hFont = NULL;
5910
5912 {
5913 LOGFONTW lf;
5914 if (SUCCEEDED(::GetThemeFont(theme.m_hTheme, NULL, theme.m_iPartId, 0, 210, &lf)))
5915 {
5917 if (hFont)
5918 hFontOld = ::SelectObject(hDC, hFont);
5919 }
5920
5921 RECT rc;
5922 INT cch = ::SysStringLen(bstr);
5923 ::GetThemeTextExtent(theme.m_hTheme, hDC, theme.m_iPartId, 0, bstr, cch, 0, NULL, &rc);
5924
5925 pSize->cx = rc.right;
5926 pSize->cy = rc.bottom;
5927 }
5928
5929 if (hFontOld)
5930 ::SelectObject(hDC, hFontOld);
5931 if (hFont)
5933 }
5934
5936}
static HDC hDC
Definition: 3dtext.c:33
HWND hWnd
Definition: settings.c:17
HFONT hFont
Definition: main.c:53
HFONT m_hFont
Definition: cicuif.h:192
LPCWSTR m_pszClassList
Definition: cicuif.h:90
HRESULT InternalOpenThemeData(HWND hWnd)
Definition: cicuif.cpp:66
INT m_iStateId
Definition: cicuif.h:92
INT m_iPartId
Definition: cicuif.h:91
HTHEME m_hTheme
Definition: cicuif.h:93
HRESULT EnsureThemeData(HWND hWnd)
Definition: cicuif.cpp:77
HRESULT WINAPI GetThemeTextExtent(HTHEME hTheme, HDC hdc, int iPartId, int iStateId, LPCWSTR pszText, int iCharCount, DWORD dwTextFlags, const RECT *pBoundingRect, RECT *pExtentRect)
Definition: draw.c:1853
HRESULT WINAPI GetThemeFont(HTHEME hTheme, HDC hdc, int iPartId, int iStateId, int iPropId, LOGFONTW *pFont)
Definition: property.c:108
#define L(x)
Definition: resources.c:13
pKey DeleteObject()
#define SUCCEEDED(hr)
Definition: intsafe.h:50
#define FAILED(hr)
Definition: intsafe.h:51
static HDC
Definition: imagelist.c:88
UINT WINAPI SysStringLen(BSTR str)
Definition: oleaut.c:198
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
HDC WINAPI GetDC(_In_opt_ HWND)
_In_ UINT _In_ UINT cch
Definition: shellapi.h:432
Definition: dcommon.idl:28
long bottom
Definition: dcommon.idl:29
long right
Definition: dcommon.idl:29
LONG cx
Definition: windef.h:134
LONG cy
Definition: windef.h:135
int32_t INT
Definition: typedefs.h:58
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
Definition: dc.c:1546
HFONT WINAPI CreateFontIndirectW(_In_ const LOGFONTW *)
BOOL WINAPI GetTextExtentPoint32W(_In_ HDC hdc, _In_reads_(c) LPCWSTR lpString, _In_ int c, _Out_ LPSIZE psizl)

◆ Init()

HRESULT CTipbarThread::Init ( DWORD  dwThreadId)

Definition at line 5756 of file msutb.cpp.

5757{
5760 return E_FAIL;
5761 if (m_dwFlags1 & 0x8)
5762 return S_OK;
5765 &dwThreadId);
5766}
EXTERN_C BOOL WINAPI TF_GetThreadFlags(_In_ DWORD dwThreadId, _Out_ LPDWORD pdwFlags1, _Out_ LPDWORD pdwFlags2, _Out_ LPDWORD pdwFlags3)
Definition: utils.cpp:239
DWORD m_dwFlags2
Definition: msutb.cpp:1307
DWORD m_dwFlags1
Definition: msutb.cpp:1306
DWORD m_dwFlags3
Definition: msutb.cpp:1310
ITfLangBarMgr_P * m_pLangBarMgr
Definition: msutb.cpp:1479
DWORD dwThreadId
Definition: fdebug.c:31
HRESULT GetThreadLangBarItemMgr([in] DWORD dwThreadId, [out] ITfLangBarItemMgr **pplbie, [out] DWORD *pdwThreadid)

◆ InitItemList()

HRESULT CTipbarThread::InitItemList ( )

@unimplemented

Definition at line 5769 of file msutb.cpp.

5770{
5771 return E_NOTIMPL;
5772}

◆ IsDirtyItem()

DWORD CTipbarThread::IsDirtyItem ( )

Definition at line 5938 of file msutb.cpp.

5939{
5940 DWORD dwDirty = 0;
5941 for (size_t iItem = 0; iItem < m_UIObjects.size(); ++iItem)
5942 {
5943 CTipbarItem* pItem = m_UIObjects[iItem];
5944 if (pItem)
5945 dwDirty |= pItem->m_dwDirty;
5946 }
5947 return dwDirty;
5948}
DWORD m_dwDirty
Definition: msutb.cpp:1372

◆ IsFocusThread()

BOOL CTipbarThread::IsFocusThread ( )

Definition at line 5950 of file msutb.cpp.

5951{
5952 if (!m_pTipbarWnd)
5953 return FALSE;
5954 return this == m_pTipbarWnd->m_pFocusThread;
5955}
CTipbarThread * m_pFocusThread
Definition: msutb.cpp:1465
#define FALSE
Definition: types.h:117

◆ IsVertical()

BOOL CTipbarThread::IsVertical ( )

Definition at line 5957 of file msutb.cpp.

5958{
5959 if (!m_pTipbarWnd)
5960 return FALSE;
5962}
DWORD m_dwTipbarWndFlags
Definition: msutb.cpp:1469
@ TIPBAR_VERTICAL
Definition: msutb.cpp:1438

Referenced by MyMoveWnd().

◆ LocateItems()

void CTipbarThread::LocateItems ( )

@unimplemented

Definition at line 5965 of file msutb.cpp.

5966{
5967}

Referenced by CTipbarItem::AddRemoveMeToUI().

◆ MyMoveWnd()

void CTipbarThread::MyMoveWnd ( LONG  xDelta,
LONG  yDelta 
)

Definition at line 6003 of file msutb.cpp.

6004{
6005 if (!m_pTipbarWnd || (m_pTipbarWnd->m_pFocusThread != this))
6006 return;
6007
6008 RECT Rect, rcWorkArea;
6009 m_pTipbarWnd->GetRect(&Rect);
6010 POINT pt = { Rect.left, Rect.top };
6011 cicGetWorkAreaRect(pt, &rcWorkArea);
6012
6014
6015 LONG X0 = Rect.left + xDelta, Y0 = Rect.top + yDelta;
6016 if (m_pTipbarWnd->m_dwTipbarWndFlags & 0x1000)
6017 {
6019 {
6020 X0 = rcWorkArea.right - (3 * m_pTipbarWnd->m_ButtonWidth +
6022 Y0 = 0;
6023 }
6024 else
6025 {
6026 m_pTipbarWnd->m_dwTipbarWndFlags &= ~0x1000;
6027 }
6028 }
6029
6030 if (IsVertical())
6031 {
6035 }
6036 else
6037 {
6041 }
6042
6043 SIZE frameSize = { 0, 0 };
6046
6049}
void cicGetWorkAreaRect(POINT pt, LPRECT prc)
Definition: cicuif.cpp:5340
BOOL IsVertical()
Definition: msutb.cpp:5957
BOOL CheckExcludeCaptionButtonMode(LPRECT prc1, LPCRECT prc2)
Definition: msutb.cpp:4596
INT GetTipbarHeight()
Definition: msutb.cpp:4450
LONG m_ButtonWidth
Definition: msutb.cpp:1470
void LocateCtrlButtons()
@unimplemented
Definition: msutb.cpp:4487
CUIFWndFrame * m_pWndFrame
Definition: msutb.cpp:1463
INT m_cyDlgFrameX2
Definition: msutb.cpp:1476
void SetMoveRect(INT X, INT Y, INT nWidth, INT nHeight)
Definition: msutb.cpp:4788
BOOL AutoAdjustDeskBandSize()
Definition: msutb.cpp:4461
INT m_cxDlgFrameX2
Definition: msutb.cpp:1475
void GetFrameSize(LPSIZE pSize)
Definition: cicuif.cpp:3649
#define pt(x, y)
Definition: drawing.c:79
GLint GLint GLsizei GLsizei height
Definition: gl.h:1546
GLint GLint GLsizei width
Definition: gl.h:1546
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)

Referenced by AddUIObjs(), and CTipbarWnd::MoveToStub().

◆ RemoveAllSeparators()

void CTipbarThread::RemoveAllSeparators ( )

Definition at line 5827 of file msutb.cpp.

5828{
5829 for (size_t iItem = 0; iItem < m_Separators.size(); ++iItem)
5830 {
5831 CUIFObject *pItem = m_Separators[iItem];
5832 if (pItem)
5833 {
5834 if (m_pTipbarWnd)
5835 m_pTipbarWnd->RemoveUIObj(pItem);
5836 delete pItem;
5837 }
5838 }
5840}

Referenced by _UninitItemList(), and RemoveUIObjs().

◆ RemoveUIObjs()

void CTipbarThread::RemoveUIObjs ( )

Definition at line 5861 of file msutb.cpp.

5862{
5863 for (size_t iItem = 0; iItem < m_UIObjects.size(); ++iItem)
5864 {
5865 CTipbarItem* pItem = m_UIObjects[iItem];
5866 if (pItem)
5867 {
5869 }
5870 }
5872}

Referenced by CTipbarWnd::OnThreadTerminateInternal(), and ~CTipbarThread().

◆ SetFocus()

BOOL CTipbarThread::SetFocus ( CTipbarBalloonItem *  pTarget)
inline

@unimplemented

Definition at line 1345 of file msutb.cpp.

1346 {
1347 return FALSE;
1348 }

Referenced by CTipbarWnd::SetFocusThread().

Friends And Related Function Documentation

◆ CTipbarItem

friend class CTipbarItem
friend

Definition at line 1314 of file msutb.cpp.

◆ CTipbarWnd

friend class CTipbarWnd
friend

Definition at line 1313 of file msutb.cpp.

Member Data Documentation

◆ m_cRefs

LONG CTipbarThread::m_cRefs
protected

Definition at line 1312 of file msutb.cpp.

Referenced by _AddRef(), _Release(), and CTipbarThread().

◆ m_cxGrip

INT CTipbarThread::m_cxGrip
protected

Definition at line 1308 of file msutb.cpp.

Referenced by MyMoveWnd().

◆ m_cyGrip

INT CTipbarThread::m_cyGrip
protected

Definition at line 1309 of file msutb.cpp.

Referenced by MyMoveWnd().

◆ m_dwFlags1

DWORD CTipbarThread::m_dwFlags1
protected

Definition at line 1306 of file msutb.cpp.

Referenced by CTipbarWnd::AutoAdjustDeskBandSize(), and Init().

◆ m_dwFlags2

DWORD CTipbarThread::m_dwFlags2
protected

Definition at line 1307 of file msutb.cpp.

Referenced by Init().

◆ m_dwFlags3

DWORD CTipbarThread::m_dwFlags3
protected

Definition at line 1310 of file msutb.cpp.

Referenced by Init().

◆ m_dwThreadId

◆ m_dwUnknown32

DWORD CTipbarThread::m_dwUnknown32
protected

Definition at line 1304 of file msutb.cpp.

◆ m_dwUnknown34

DWORD CTipbarThread::m_dwUnknown34
protected

◆ m_pLangBarItemMgr

ITfLangBarItemMgr* CTipbarThread::m_pLangBarItemMgr
protected

Definition at line 1301 of file msutb.cpp.

Referenced by _UnadviseItemsSink(), CTipbarThread(), Init(), and ~CTipbarThread().

◆ m_pTipbarWnd

◆ m_Separators

CicArray<CUIFObject*> CTipbarThread::m_Separators
protected

Definition at line 1303 of file msutb.cpp.

Referenced by AddAllSeparators(), and RemoveAllSeparators().

◆ m_UIObjects

CicArray<CTipbarItem*> CTipbarThread::m_UIObjects
protected

The documentation for this class was generated from the following file: