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

Constructor & Destructor Documentation

◆ CTrayIconWnd()

CTrayIconWnd::CTrayIconWnd ( )

Definition at line 3193 of file msutb.cpp.

3194{
3195 m_uCallbackMsg = WM_USER + 0x1000;
3196 m_uNotifyIconID = 0x1000;
3197}
UINT m_uCallbackMsg
Definition: msutb.cpp:1118
UINT m_uNotifyIconID
Definition: msutb.cpp:1119
#define WM_USER
Definition: winuser.h:1895

◆ ~CTrayIconWnd()

CTrayIconWnd::~CTrayIconWnd ( )

Definition at line 3199 of file msutb.cpp.

3200{
3201 for (size_t iItem = 0; iItem < m_Items.size(); ++iItem)
3202 {
3203 auto& pItem = m_Items[iItem];
3204 if (pItem)
3205 {
3206 delete pItem;
3207 pItem = NULL;
3208 }
3209 }
3210}
CicArray< CButtonIconItem * > m_Items
Definition: msutb.cpp:1117
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 3427 of file msutb.cpp.

3428{
3429 CTrayIconWnd *pThis;
3430 switch (uMsg)
3431 {
3432 case WM_CREATE:
3434 break;
3435 case WM_DESTROY:
3437 break;
3438 case WM_TIMER:
3439 if (wParam == 100)
3440 {
3441 ::KillTimer(hWnd, 100);
3442 pThis = CTrayIconWnd::GetThis(hWnd);
3443 if (pThis)
3444 pThis->CallOnDelayMsg();
3445 }
3446 break;
3447 default:
3448 {
3449 if (uMsg < WM_USER)
3450 return ::DefWindowProc(hWnd, uMsg, wParam, lParam);
3451 pThis = CTrayIconWnd::GetThis(hWnd);
3452 if (pThis && pThis->OnIconMessage(uMsg, wParam, lParam))
3453 break;
3454 return ::DefWindowProc(hWnd, uMsg, wParam, lParam);
3455 }
3456 }
3457 return 0;
3458}
HWND hWnd
Definition: settings.c:17
static CTrayIconWnd * GetThis(HWND hWnd)
Definition: msutb.cpp:3413
void CallOnDelayMsg()
Definition: msutb.cpp:3212
static void SetThis(HWND hWnd, LPCREATESTRUCT pCS)
Definition: msutb.cpp:3418
BOOL OnIconMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
@implemented
Definition: msutb.cpp:3294
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
#define SetWindowLongPtr
Definition: treelist.c:70
#define GWL_USERDATA
Definition: winuser.h:861
#define WM_CREATE
Definition: winuser.h:1608
#define WM_TIMER
Definition: winuser.h:1742
#define WM_DESTROY
Definition: winuser.h:1609
BOOL WINAPI KillTimer(_In_opt_ HWND, _In_ UINT_PTR)

Referenced by RegisterClass().

◆ CallOnDelayMsg()

void CTrayIconWnd::CallOnDelayMsg ( )

Definition at line 3212 of file msutb.cpp.

3213{
3214 for (size_t iItem = 0; iItem < m_Items.size(); ++iItem)
3215 {
3216 auto pItem = m_Items[iItem];
3217 if (pItem && m_uCallbackMessage == pItem->m_uCallbackMessage)
3218 {
3219 pItem->OnDelayMsg(m_uMsg);
3220 break;
3221 }
3222 }
3223}
UINT m_uCallbackMessage
Definition: msutb.cpp:1106
UINT m_uMsg
Definition: msutb.cpp:1107

Referenced by _WndProc().

◆ CreateWnd()

HWND CTrayIconWnd::CreateWnd ( )

Definition at line 3225 of file msutb.cpp.

3226{
3227 m_hWnd = ::CreateWindowEx(0, TEXT("CTrayIconWndClass"), NULL, WS_DISABLED,
3228 0, 0, 0, 0, NULL, NULL, g_hInst, this);
3229 FindTrayEtc();
3230
3232 if (m_pMainIconItem)
3233 {
3236 }
3237
3238 return m_hWnd;
3239}
#define cicNoThrow
Definition: cicbase.h:34
BOOL Init(HWND hWnd)
@implemented
Definition: msutb.cpp:3166
HWND m_hWnd
Definition: msutb.cpp:1108
BOOL FindTrayEtc()
Definition: msutb.cpp:3271
CMainIconItem * m_pMainIconItem
Definition: msutb.cpp:1116
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:5755

◆ DestroyWnd()

void CTrayIconWnd::DestroyWnd ( )

Definition at line 3241 of file msutb.cpp.

3242{
3244 m_hWnd = NULL;
3245}
BOOL WINAPI DestroyWindow(_In_ HWND)

◆ EnumChildWndProc()

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

Definition at line 3247 of file msutb.cpp.

3248{
3249 CTrayIconWnd *pWnd = (CTrayIconWnd *)lParam;
3250
3251 TCHAR ClassName[60];
3252 ::GetClassName(hWnd, ClassName, _countof(ClassName));
3253 if (lstrcmp(ClassName, TEXT("TrayNotifyWnd")) != 0)
3254 return TRUE;
3255
3256 pWnd->m_hNotifyWnd = hWnd;
3257 return FALSE;
3258}
HWND m_hNotifyWnd
Definition: msutb.cpp:1111
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define _countof(array)
Definition: sndvol32.h:68
#define lstrcmp
Definition: winbase.h:3872
#define GetClassName
Definition: winuser.h:5783
char TCHAR
Definition: xmlstorage.h:189

Referenced by FindTrayEtc().

◆ FindIconItem()

CButtonIconItem * CTrayIconWnd::FindIconItem ( REFGUID  rguid)

Definition at line 3260 of file msutb.cpp.

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

Referenced by SetIcon().

◆ FindTrayEtc()

BOOL CTrayIconWnd::FindTrayEtc ( )

Definition at line 3271 of file msutb.cpp.

3272{
3273 m_hTrayWnd = ::FindWindow(TEXT("Shell_TrayWnd"), NULL);
3274 if (!m_hTrayWnd)
3275 return FALSE;
3276
3278 if (!m_hNotifyWnd)
3279 return FALSE;
3281 m_hwndProgman = FindWindow(TEXT("Progman"), NULL);
3283 return TRUE;
3284}
HWND m_hwndProgman
Definition: msutb.cpp:1114
DWORD m_dwTrayWndThreadId
Definition: msutb.cpp:1112
static BOOL CALLBACK EnumChildWndProc(HWND hWnd, LPARAM lParam)
Definition: msutb.cpp:3247
DWORD m_dwProgmanThreadId
Definition: msutb.cpp:1115
HWND m_hTrayWnd
Definition: msutb.cpp:1110
DWORD WINAPI GetWindowThreadProcessId(HWND hWnd, PDWORD lpdwProcessId)
LONG_PTR LPARAM
Definition: windef.h:208
#define FindWindow
Definition: winuser.h:5777
BOOL WINAPI EnumChildWindows(_In_opt_ HWND, _In_ WNDENUMPROC, _In_ LPARAM)

Referenced by CreateWnd(), and GetNotifyWnd().

◆ GetNotifyWnd()

HWND CTrayIconWnd::GetNotifyWnd ( )

Definition at line 3286 of file msutb.cpp.

3287{
3289 FindTrayEtc();
3290 return m_hNotifyWnd;
3291}
BOOL WINAPI IsWindow(_In_opt_ HWND)

Referenced by CTrayIconItem::UpdateMenuRectPoint().

◆ GetThis()

CTrayIconWnd * CTrayIconWnd::GetThis ( HWND  hWnd)
static

Definition at line 3413 of file msutb.cpp.

3414{
3416}
#define GetWindowLongPtr
Definition: treelist.c:73

Referenced by _WndProc().

◆ OnIconMessage()

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

@implemented

Definition at line 3294 of file msutb.cpp.

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

Referenced by _WndProc().

◆ RegisterClass()

BOOL CTrayIconWnd::RegisterClass ( )
static

Definition at line 3314 of file msutb.cpp.

3315{
3316 WNDCLASSEX wc = { sizeof(wc) };
3318 wc.hInstance = g_hInst;
3321 wc.lpszClassName = TEXT("CTrayIconWndClass");
3322 ::RegisterClassEx(&wc);
3323 return TRUE;
3324}
static LRESULT CALLBACK _WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: msutb.cpp:3427
HINSTANCE hInstance
Definition: winuser.h:3206
HCURSOR hCursor
Definition: winuser.h:3208
UINT style
Definition: winuser.h:3202
WNDPROC lpfnWndProc
Definition: winuser.h:3203
LPCSTR lpszClassName
Definition: winuser.h:3211
#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:5837
#define LoadCursor
Definition: winuser.h:5812
const CHAR * LPCTSTR
Definition: xmlstorage.h:193

Referenced by ProcessAttach().

◆ RemoveAllIcon()

void CTrayIconWnd::RemoveAllIcon ( DWORD  dwFlags)

Definition at line 3326 of file msutb.cpp.

3327{
3328 for (size_t iItem = 0; iItem < m_Items.size(); ++iItem)
3329 {
3330 auto pItem = m_Items[iItem];
3331 if (dwFlags & 0x1)
3332 {
3333 if (IsEqualGUID(pItem->m_guid, GUID_LBI_INATITEM) ||
3334 IsEqualGUID(pItem->m_guid, GUID_LBI_CTRL))
3335 {
3336 continue;
3337 }
3338 }
3339
3340 if (dwFlags & 0x2)
3341 {
3342 if (IsEqualGUID(pItem->m_guid, GUID_TFCAT_TIP_KEYBOARD))
3343 continue;
3344 }
3345
3346 if (pItem->m_uNotifyIconID < 0x1000)
3347 continue;
3348
3349 pItem->RemoveIcon();
3350 }
3351}
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 3354 of file msutb.cpp.

3355{
3356 //FIXME
3357}

◆ SetIcon()

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

Definition at line 3359 of file msutb.cpp.

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

◆ SetMainIcon()

BOOL CTrayIconWnd::SetMainIcon ( HKL  hKL)

Definition at line 3382 of file msutb.cpp.

3383{
3384 if (!hKL)
3385 {
3388 return TRUE;
3389 }
3390
3391 if (hKL != m_pMainIconItem->m_hKL)
3392 {
3393 WCHAR szText[64];
3394 HICON hIcon = TF_GetLangIcon(LOWORD(hKL), szText, _countof(szText));
3395 if (hIcon)
3396 {
3397 m_pMainIconItem->SetIcon(hIcon, szText);
3399 }
3400 else
3401 {
3404 m_pMainIconItem->SetIcon(hIcon, szText);
3405 }
3406
3407 m_pMainIconItem->m_hKL = hKL;
3408 }
3409
3410 return TRUE;
3411}
#define IDI_MAINICON
Definition: resource.h:3
#define IDS_RESTORELANGBAR
Definition: resource.h:17
static HICON
Definition: imagelist.c:84
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:2106
BOOL WINAPI DestroyIcon(_In_ HICON)
Definition: cursoricon.c:2084
__wchar_t WCHAR
Definition: xmlstorage.h:180

Referenced by CTipbarWnd::SetShowTrayIcon().

◆ SetThis()

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

Definition at line 3418 of file msutb.cpp.

3419{
3420 if (pCS)
3422 else
3423 ::SetWindowLongPtr(hWnd, GWL_USERDATA, 0);
3424}
__int3264 LONG_PTR
Definition: mstsclib_h.h:276
LPVOID lpCreateParams
Definition: winuser.h:2940

Referenced by _WndProc().

Friends And Related Function Documentation

◆ CTipbarWnd

friend class CTipbarWnd
friend

Definition at line 1120 of file msutb.cpp.

Member Data Documentation

◆ m_bBusy

BOOL CTrayIconWnd::m_bBusy
protected

Definition at line 1105 of file msutb.cpp.

◆ m_dwProgmanThreadId

DWORD CTrayIconWnd::m_dwProgmanThreadId
protected

Definition at line 1115 of file msutb.cpp.

Referenced by FindTrayEtc().

◆ m_dwTrayWndThreadId

DWORD CTrayIconWnd::m_dwTrayWndThreadId
protected

◆ m_dwUnknown20

DWORD CTrayIconWnd::m_dwUnknown20
protected

Definition at line 1104 of file msutb.cpp.

◆ m_dwUnknown21

DWORD CTrayIconWnd::m_dwUnknown21[2]
protected

Definition at line 1109 of file msutb.cpp.

◆ m_dwUnknown22

DWORD CTrayIconWnd::m_dwUnknown22
protected

Definition at line 1113 of file msutb.cpp.

◆ m_hNotifyWnd

HWND CTrayIconWnd::m_hNotifyWnd
protected

Definition at line 1111 of file msutb.cpp.

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

◆ m_hTrayWnd

HWND CTrayIconWnd::m_hTrayWnd
protected

Definition at line 1110 of file msutb.cpp.

Referenced by FindTrayEtc().

◆ m_hWnd

HWND CTrayIconWnd::m_hWnd
protected

Definition at line 1108 of file msutb.cpp.

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

◆ m_hwndProgman

HWND CTrayIconWnd::m_hwndProgman
protected

Definition at line 1114 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 1116 of file msutb.cpp.

Referenced by CreateWnd(), and SetMainIcon().

◆ m_uCallbackMessage

UINT CTrayIconWnd::m_uCallbackMessage
protected

Definition at line 1106 of file msutb.cpp.

Referenced by CallOnDelayMsg().

◆ m_uCallbackMsg

UINT CTrayIconWnd::m_uCallbackMsg
protected

Definition at line 1118 of file msutb.cpp.

Referenced by CTrayIconWnd(), and SetIcon().

◆ m_uMsg

UINT CTrayIconWnd::m_uMsg
protected

Definition at line 1107 of file msutb.cpp.

Referenced by CallOnDelayMsg().

◆ m_uNotifyIconID

UINT CTrayIconWnd::m_uNotifyIconID
protected

Definition at line 1119 of file msutb.cpp.

Referenced by CTrayIconWnd(), and SetIcon().


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