ReactOS 0.4.16-dev-2498-g8632030
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
 
CButtonIconItemFindIconItem (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 CTrayIconWndGetThis (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
 
CMainIconItemm_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 SetWindowLongPtr
Definition: treelist.c:70
#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)

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:46
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
#define _countof(array)
Definition: sndvol32.h:70
#define lstrcmp
Definition: winbase.h:3621
#define GetClassName
Definition: winuser.h:5949
char TCHAR
Definition: xmlstorage.h:189

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
DWORD WINAPI GetWindowThreadProcessId(HWND hWnd, PDWORD lpdwProcessId)
#define FindWindow
Definition: winuser.h:5943
BOOL WINAPI EnumChildWindows(_In_opt_ HWND, _In_ WNDENUMPROC, _In_ LPARAM)

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
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
#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
const CHAR * LPCTSTR
Definition: xmlstorage.h:193

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
#define LoadStringW
Definition: utils.h:64
#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
__wchar_t WCHAR
Definition: xmlstorage.h:180

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: