ReactOS 0.4.16-dev-533-gc7d1aa3
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 1296 of file msutb.cpp.

Constructor & Destructor Documentation

◆ CTipbarThread()

CTipbarThread::CTipbarThread ( CTipbarWnd pTipbarWnd)

Definition at line 5730 of file msutb.cpp.

5731{
5732 m_pTipbarWnd = pTipbarWnd;
5733 m_dwThreadId = 0;
5735 m_cRefs = 1;
5736}
DWORD m_dwThreadId
Definition: msutb.cpp:1304
CTipbarWnd * m_pTipbarWnd
Definition: msutb.cpp:1299
ITfLangBarItemMgr * m_pLangBarItemMgr
Definition: msutb.cpp:1300
LONG m_cRefs
Definition: msutb.cpp:1311
#define NULL
Definition: types.h:112

◆ ~CTipbarThread()

CTipbarThread::~CTipbarThread ( )
virtual

Definition at line 5738 of file msutb.cpp.

5739{
5740 if (m_pTipbarWnd)
5741 {
5742 RemoveUIObjs();
5744 }
5745
5746 _UninitItemList(1);
5747
5749 {
5752 }
5753}
HRESULT _UninitItemList(BOOL bUnAdvise)
Definition: msutb.cpp:5773
void RemoveUIObjs()
Definition: msutb.cpp:5860
void CleanUpThreadPointer(CTipbarThread *pThread, BOOL bRemove)
Definition: msutb.cpp:5084
ULONG Release()

Member Function Documentation

◆ _AddRef()

LONG CTipbarThread::_AddRef ( )
inline

Definition at line 1340 of file msutb.cpp.

1340{ return ++m_cRefs; }

Referenced by AddUIObjs().

◆ _Release()

LONG CTipbarThread::_Release ( )

Definition at line 5968 of file msutb.cpp.

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

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

◆ _UnadviseItemsSink()

HRESULT CTipbarThread::_UnadviseItemsSink ( )

Definition at line 5978 of file msutb.cpp.

5979{
5980 if (!m_pLangBarItemMgr)
5981 return E_FAIL;
5982
5983 DWORD *pdwCoolkies = new(cicNoThrow) DWORD[m_UIObjects.size()];
5984 if (!pdwCoolkies)
5985 return E_OUTOFMEMORY;
5986
5987 const size_t cItems = m_UIObjects.size();
5988 for (size_t iItem = 0; iItem < cItems; ++iItem)
5989 {
5990 CTipbarItem* pItem = m_UIObjects[iItem];
5991 if (pItem)
5992 pdwCoolkies[iItem] = pItem->m_dwCookie;
5993 }
5994
5995 HRESULT hr = m_pLangBarItemMgr->UnadviseItemsSink((LONG)cItems, pdwCoolkies);
5996
5997 delete[] pdwCoolkies;
5998
5999 return hr;
6000}
#define cicNoThrow
Definition: cicbase.h:34
DWORD m_dwCookie
Definition: msutb.cpp:1363
CicArray< CTipbarItem * > m_UIObjects
Definition: msutb.cpp:1301
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 5773 of file msutb.cpp.

5774{
5775 for (size_t iItem = 0; iItem < m_UIObjects.size(); ++iItem)
5776 {
5777 CTipbarItem* pItem = m_UIObjects[iItem];
5778 if (pItem)
5779 pItem->m_dwItemFlags |= 0x10;
5780 }
5781
5782 HRESULT hr = S_OK;
5783 if (bUnAdvise)
5784 {
5787 }
5788
5789 for (size_t iItem = 0; iItem < m_UIObjects.size(); ++iItem)
5790 {
5791 CTipbarItem* pItem = m_UIObjects[iItem];
5792 if (pItem)
5793 {
5794 if (m_pTipbarWnd)
5796
5797 pItem->ClearConnections();
5798
5799 if (m_pTipbarWnd)
5800 pItem->OnUnknown50();
5801 else
5802 pItem->OnUnknown51();
5803
5804 pItem->OnUnknown59();
5805 pItem->OnUnknown42();
5806 }
5807 }
5808
5810
5812
5813 return hr;
5814}
STDMETHOD() OnUnknown42()
Definition: msutb.cpp:1401
void ClearConnections()
Definition: msutb.cpp:6155
STDMETHOD() OnUnknown50()
Definition: msutb.cpp:1411
DWORD m_dwItemFlags
Definition: msutb.cpp:1370
STDMETHOD() OnUnknown51()
Definition: msutb.cpp:1412
STDMETHOD() OnUnknown47(CUIFWindow *pWindow)
Definition: msutb.cpp:1408
void RemoveAllSeparators()
Definition: msutb.cpp:5826
HRESULT _UnadviseItemsSink()
Definition: msutb.cpp:5978
CUIFWindow * GetWindow()
Definition: msutb.cpp:1511
void clear()
Definition: cicarray.h:36
#define S_OK
Definition: intsafe.h:52
LONG MyWaitForInputIdle(DWORD dwThreadId, DWORD dwMilliseconds)
Definition: msutb.cpp:4951
DWORD WINAPI GetCurrentThreadId(void)
Definition: thread.c:459

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

◆ AddAllSeparators()

void CTipbarThread::AddAllSeparators ( )

Definition at line 5816 of file msutb.cpp.

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

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

◆ AddUIObjs()

void CTipbarThread::AddUIObjs ( )

Definition at line 5841 of file msutb.cpp.

5842{
5843 _AddRef();
5844
5845 for (size_t iItem = 0; iItem < m_UIObjects.size(); ++iItem)
5846 {
5847 CTipbarItem* pItem = m_UIObjects[iItem];
5848 if (pItem && (pItem->m_dwItemFlags & 0x8))
5849 {
5851 }
5852 }
5853
5855 MyMoveWnd(0, 0);
5856
5857 _Release();
5858}
STDMETHOD() OnUnknown46(CUIFWindow *pWindow)
Definition: msutb.cpp:1407
void MyMoveWnd(LONG xDelta, LONG yDelta)
Definition: msutb.cpp:6002
LONG _Release()
Definition: msutb.cpp:5968
void AddAllSeparators()
Definition: msutb.cpp:5816
LONG _AddRef()
Definition: msutb.cpp:1340

◆ CallOnUpdateHandler()

HRESULT CTipbarThread::CallOnUpdateHandler ( )
inline

@unimplemented

Definition at line 1350 of file msutb.cpp.

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

◆ GetItem()

CTipbarItem * CTipbarThread::GetItem ( REFCLSID  rclsid)

Definition at line 5873 of file msutb.cpp.

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

◆ GetTextSize()

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

Definition at line 5884 of file msutb.cpp.

5885{
5887
5888 HGDIOBJ hFontOld = NULL;
5889
5890 HDC hDC = ::GetDC(hWnd);
5892 {
5894 if (hFont)
5895 hFontOld = ::SelectObject(hDC, hFont);
5896 INT cch = ::SysStringLen(bstr);
5897 ::GetTextExtentPoint32W(hDC, bstr, cch, pSize);
5898 if (hFontOld)
5899 ::SelectObject(hDC, hFontOld);
5900 }
5901 else
5902 {
5903 CUIFTheme theme;
5904 theme.m_iPartId = 1;
5905 theme.m_iStateId = 0;
5906 theme.m_pszClassList = L"TOOLBAR";
5907
5908 HFONT hFont = NULL;
5909
5911 {
5912 LOGFONTW lf;
5913 if (SUCCEEDED(::GetThemeFont(theme.m_hTheme, NULL, theme.m_iPartId, 0, 210, &lf)))
5914 {
5916 if (hFont)
5917 hFontOld = ::SelectObject(hDC, hFont);
5918 }
5919
5920 RECT rc;
5921 INT cch = ::SysStringLen(bstr);
5922 ::GetThemeTextExtent(theme.m_hTheme, hDC, theme.m_iPartId, 0, bstr, cch, 0, NULL, &rc);
5923
5924 pSize->cx = rc.right;
5925 pSize->cy = rc.bottom;
5926 }
5927
5928 if (hFontOld)
5929 ::SelectObject(hDC, hFontOld);
5930 if (hFont)
5932 }
5933
5935}
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
pKey DeleteObject()
#define SUCCEEDED(hr)
Definition: intsafe.h:50
#define FAILED(hr)
Definition: intsafe.h:51
static HDC
Definition: imagelist.c:88
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: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 5755 of file msutb.cpp.

5756{
5759 return E_FAIL;
5760 if (m_dwFlags1 & 0x8)
5761 return S_OK;
5764 &dwThreadId);
5765}
DWORD m_dwFlags2
Definition: msutb.cpp:1306
DWORD m_dwFlags1
Definition: msutb.cpp:1305
DWORD m_dwFlags3
Definition: msutb.cpp:1309
ITfLangBarMgr_P * m_pLangBarMgr
Definition: msutb.cpp:1478
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 5768 of file msutb.cpp.

5769{
5770 return E_NOTIMPL;
5771}

◆ IsDirtyItem()

DWORD CTipbarThread::IsDirtyItem ( )

Definition at line 5937 of file msutb.cpp.

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

◆ IsFocusThread()

BOOL CTipbarThread::IsFocusThread ( )

Definition at line 5949 of file msutb.cpp.

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

◆ IsVertical()

BOOL CTipbarThread::IsVertical ( )

Definition at line 5956 of file msutb.cpp.

5957{
5958 if (!m_pTipbarWnd)
5959 return FALSE;
5961}
DWORD m_dwTipbarWndFlags
Definition: msutb.cpp:1468
@ TIPBAR_VERTICAL
Definition: msutb.cpp:1437

Referenced by MyMoveWnd().

◆ LocateItems()

void CTipbarThread::LocateItems ( )

@unimplemented

Definition at line 5964 of file msutb.cpp.

5965{
5966}

Referenced by CTipbarItem::AddRemoveMeToUI().

◆ MyMoveWnd()

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

Definition at line 6002 of file msutb.cpp.

6003{
6004 if (!m_pTipbarWnd || (m_pTipbarWnd->m_pFocusThread != this))
6005 return;
6006
6007 RECT Rect, rcWorkArea;
6008 m_pTipbarWnd->GetRect(&Rect);
6009 POINT pt = { Rect.left, Rect.top };
6010 cicGetWorkAreaRect(pt, &rcWorkArea);
6011
6013
6014 LONG X0 = Rect.left + xDelta, Y0 = Rect.top + yDelta;
6015 if (m_pTipbarWnd->m_dwTipbarWndFlags & 0x1000)
6016 {
6018 {
6019 X0 = rcWorkArea.right - (3 * m_pTipbarWnd->m_ButtonWidth +
6021 Y0 = 0;
6022 }
6023 else
6024 {
6025 m_pTipbarWnd->m_dwTipbarWndFlags &= ~0x1000;
6026 }
6027 }
6028
6029 if (IsVertical())
6030 {
6034 }
6035 else
6036 {
6040 }
6041
6042 SIZE frameSize = { 0, 0 };
6045
6048}
void cicGetWorkAreaRect(POINT pt, LPRECT prc)
Definition: cicuif.cpp:5340
BOOL IsVertical()
Definition: msutb.cpp:5956
BOOL CheckExcludeCaptionButtonMode(LPRECT prc1, LPCRECT prc2)
Definition: msutb.cpp:4595
INT GetTipbarHeight()
Definition: msutb.cpp:4449
LONG m_ButtonWidth
Definition: msutb.cpp:1469
void LocateCtrlButtons()
@unimplemented
Definition: msutb.cpp:4486
CUIFWndFrame * m_pWndFrame
Definition: msutb.cpp:1462
INT m_cyDlgFrameX2
Definition: msutb.cpp:1475
void SetMoveRect(INT X, INT Y, INT nWidth, INT nHeight)
Definition: msutb.cpp:4787
BOOL AutoAdjustDeskBandSize()
Definition: msutb.cpp:4460
INT m_cxDlgFrameX2
Definition: msutb.cpp:1474
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 5826 of file msutb.cpp.

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

Referenced by _UninitItemList(), and RemoveUIObjs().

◆ RemoveUIObjs()

void CTipbarThread::RemoveUIObjs ( )

Definition at line 5860 of file msutb.cpp.

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

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

◆ SetFocus()

BOOL CTipbarThread::SetFocus ( CTipbarBalloonItem *  pTarget)
inline

@unimplemented

Definition at line 1344 of file msutb.cpp.

1345 {
1346 return FALSE;
1347 }

Referenced by CTipbarWnd::SetFocusThread().

Friends And Related Function Documentation

◆ CTipbarItem

friend class CTipbarItem
friend

Definition at line 1313 of file msutb.cpp.

◆ CTipbarWnd

friend class CTipbarWnd
friend

Definition at line 1312 of file msutb.cpp.

Member Data Documentation

◆ m_cRefs

LONG CTipbarThread::m_cRefs
protected

Definition at line 1311 of file msutb.cpp.

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

◆ m_cxGrip

INT CTipbarThread::m_cxGrip
protected

Definition at line 1307 of file msutb.cpp.

Referenced by MyMoveWnd().

◆ m_cyGrip

INT CTipbarThread::m_cyGrip
protected

Definition at line 1308 of file msutb.cpp.

Referenced by MyMoveWnd().

◆ m_dwFlags1

DWORD CTipbarThread::m_dwFlags1
protected

Definition at line 1305 of file msutb.cpp.

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

◆ m_dwFlags2

DWORD CTipbarThread::m_dwFlags2
protected

Definition at line 1306 of file msutb.cpp.

Referenced by Init().

◆ m_dwFlags3

DWORD CTipbarThread::m_dwFlags3
protected

Definition at line 1309 of file msutb.cpp.

Referenced by Init().

◆ m_dwThreadId

◆ m_dwUnknown32

DWORD CTipbarThread::m_dwUnknown32
protected

Definition at line 1303 of file msutb.cpp.

◆ m_dwUnknown34

DWORD CTipbarThread::m_dwUnknown34
protected

◆ m_pLangBarItemMgr

ITfLangBarItemMgr* CTipbarThread::m_pLangBarItemMgr
protected

Definition at line 1300 of file msutb.cpp.

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

◆ m_pTipbarWnd

◆ m_Separators

CicArray<CUIFObject*> CTipbarThread::m_Separators
protected

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