ReactOS 0.4.16-dev-2498-g8632030
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 ()
 
CTipbarItemGetItem (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

CTipbarWndm_pTipbarWnd
 
ITfLangBarItemMgrm_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:46
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:573
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 {
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
static DWORD *static HFONT(WINAPI *pCreateFontIndirectExA)(const ENUMLOGFONTEXDVA *)
UINT WINAPI SysStringLen(BSTR str)
Definition: oleaut.c:196
_In_ UINT _In_ UINT cch
Definition: shellapi.h:432
LONG right
Definition: windef.h:108
LONG bottom
Definition: windef.h:109
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)
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
HDC WINAPI GetDC(_In_opt_ HWND)

◆ 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: