ReactOS 0.4.15-dev-7998-gdb93cb1
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 1301 of file msutb.cpp.

Constructor & Destructor Documentation

◆ CTipbarThread()

CTipbarThread::CTipbarThread ( CTipbarWnd pTipbarWnd)

Definition at line 5735 of file msutb.cpp.

5736{
5737 m_pTipbarWnd = pTipbarWnd;
5738 m_dwThreadId = 0;
5740 m_cRefs = 1;
5741}
DWORD m_dwThreadId
Definition: msutb.cpp:1309
CTipbarWnd * m_pTipbarWnd
Definition: msutb.cpp:1304
ITfLangBarItemMgr * m_pLangBarItemMgr
Definition: msutb.cpp:1305
LONG m_cRefs
Definition: msutb.cpp:1316
#define NULL
Definition: types.h:112

◆ ~CTipbarThread()

CTipbarThread::~CTipbarThread ( )
virtual

Definition at line 5743 of file msutb.cpp.

5744{
5745 if (m_pTipbarWnd)
5746 {
5747 RemoveUIObjs();
5749 }
5750
5751 _UninitItemList(1);
5752
5754 {
5757 }
5758}
HRESULT _UninitItemList(BOOL bUnAdvise)
Definition: msutb.cpp:5778
void RemoveUIObjs()
Definition: msutb.cpp:5865
void CleanUpThreadPointer(CTipbarThread *pThread, BOOL bRemove)
Definition: msutb.cpp:5089
ULONG Release()

Member Function Documentation

◆ _AddRef()

LONG CTipbarThread::_AddRef ( )
inline

Definition at line 1345 of file msutb.cpp.

1345{ return ++m_cRefs; }

Referenced by AddUIObjs().

◆ _Release()

LONG CTipbarThread::_Release ( )

Definition at line 5973 of file msutb.cpp.

5974{
5975 if (--m_cRefs == 0)
5976 {
5977 delete this;
5978 return 0;
5979 }
5980 return m_cRefs;
5981}

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

◆ _UnadviseItemsSink()

HRESULT CTipbarThread::_UnadviseItemsSink ( )

Definition at line 5983 of file msutb.cpp.

5984{
5985 if (!m_pLangBarItemMgr)
5986 return E_FAIL;
5987
5988 DWORD *pdwCoolkies = new(cicNoThrow) DWORD[m_UIObjects.size()];
5989 if (!pdwCoolkies)
5990 return E_OUTOFMEMORY;
5991
5992 const size_t cItems = m_UIObjects.size();
5993 for (size_t iItem = 0; iItem < cItems; ++iItem)
5994 {
5995 CTipbarItem* pItem = m_UIObjects[iItem];
5996 if (pItem)
5997 pdwCoolkies[iItem] = pItem->m_dwCookie;
5998 }
5999
6000 HRESULT hr = m_pLangBarItemMgr->UnadviseItemsSink((LONG)cItems, pdwCoolkies);
6001
6002 delete[] pdwCoolkies;
6003
6004 return hr;
6005}
#define cicNoThrow
Definition: cicbase.h:34
DWORD m_dwCookie
Definition: msutb.cpp:1368
CicArray< CTipbarItem * > m_UIObjects
Definition: msutb.cpp:1306
size_t size() const
Definition: cicarray.h:34
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define E_FAIL
Definition: ddrawi.h:102
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
HRESULT hr
Definition: shlfolder.c:183

Referenced by _UninitItemList().

◆ _UninitItemList()

HRESULT CTipbarThread::_UninitItemList ( BOOL  bUnAdvise)

Definition at line 5778 of file msutb.cpp.

5779{
5780 for (size_t iItem = 0; iItem < m_UIObjects.size(); ++iItem)
5781 {
5782 CTipbarItem* pItem = m_UIObjects[iItem];
5783 if (pItem)
5784 pItem->m_dwItemFlags |= 0x10;
5785 }
5786
5787 HRESULT hr = S_OK;
5788 if (bUnAdvise)
5789 {
5792 }
5793
5794 for (size_t iItem = 0; iItem < m_UIObjects.size(); ++iItem)
5795 {
5796 CTipbarItem* pItem = m_UIObjects[iItem];
5797 if (pItem)
5798 {
5799 if (m_pTipbarWnd)
5801
5802 pItem->ClearConnections();
5803
5804 if (m_pTipbarWnd)
5805 pItem->OnUnknown50();
5806 else
5807 pItem->OnUnknown51();
5808
5809 pItem->OnUnknown59();
5810 pItem->OnUnknown42();
5811 }
5812 }
5813
5815
5817
5818 return hr;
5819}
STDMETHOD() OnUnknown42()
Definition: msutb.cpp:1406
void ClearConnections()
Definition: msutb.cpp:6160
STDMETHOD() OnUnknown50()
Definition: msutb.cpp:1416
DWORD m_dwItemFlags
Definition: msutb.cpp:1375
STDMETHOD() OnUnknown51()
Definition: msutb.cpp:1417
STDMETHOD() OnUnknown47(CUIFWindow *pWindow)
Definition: msutb.cpp:1413
void RemoveAllSeparators()
Definition: msutb.cpp:5831
HRESULT _UnadviseItemsSink()
Definition: msutb.cpp:5983
CUIFWindow * GetWindow()
Definition: msutb.cpp:1516
void clear()
Definition: cicarray.h:36
#define S_OK
Definition: intsafe.h:52
LONG MyWaitForInputIdle(DWORD dwThreadId, DWORD dwMilliseconds)
Definition: msutb.cpp:4956
DWORD WINAPI GetCurrentThreadId(void)
Definition: thread.c:459

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

◆ AddAllSeparators()

void CTipbarThread::AddAllSeparators ( )

Definition at line 5821 of file msutb.cpp.

5822{
5823 for (size_t iItem = 0; iItem < m_Separators.size(); ++iItem)
5824 {
5825 CUIFObject *pItem = m_Separators[iItem];
5826 if (pItem)
5827 m_pTipbarWnd->AddUIObj(pItem);
5828 }
5829}
CicArray< CUIFObject * > m_Separators
Definition: msutb.cpp:1307

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

◆ AddUIObjs()

void CTipbarThread::AddUIObjs ( )

Definition at line 5846 of file msutb.cpp.

5847{
5848 _AddRef();
5849
5850 for (size_t iItem = 0; iItem < m_UIObjects.size(); ++iItem)
5851 {
5852 CTipbarItem* pItem = m_UIObjects[iItem];
5853 if (pItem && (pItem->m_dwItemFlags & 0x8))
5854 {
5856 }
5857 }
5858
5860 MyMoveWnd(0, 0);
5861
5862 _Release();
5863}
STDMETHOD() OnUnknown46(CUIFWindow *pWindow)
Definition: msutb.cpp:1412
void MyMoveWnd(LONG xDelta, LONG yDelta)
Definition: msutb.cpp:6007
LONG _Release()
Definition: msutb.cpp:5973
void AddAllSeparators()
Definition: msutb.cpp:5821
LONG _AddRef()
Definition: msutb.cpp:1345

◆ CallOnUpdateHandler()

HRESULT CTipbarThread::CallOnUpdateHandler ( )
inline

@unimplemented

Definition at line 1355 of file msutb.cpp.

1356 {
1357 return E_NOTIMPL;
1358 }
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ GetItem()

CTipbarItem * CTipbarThread::GetItem ( REFCLSID  rclsid)

Definition at line 5878 of file msutb.cpp.

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

◆ GetTextSize()

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

Definition at line 5889 of file msutb.cpp.

5890{
5892
5893 HGDIOBJ hFontOld = NULL;
5894
5895 HDC hDC = ::GetDC(hWnd);
5897 {
5899 if (hFont)
5900 hFontOld = ::SelectObject(hDC, hFont);
5901 INT cch = ::SysStringLen(bstr);
5902 ::GetTextExtentPoint32W(hDC, bstr, cch, pSize);
5903 if (hFontOld)
5904 ::SelectObject(hDC, hFontOld);
5905 }
5906 else
5907 {
5908 CUIFTheme theme;
5909 theme.m_iPartId = 1;
5910 theme.m_iStateId = 0;
5911 theme.m_pszClassList = L"TOOLBAR";
5912
5913 HFONT hFont = NULL;
5914
5916 {
5917 LOGFONTW lf;
5918 if (SUCCEEDED(::GetThemeFont(theme.m_hTheme, NULL, theme.m_iPartId, 0, 210, &lf)))
5919 {
5921 if (hFont)
5922 hFontOld = ::SelectObject(hDC, hFont);
5923 }
5924
5925 RECT rc;
5926 INT cch = ::SysStringLen(bstr);
5927 ::GetThemeTextExtent(theme.m_hTheme, hDC, theme.m_iPartId, 0, bstr, cch, 0, NULL, &rc);
5928
5929 pSize->cx = rc.right;
5930 pSize->cy = rc.bottom;
5931 }
5932
5933 if (hFontOld)
5934 ::SelectObject(hDC, hFontOld);
5935 if (hFont)
5937 }
5938
5940}
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:1809
HRESULT WINAPI GetThemeFont(HTHEME hTheme, HDC hdc, int iPartId, int iStateId, int iPropId, LOGFONTW *pFont)
Definition: property.c:108
pKey DeleteObject()
#define SUCCEEDED(hr)
Definition: intsafe.h:50
#define FAILED(hr)
Definition: intsafe.h:51
static HDC
Definition: imagelist.c:92
static DWORD DWORD void LPSTR DWORD cch
Definition: str.c:202
static DWORD *static HFONT(WINAPI *pCreateFontIndirectExA)(const ENUMLOGFONTEXDVA *)
#define L(x)
Definition: ntvdm.h:50
UINT WINAPI SysStringLen(BSTR str)
Definition: oleaut.c:196
LONG right
Definition: windef.h:308
LONG bottom
Definition: windef.h:309
LONG cx
Definition: windef.h:334
LONG cy
Definition: windef.h:335
int32_t INT
Definition: typedefs.h:58
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
Definition: dc.c:1539
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 5760 of file msutb.cpp.

5761{
5764 return E_FAIL;
5765 if (m_dwFlags1 & 0x8)
5766 return S_OK;
5769 &dwThreadId);
5770}
DWORD m_dwFlags2
Definition: msutb.cpp:1311
DWORD m_dwFlags1
Definition: msutb.cpp:1310
DWORD m_dwFlags3
Definition: msutb.cpp:1314
ITfLangBarMgr_P * m_pLangBarMgr
Definition: msutb.cpp:1483
DWORD dwThreadId
Definition: fdebug.c:31
HRESULT GetThreadLangBarItemMgr([in] DWORD dwThreadId, [out] ITfLangBarItemMgr **pplbie, [out] DWORD *pdwThreadid)
EXTERN_C BOOL WINAPI TF_GetThreadFlags(_In_ DWORD dwThreadId, _Out_ LPDWORD pdwFlags1, _Out_ LPDWORD pdwFlags2, _Out_ LPDWORD pdwFlags3)

◆ InitItemList()

HRESULT CTipbarThread::InitItemList ( )

@unimplemented

Definition at line 5773 of file msutb.cpp.

5774{
5775 return E_NOTIMPL;
5776}

◆ IsDirtyItem()

DWORD CTipbarThread::IsDirtyItem ( )

Definition at line 5942 of file msutb.cpp.

5943{
5944 DWORD dwDirty = 0;
5945 for (size_t iItem = 0; iItem < m_UIObjects.size(); ++iItem)
5946 {
5947 CTipbarItem* pItem = m_UIObjects[iItem];
5948 if (pItem)
5949 dwDirty |= pItem->m_dwDirty;
5950 }
5951 return dwDirty;
5952}
DWORD m_dwDirty
Definition: msutb.cpp:1376

◆ IsFocusThread()

BOOL CTipbarThread::IsFocusThread ( )

Definition at line 5954 of file msutb.cpp.

5955{
5956 if (!m_pTipbarWnd)
5957 return FALSE;
5958 return this == m_pTipbarWnd->m_pFocusThread;
5959}
CTipbarThread * m_pFocusThread
Definition: msutb.cpp:1469
#define FALSE
Definition: types.h:117

◆ IsVertical()

BOOL CTipbarThread::IsVertical ( )

Definition at line 5961 of file msutb.cpp.

5962{
5963 if (!m_pTipbarWnd)
5964 return FALSE;
5966}
DWORD m_dwTipbarWndFlags
Definition: msutb.cpp:1473
@ TIPBAR_VERTICAL
Definition: msutb.cpp:1442

Referenced by MyMoveWnd().

◆ LocateItems()

void CTipbarThread::LocateItems ( )

@unimplemented

Definition at line 5969 of file msutb.cpp.

5970{
5971}

Referenced by CTipbarItem::AddRemoveMeToUI().

◆ MyMoveWnd()

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

Definition at line 6007 of file msutb.cpp.

6008{
6009 if (!m_pTipbarWnd || (m_pTipbarWnd->m_pFocusThread != this))
6010 return;
6011
6012 RECT Rect, rcWorkArea;
6013 m_pTipbarWnd->GetRect(&Rect);
6014 POINT pt = { Rect.left, Rect.top };
6015 cicGetWorkAreaRect(pt, &rcWorkArea);
6016
6018
6019 LONG X0 = Rect.left + xDelta, Y0 = Rect.top + yDelta;
6020 if (m_pTipbarWnd->m_dwTipbarWndFlags & 0x1000)
6021 {
6023 {
6024 X0 = rcWorkArea.right - (3 * m_pTipbarWnd->m_ButtonWidth +
6026 Y0 = 0;
6027 }
6028 else
6029 {
6030 m_pTipbarWnd->m_dwTipbarWndFlags &= ~0x1000;
6031 }
6032 }
6033
6034 if (IsVertical())
6035 {
6039 }
6040 else
6041 {
6045 }
6046
6047 SIZE frameSize = { 0, 0 };
6050
6053}
void cicGetWorkAreaRect(POINT pt, LPRECT prc)
Definition: cicuif.cpp:5340
BOOL IsVertical()
Definition: msutb.cpp:5961
BOOL CheckExcludeCaptionButtonMode(LPRECT prc1, LPCRECT prc2)
Definition: msutb.cpp:4600
INT GetTipbarHeight()
Definition: msutb.cpp:4454
LONG m_ButtonWidth
Definition: msutb.cpp:1474
void LocateCtrlButtons()
@unimplemented
Definition: msutb.cpp:4491
CUIFWndFrame * m_pWndFrame
Definition: msutb.cpp:1467
INT m_cyDlgFrameX2
Definition: msutb.cpp:1480
void SetMoveRect(INT X, INT Y, INT nWidth, INT nHeight)
Definition: msutb.cpp:4792
BOOL AutoAdjustDeskBandSize()
Definition: msutb.cpp:4465
INT m_cxDlgFrameX2
Definition: msutb.cpp:1479
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 5831 of file msutb.cpp.

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

Referenced by _UninitItemList(), and RemoveUIObjs().

◆ RemoveUIObjs()

void CTipbarThread::RemoveUIObjs ( )

Definition at line 5865 of file msutb.cpp.

5866{
5867 for (size_t iItem = 0; iItem < m_UIObjects.size(); ++iItem)
5868 {
5869 CTipbarItem* pItem = m_UIObjects[iItem];
5870 if (pItem)
5871 {
5873 }
5874 }
5876}

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

◆ SetFocus()

BOOL CTipbarThread::SetFocus ( CTipbarBalloonItem *  pTarget)
inline

@unimplemented

Definition at line 1349 of file msutb.cpp.

1350 {
1351 return FALSE;
1352 }

Referenced by CTipbarWnd::SetFocusThread().

Friends And Related Function Documentation

◆ CTipbarItem

friend class CTipbarItem
friend

Definition at line 1318 of file msutb.cpp.

◆ CTipbarWnd

friend class CTipbarWnd
friend

Definition at line 1317 of file msutb.cpp.

Member Data Documentation

◆ m_cRefs

LONG CTipbarThread::m_cRefs
protected

Definition at line 1316 of file msutb.cpp.

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

◆ m_cxGrip

INT CTipbarThread::m_cxGrip
protected

Definition at line 1312 of file msutb.cpp.

Referenced by MyMoveWnd().

◆ m_cyGrip

INT CTipbarThread::m_cyGrip
protected

Definition at line 1313 of file msutb.cpp.

Referenced by MyMoveWnd().

◆ m_dwFlags1

DWORD CTipbarThread::m_dwFlags1
protected

Definition at line 1310 of file msutb.cpp.

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

◆ m_dwFlags2

DWORD CTipbarThread::m_dwFlags2
protected

Definition at line 1311 of file msutb.cpp.

Referenced by Init().

◆ m_dwFlags3

DWORD CTipbarThread::m_dwFlags3
protected

Definition at line 1314 of file msutb.cpp.

Referenced by Init().

◆ m_dwThreadId

◆ m_dwUnknown32

DWORD CTipbarThread::m_dwUnknown32
protected

Definition at line 1308 of file msutb.cpp.

◆ m_dwUnknown34

DWORD CTipbarThread::m_dwUnknown34
protected

◆ m_pLangBarItemMgr

ITfLangBarItemMgr* CTipbarThread::m_pLangBarItemMgr
protected

Definition at line 1305 of file msutb.cpp.

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

◆ m_pTipbarWnd

◆ m_Separators

CicArray<CUIFObject*> CTipbarThread::m_Separators
protected

Definition at line 1307 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: