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

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

◆ ~CTrayIconWnd()

CTrayIconWnd::~CTrayIconWnd ( )

Definition at line 3194 of file msutb.cpp.

3195{
3196 for (size_t iItem = 0; iItem < m_Items.size(); ++iItem)
3197 {
3198 auto& pItem = m_Items[iItem];
3199 if (pItem)
3200 {
3201 delete pItem;
3202 pItem = NULL;
3203 }
3204 }
3205}
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 3422 of file msutb.cpp.

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

Referenced by RegisterClass().

◆ CallOnDelayMsg()

void CTrayIconWnd::CallOnDelayMsg ( )

Definition at line 3207 of file msutb.cpp.

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

Referenced by _WndProc().

◆ CreateWnd()

HWND CTrayIconWnd::CreateWnd ( )

Definition at line 3220 of file msutb.cpp.

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

◆ DestroyWnd()

void CTrayIconWnd::DestroyWnd ( )

Definition at line 3236 of file msutb.cpp.

3237{
3239 m_hWnd = NULL;
3240}
BOOL WINAPI DestroyWindow(_In_ HWND)

◆ EnumChildWndProc()

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

Definition at line 3242 of file msutb.cpp.

3243{
3244 CTrayIconWnd *pWnd = (CTrayIconWnd *)lParam;
3245
3246 TCHAR ClassName[60];
3247 ::GetClassName(hWnd, ClassName, _countof(ClassName));
3248 if (lstrcmp(ClassName, TEXT("TrayNotifyWnd")) != 0)
3249 return TRUE;
3250
3251 pWnd->m_hNotifyWnd = hWnd;
3252 return FALSE;
3253}
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:3897
#define GetClassName
Definition: winuser.h:5795
char TCHAR
Definition: xmlstorage.h:189

Referenced by FindTrayEtc().

◆ FindIconItem()

CButtonIconItem * CTrayIconWnd::FindIconItem ( REFGUID  rguid)

Definition at line 3255 of file msutb.cpp.

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

Referenced by SetIcon().

◆ FindTrayEtc()

BOOL CTrayIconWnd::FindTrayEtc ( )

Definition at line 3266 of file msutb.cpp.

3267{
3268 m_hTrayWnd = ::FindWindow(TEXT("Shell_TrayWnd"), NULL);
3269 if (!m_hTrayWnd)
3270 return FALSE;
3271
3273 if (!m_hNotifyWnd)
3274 return FALSE;
3276 m_hwndProgman = FindWindow(TEXT("Progman"), NULL);
3278 return TRUE;
3279}
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:3242
DWORD m_dwProgmanThreadId
Definition: msutb.cpp:1110
HWND m_hTrayWnd
Definition: msutb.cpp:1105
DWORD WINAPI GetWindowThreadProcessId(HWND hWnd, PDWORD lpdwProcessId)
LONG_PTR LPARAM
Definition: windef.h:208
#define FindWindow
Definition: winuser.h:5789
BOOL WINAPI EnumChildWindows(_In_opt_ HWND, _In_ WNDENUMPROC, _In_ LPARAM)

Referenced by CreateWnd(), and GetNotifyWnd().

◆ GetNotifyWnd()

HWND CTrayIconWnd::GetNotifyWnd ( )

Definition at line 3281 of file msutb.cpp.

3282{
3284 FindTrayEtc();
3285 return m_hNotifyWnd;
3286}
BOOL WINAPI IsWindow(_In_opt_ HWND)

Referenced by CTrayIconItem::UpdateMenuRectPoint().

◆ GetThis()

CTrayIconWnd * CTrayIconWnd::GetThis ( HWND  hWnd)
static

Definition at line 3408 of file msutb.cpp.

3409{
3411}
#define GetWindowLongPtr
Definition: treelist.c:73

Referenced by _WndProc().

◆ OnIconMessage()

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

@implemented

Definition at line 3289 of file msutb.cpp.

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

Referenced by _WndProc().

◆ RegisterClass()

BOOL CTrayIconWnd::RegisterClass ( )
static

Definition at line 3309 of file msutb.cpp.

3310{
3311 WNDCLASSEX wc = { sizeof(wc) };
3313 wc.hInstance = g_hInst;
3316 wc.lpszClassName = TEXT("CTrayIconWndClass");
3317 ::RegisterClassEx(&wc);
3318 return TRUE;
3319}
static LRESULT CALLBACK _WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: msutb.cpp:3422
HINSTANCE hInstance
Definition: winuser.h:3209
HCURSOR hCursor
Definition: winuser.h:3211
UINT style
Definition: winuser.h:3205
WNDPROC lpfnWndProc
Definition: winuser.h:3206
LPCSTR lpszClassName
Definition: winuser.h:3214
#define CS_VREDRAW
Definition: winuser.h:658
#define CS_HREDRAW
Definition: winuser.h:653
#define IDC_ARROW
Definition: winuser.h:687
#define RegisterClassEx
Definition: winuser.h:5849
#define LoadCursor
Definition: winuser.h:5824
const CHAR * LPCTSTR
Definition: xmlstorage.h:193

Referenced by ProcessAttach().

◆ RemoveAllIcon()

void CTrayIconWnd::RemoveAllIcon ( DWORD  dwFlags)

Definition at line 3321 of file msutb.cpp.

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

Referenced by CTipbarWnd::SetShowTrayIcon().

◆ RemoveUnusedIcons()

void CTrayIconWnd::RemoveUnusedIcons ( int  unknown)

@unimplemented

Definition at line 3349 of file msutb.cpp.

3350{
3351 //FIXME
3352}

◆ SetIcon()

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

Definition at line 3354 of file msutb.cpp.

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

◆ SetMainIcon()

BOOL CTrayIconWnd::SetMainIcon ( HKL  hKL)

Definition at line 3377 of file msutb.cpp.

3378{
3379 if (!hKL)
3380 {
3383 return TRUE;
3384 }
3385
3386 if (hKL != m_pMainIconItem->m_hKL)
3387 {
3388 WCHAR szText[64];
3389 HICON hIcon = TF_GetLangIcon(LOWORD(hKL), szText, _countof(szText));
3390 if (hIcon)
3391 {
3392 m_pMainIconItem->SetIcon(hIcon, szText);
3394 }
3395 else
3396 {
3399 m_pMainIconItem->SetIcon(hIcon, szText);
3400 }
3401
3402 m_pMainIconItem->m_hKL = hKL;
3403 }
3404
3405 return TRUE;
3406}
#define IDI_MAINICON
Definition: resource.h:3
#define IDS_RESTORELANGBAR
Definition: resource.h:17
static HICON
Definition: imagelist.c:80
EXTERN_C HICON WINAPI TF_GetLangIcon(_In_ LANGID LangID, _Out_ LPWSTR pszText, _In_ INT cchText)
#define LOWORD(l)
Definition: pedump.c:82
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582
HICON WINAPI LoadIconW(_In_opt_ HINSTANCE hInstance, _In_ LPCWSTR lpIconName)
Definition: cursoricon.c:2161
BOOL WINAPI DestroyIcon(_In_ HICON)
Definition: cursoricon.c:2139
__wchar_t WCHAR
Definition: xmlstorage.h:180

Referenced by CTipbarWnd::SetShowTrayIcon().

◆ SetThis()

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

Definition at line 3413 of file msutb.cpp.

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

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: