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

Public Member Functions

 CTrayIconWnd ()
 
 ~CTrayIconWnd ()
 
HWND CreateWnd ()
 
void DestroyWnd ()
 
BOOL SetMainIcon (HKL hKL)
 
BOOL SetIcon (REFGUID rguid, DWORD dwUnknown24, HICON hIcon, LPCWSTR psz)
 
void RemoveAllIcon (DWORD dwFlags)
 
void RemoveUnusedIcons (int unknown)
 @unimplemented
 
CButtonIconItem * FindIconItem (REFGUID rguid)
 
BOOL FindTrayEtc ()
 
HWND GetNotifyWnd ()
 
BOOL OnIconMessage (UINT uMsg, WPARAM wParam, LPARAM lParam)
 @implemented
 
void CallOnDelayMsg ()
 

Static Public Member Functions

static BOOL RegisterClass ()
 
static CTrayIconWnd * GetThis (HWND hWnd)
 
static void SetThis (HWND hWnd, LPCREATESTRUCT pCS)
 

Static Protected Member Functions

static BOOL CALLBACK EnumChildWndProc (HWND hWnd, LPARAM lParam)
 
static LRESULT CALLBACK _WndProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 

Protected Attributes

DWORD m_dwUnknown20
 
BOOL m_bBusy
 
UINT m_uCallbackMessage
 
UINT m_uMsg
 
HWND m_hWnd
 
DWORD m_dwUnknown21 [2]
 
HWND m_hTrayWnd
 
HWND m_hNotifyWnd
 
DWORD m_dwTrayWndThreadId
 
DWORD m_dwUnknown22
 
HWND m_hwndProgman
 
DWORD m_dwProgmanThreadId
 
CMainIconItem * m_pMainIconItem
 
CicArray< CButtonIconItem * > m_Items
 
UINT m_uCallbackMsg
 
UINT m_uNotifyIconID
 

Friends

class CTipbarWnd
 

Detailed Description

Definition at line 1096 of file msutb.cpp.

Constructor & Destructor Documentation

◆ CTrayIconWnd()

CTrayIconWnd::CTrayIconWnd ( )

Definition at line 3189 of file msutb.cpp.

3190{
3191 m_uCallbackMsg = WM_USER + 0x1000;
3192 m_uNotifyIconID = 0x1000;
3193}
UINT m_uCallbackMsg
Definition: msutb.cpp:1113
UINT m_uNotifyIconID
Definition: msutb.cpp:1114
#define WM_USER
Definition: winuser.h:1923

◆ ~CTrayIconWnd()

CTrayIconWnd::~CTrayIconWnd ( )

Definition at line 3195 of file msutb.cpp.

3196{
3197 for (size_t iItem = 0; iItem < m_Items.size(); ++iItem)
3198 {
3199 auto& pItem = m_Items[iItem];
3200 if (pItem)
3201 {
3202 delete pItem;
3203 pItem = NULL;
3204 }
3205 }
3206}
CicArray< CButtonIconItem * > m_Items
Definition: msutb.cpp:1112
size_t size() const
Definition: cicarray.h:34
#define NULL
Definition: types.h:112

Member Function Documentation

◆ _WndProc()

LRESULT CALLBACK CTrayIconWnd::_WndProc ( HWND  hWnd,
UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam 
)
staticprotected

Definition at line 3423 of file msutb.cpp.

3424{
3425 CTrayIconWnd *pThis;
3426 switch (uMsg)
3427 {
3428 case WM_CREATE:
3430 break;
3431 case WM_DESTROY:
3433 break;
3434 case WM_TIMER:
3435 if (wParam == 100)
3436 {
3437 ::KillTimer(hWnd, 100);
3438 pThis = CTrayIconWnd::GetThis(hWnd);
3439 if (pThis)
3440 pThis->CallOnDelayMsg();
3441 }
3442 break;
3443 default:
3444 {
3445 if (uMsg < WM_USER)
3446 return ::DefWindowProc(hWnd, uMsg, wParam, lParam);
3447 pThis = CTrayIconWnd::GetThis(hWnd);
3448 if (pThis && pThis->OnIconMessage(uMsg, wParam, lParam))
3449 break;
3450 return ::DefWindowProc(hWnd, uMsg, wParam, lParam);
3451 }
3452 }
3453 return 0;
3454}
HWND hWnd
Definition: settings.c:17
static CTrayIconWnd * GetThis(HWND hWnd)
Definition: msutb.cpp:3409
void CallOnDelayMsg()
Definition: msutb.cpp:3208
static void SetThis(HWND hWnd, LPCREATESTRUCT pCS)
Definition: msutb.cpp:3414
BOOL OnIconMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
@implemented
Definition: msutb.cpp:3290
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
#define GWL_USERDATA
Definition: winuser.h:872
#define WM_CREATE
Definition: winuser.h:1636
#define WM_TIMER
Definition: winuser.h:1770
#define WM_DESTROY
Definition: winuser.h:1637
BOOL WINAPI KillTimer(_In_opt_ HWND, _In_ UINT_PTR)
#define SetWindowLongPtr
Definition: treelist.c:70

Referenced by RegisterClass().

◆ CallOnDelayMsg()

void CTrayIconWnd::CallOnDelayMsg ( )

Definition at line 3208 of file msutb.cpp.

3209{
3210 for (size_t iItem = 0; iItem < m_Items.size(); ++iItem)
3211 {
3212 auto pItem = m_Items[iItem];
3213 if (pItem && m_uCallbackMessage == pItem->m_uCallbackMessage)
3214 {
3215 pItem->OnDelayMsg(m_uMsg);
3216 break;
3217 }
3218 }
3219}
UINT m_uCallbackMessage
Definition: msutb.cpp:1101
UINT m_uMsg
Definition: msutb.cpp:1102

Referenced by _WndProc().

◆ CreateWnd()

HWND CTrayIconWnd::CreateWnd ( )

Definition at line 3221 of file msutb.cpp.

3222{
3223 m_hWnd = ::CreateWindowEx(0, TEXT("CTrayIconWndClass"), NULL, WS_DISABLED,
3224 0, 0, 0, 0, NULL, NULL, g_hInst, this);
3225 FindTrayEtc();
3226
3228 if (m_pMainIconItem)
3229 {
3232 }
3233
3234 return m_hWnd;
3235}
#define cicNoThrow
Definition: cicbase.h:49
BOOL Init(HWND hWnd)
@implemented
Definition: msutb.cpp:3162
HWND m_hWnd
Definition: msutb.cpp:1103
BOOL FindTrayEtc()
Definition: msutb.cpp:3267
CMainIconItem * m_pMainIconItem
Definition: msutb.cpp:1111
BOOL Add(const T_ITEM &item)
Definition: cicarray.h:60
#define TEXT(s)
Definition: k32.h:28
HINSTANCE g_hInst
Definition: msutb.cpp:29
#define WS_DISABLED
Definition: pedump.c:621
#define CreateWindowEx
Definition: winuser.h:5921

◆ DestroyWnd()

void CTrayIconWnd::DestroyWnd ( )

Definition at line 3237 of file msutb.cpp.

3238{
3240 m_hWnd = NULL;
3241}
BOOL WINAPI DestroyWindow(_In_ HWND)

◆ EnumChildWndProc()

BOOL CALLBACK CTrayIconWnd::EnumChildWndProc ( HWND  hWnd,
LPARAM  lParam 
)
staticprotected

Definition at line 3243 of file msutb.cpp.

3244{
3245 CTrayIconWnd *pWnd = (CTrayIconWnd *)lParam;
3246
3247 TCHAR ClassName[60];
3248 ::GetClassName(hWnd, ClassName, _countof(ClassName));
3249 if (lstrcmp(ClassName, TEXT("TrayNotifyWnd")) != 0)
3250 return TRUE;
3251
3252 pWnd->m_hNotifyWnd = hWnd;
3253 return FALSE;
3254}
HWND m_hNotifyWnd
Definition: msutb.cpp:1106
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
char TCHAR
Definition: tchar.h:1402
#define GetClassName
Definition: winuser.h:5949
#define _countof(array)
Definition: sndvol32.h:70
#define lstrcmp
Definition: winbase.h:3595

Referenced by FindTrayEtc().

◆ FindIconItem()

CButtonIconItem * CTrayIconWnd::FindIconItem ( REFGUID  rguid)

Definition at line 3256 of file msutb.cpp.

3257{
3258 for (size_t iItem = 0; iItem < m_Items.size(); ++iItem)
3259 {
3260 auto pItem = m_Items[iItem];
3261 if (IsEqualGUID(rguid, pItem->m_guid))
3262 return pItem;
3263 }
3264 return NULL;
3265}
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147

Referenced by SetIcon().

◆ FindTrayEtc()

BOOL CTrayIconWnd::FindTrayEtc ( )

Definition at line 3267 of file msutb.cpp.

3268{
3269 m_hTrayWnd = ::FindWindow(TEXT("Shell_TrayWnd"), NULL);
3270 if (!m_hTrayWnd)
3271 return FALSE;
3272
3274 if (!m_hNotifyWnd)
3275 return FALSE;
3277 m_hwndProgman = FindWindow(TEXT("Progman"), NULL);
3279 return TRUE;
3280}
HWND m_hwndProgman
Definition: msutb.cpp:1109
DWORD m_dwTrayWndThreadId
Definition: msutb.cpp:1107
static BOOL CALLBACK EnumChildWndProc(HWND hWnd, LPARAM lParam)
Definition: msutb.cpp:3243
DWORD m_dwProgmanThreadId
Definition: msutb.cpp:1110
HWND m_hTrayWnd
Definition: msutb.cpp:1105
LONG_PTR LPARAM
Definition: minwindef.h:175
#define FindWindow
Definition: winuser.h:5943
BOOL WINAPI EnumChildWindows(_In_opt_ HWND, _In_ WNDENUMPROC, _In_ LPARAM)
DWORD WINAPI GetWindowThreadProcessId(HWND hWnd, PDWORD lpdwProcessId)

Referenced by CreateWnd(), and GetNotifyWnd().

◆ GetNotifyWnd()

HWND CTrayIconWnd::GetNotifyWnd ( )

Definition at line 3282 of file msutb.cpp.

3283{
3285 FindTrayEtc();
3286 return m_hNotifyWnd;
3287}
BOOL WINAPI IsWindow(_In_opt_ HWND)

Referenced by CTrayIconItem::UpdateMenuRectPoint().

◆ GetThis()

CTrayIconWnd * CTrayIconWnd::GetThis ( HWND  hWnd)
static

Definition at line 3409 of file msutb.cpp.

3410{
3412}
#define GetWindowLongPtr
Definition: treelist.c:73

Referenced by _WndProc().

◆ OnIconMessage()

BOOL CTrayIconWnd::OnIconMessage ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam 
)

@implemented

Definition at line 3290 of file msutb.cpp.

3291{
3292 if (g_pTipbarWnd)
3294
3295 for (size_t iItem = 0; iItem < m_Items.size(); ++iItem)
3296 {
3297 auto *pItem = m_Items[iItem];
3298 if (pItem)
3299 {
3300 if (uMsg == pItem->m_uCallbackMessage)
3301 {
3302 pItem->OnMsg(wParam, lParam);
3303 return TRUE;
3304 }
3305 }
3306 }
3307 return FALSE;
3308}
HRESULT AttachFocusThread()
Definition: msutb.cpp:5064
CTipbarWnd * g_pTipbarWnd
Definition: msutb.cpp:99

Referenced by _WndProc().

◆ RegisterClass()

BOOL CTrayIconWnd::RegisterClass ( )
static

Definition at line 3310 of file msutb.cpp.

3311{
3312 WNDCLASSEX wc = { sizeof(wc) };
3314 wc.hInstance = g_hInst;
3317 wc.lpszClassName = TEXT("CTrayIconWndClass");
3318 ::RegisterClassEx(&wc);
3319 return TRUE;
3320}
static LRESULT CALLBACK _WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: msutb.cpp:3423
LPCSTR LPCTSTR
Definition: ms-dtyp.idl:130
#define CS_VREDRAW
Definition: winuser.h:666
#define CS_HREDRAW
Definition: winuser.h:661
#define IDC_ARROW
Definition: winuser.h:695
#define RegisterClassEx
Definition: winuser.h:6003
#define LoadCursor
Definition: winuser.h:5978
HINSTANCE hInstance
Definition: winuser.h:3314
HCURSOR hCursor
Definition: winuser.h:3316
UINT style
Definition: winuser.h:3310
WNDPROC lpfnWndProc
Definition: winuser.h:3311
LPCSTR lpszClassName
Definition: winuser.h:3319

Referenced by ProcessAttach().

◆ RemoveAllIcon()

void CTrayIconWnd::RemoveAllIcon ( DWORD  dwFlags)

Definition at line 3322 of file msutb.cpp.

3323{
3324 for (size_t iItem = 0; iItem < m_Items.size(); ++iItem)
3325 {
3326 auto pItem = m_Items[iItem];
3327 if (dwFlags & 0x1)
3328 {
3329 if (IsEqualGUID(pItem->m_guid, GUID_LBI_INATITEM) ||
3330 IsEqualGUID(pItem->m_guid, GUID_LBI_CTRL))
3331 {
3332 continue;
3333 }
3334 }
3335
3336 if (dwFlags & 0x2)
3337 {
3338 if (IsEqualGUID(pItem->m_guid, GUID_TFCAT_TIP_KEYBOARD))
3339 continue;
3340 }
3341
3342 if (pItem->m_uNotifyIconID < 0x1000)
3343 continue;
3344
3345 pItem->RemoveIcon();
3346 }
3347}
EXTERN_C const GUID GUID_TFCAT_TIP_KEYBOARD
Definition: msctf.idl:81
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD dwFlags
Definition: netsh.h:141

Referenced by CTipbarWnd::SetShowTrayIcon().

◆ RemoveUnusedIcons()

void CTrayIconWnd::RemoveUnusedIcons ( int  unknown)

@unimplemented

Definition at line 3350 of file msutb.cpp.

3351{
3352 //FIXME
3353}

◆ SetIcon()

BOOL CTrayIconWnd::SetIcon ( REFGUID  rguid,
DWORD  dwUnknown24,
HICON  hIcon,
LPCWSTR  psz 
)

Definition at line 3355 of file msutb.cpp.

3356{
3357 CButtonIconItem *pItem = FindIconItem(rguid);
3358 if (!pItem)
3359 {
3360 if (!hIcon)
3361 return FALSE;
3362 pItem = new(cicNoThrow) CButtonIconItem(this, dwUnknown24);
3363 if (!pItem)
3364 return FALSE;
3365
3366 pItem->_Init(m_hWnd, m_uCallbackMsg, m_uNotifyIconID, rguid);
3367 m_uCallbackMsg += 2;
3369 m_Items.Add(pItem);
3370 }
3371
3372 if (!hIcon)
3373 return pItem->RemoveIcon();
3374
3375 return pItem->SetIcon(hIcon, psz);
3376}
BOOL _Init(HWND hWnd, UINT uCallbackMessage, UINT uNotifyIconID, const GUID &rguid)
Definition: msutb.cpp:3056
BOOL RemoveIcon()
Definition: msutb.cpp:3069
CButtonIconItem * FindIconItem(REFGUID rguid)
Definition: msutb.cpp:3256
HICON hIcon
Definition: msconfig.c:44

◆ SetMainIcon()

BOOL CTrayIconWnd::SetMainIcon ( HKL  hKL)

Definition at line 3378 of file msutb.cpp.

3379{
3380 if (!hKL)
3381 {
3384 return TRUE;
3385 }
3386
3387 if (hKL != m_pMainIconItem->m_hKL)
3388 {
3389 WCHAR szText[64];
3390 HICON hIcon = TF_GetLangIcon(LOWORD(hKL), szText, _countof(szText));
3391 if (hIcon)
3392 {
3393 m_pMainIconItem->SetIcon(hIcon, szText);
3395 }
3396 else
3397 {
3400 m_pMainIconItem->SetIcon(hIcon, szText);
3401 }
3402
3403 m_pMainIconItem->m_hKL = hKL;
3404 }
3405
3406 return TRUE;
3407}
#define IDI_MAINICON
Definition: resource.h:3
EXTERN_C HICON WINAPI TF_GetLangIcon(_In_ LANGID LangID, _Out_ PWSTR pszText, _In_ INT cchText)
Definition: utils.cpp:320
#define IDS_RESTORELANGBAR
Definition: resource.h:17
static HICON
Definition: imagelist.c:80
#define LOWORD(l)
Definition: pedump.c:82
short WCHAR
Definition: pedump.c:58
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582
HICON WINAPI LoadIconW(_In_opt_ HINSTANCE hInstance, _In_ LPCWSTR lpIconName)
Definition: cursoricon.c:2444
BOOL WINAPI DestroyIcon(_In_ HICON)
Definition: cursoricon.c:2422
#define LoadStringW
Definition: utils.h:64

Referenced by CTipbarWnd::SetShowTrayIcon().

◆ SetThis()

void CTrayIconWnd::SetThis ( HWND  hWnd,
LPCREATESTRUCT  pCS 
)
static

Definition at line 3414 of file msutb.cpp.

3415{
3416 if (pCS)
3418 else
3419 ::SetWindowLongPtr(hWnd, GWL_USERDATA, 0);
3420}
__int3264 LONG_PTR
Definition: mstsclib_h.h:276
LPVOID lpCreateParams
Definition: winuser.h:3048

Referenced by _WndProc().

Friends And Related Function Documentation

◆ CTipbarWnd

friend class CTipbarWnd
friend

Definition at line 1115 of file msutb.cpp.

Member Data Documentation

◆ m_bBusy

BOOL CTrayIconWnd::m_bBusy
protected

Definition at line 1100 of file msutb.cpp.

◆ m_dwProgmanThreadId

DWORD CTrayIconWnd::m_dwProgmanThreadId
protected

Definition at line 1110 of file msutb.cpp.

Referenced by FindTrayEtc().

◆ m_dwTrayWndThreadId

DWORD CTrayIconWnd::m_dwTrayWndThreadId
protected

◆ m_dwUnknown20

DWORD CTrayIconWnd::m_dwUnknown20
protected

Definition at line 1099 of file msutb.cpp.

◆ m_dwUnknown21

DWORD CTrayIconWnd::m_dwUnknown21[2]
protected

Definition at line 1104 of file msutb.cpp.

◆ m_dwUnknown22

DWORD CTrayIconWnd::m_dwUnknown22
protected

Definition at line 1108 of file msutb.cpp.

◆ m_hNotifyWnd

HWND CTrayIconWnd::m_hNotifyWnd
protected

Definition at line 1106 of file msutb.cpp.

Referenced by EnumChildWndProc(), FindTrayEtc(), and GetNotifyWnd().

◆ m_hTrayWnd

HWND CTrayIconWnd::m_hTrayWnd
protected

Definition at line 1105 of file msutb.cpp.

Referenced by FindTrayEtc().

◆ m_hWnd

HWND CTrayIconWnd::m_hWnd
protected

Definition at line 1103 of file msutb.cpp.

Referenced by CreateWnd(), DestroyWnd(), and SetIcon().

◆ m_hwndProgman

HWND CTrayIconWnd::m_hwndProgman
protected

Definition at line 1109 of file msutb.cpp.

Referenced by FindTrayEtc().

◆ m_Items

CicArray<CButtonIconItem*> CTrayIconWnd::m_Items
protected

◆ m_pMainIconItem

CMainIconItem* CTrayIconWnd::m_pMainIconItem
protected

Definition at line 1111 of file msutb.cpp.

Referenced by CreateWnd(), and SetMainIcon().

◆ m_uCallbackMessage

UINT CTrayIconWnd::m_uCallbackMessage
protected

Definition at line 1101 of file msutb.cpp.

Referenced by CallOnDelayMsg().

◆ m_uCallbackMsg

UINT CTrayIconWnd::m_uCallbackMsg
protected

Definition at line 1113 of file msutb.cpp.

Referenced by CTrayIconWnd(), and SetIcon().

◆ m_uMsg

UINT CTrayIconWnd::m_uMsg
protected

Definition at line 1102 of file msutb.cpp.

Referenced by CallOnDelayMsg().

◆ m_uNotifyIconID

UINT CTrayIconWnd::m_uNotifyIconID
protected

Definition at line 1114 of file msutb.cpp.

Referenced by CTrayIconWnd(), and SetIcon().


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