Ikona w trayu - w Winapi dziala, w mfc nie

0

Otoz taki kod mam:

        NOTIFYICONDATA tray;
	tray.cbSize = sizeof(NOTIFYICONDATA); 
	tray.hWnd = m_hWnd; 
	tray.uID = 1234; 
	tray.uFlags = NIF_MESSAGE | NIF_TIP | NIF_ICON; 
	tray.uCallbackMessage = 1234; 
	tray.hIcon = LoadIcon(0, IDI_APPLICATION); 
	lstrcpyn(tray.szTip, "PIWO Serwer", sizeof(tray.szTip)); 

	if(!Shell_NotifyIcon(NIM_ADD, &tray)) 
		AfxMessageBox( "Bład Tray'a");	
    Ma on za zadanie wyswietlic ikone programu w trayu, i wysiwetla. Problem pojawia sie przy podawaniu komunikatow z tej ikony (klikniecie) w Winapi mi to dziala, w Mfc nie moge przechwycic tego komunikatu. probowalem w mapie komunikatow:
ON_COMMAND(1234,OnTrayKlik)

I funkcja OnTrayKlik nie jest wywolywana, w PreTranslateMessage() tez probowalem i tez nie dziala. Sprawdzilem programem Spy++ i te komunikaty trafiaja do okna, nie wiem czemu program na nie nie reaguje :-/.

0

Ja to kiedyś robiłem tak ;)

HINSTANCE hInstanc=AfxGetApp()->m_hInstance;

	NID.cbSize = sizeof(NID); // Rozmiar struktury NID
	NID.hIcon = LoadIcon(hInstanc, MAKEINTRESOURCE(IDI_ICON1)); // Ikona, która
															//będzie pokazana w tray'u
	NID.uCallbackMessage = WM_USER + 1; // Nasz komunikat 
										// (Windows wyśle ten
										//komunikat, gdy zostanie naciśnięta ikona w Tray'u)
	NID.hWnd =GetSafeHwnd();			// Uchwyt okna, które będzie odbierało komunikat.
	NID.uID = WM_USER + 2;				// ID ikony w Tray'u...
	strcpy(NID.szTip, "Konwerter");		// Tekst po najechaniu myszą.
	NID.uFlags = NIF_TIP | NIF_ICON | NIF_MESSAGE;


	// Dodajemy ikonę do Tray'a
	Shell_NotifyIcon(NIM_ADD, &NID);
LRESULT CKonwerterDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
{	
	
	
	
	if(message==WM_USER+1 && lParam==WM_RBUTTONDOWN) 
	{
	CMenu menu;
	POINT p;
	GetCursorPos(&p);
	x=p.x;
	y=p.y;
	menu.LoadMenu(IDR_CONTEXTMENU);
	CMenu *pMenu=menu.GetSubMenu(0);
	
	pMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_RIGHTBUTTON,
			x,y,AfxGetMainWnd());		
		
	

	}

Powinno ci to rozjaśnić całą sytuację :P

0

No zrobilem juz to ( w kazdym razie dzieki za odpowiedz) - nie wiem czemu szla inna wiadomosc niz tam niby zdefiniowalem (spy++ pokazal mi ze po kliknieciu czy poruszeniu myszka nad ikonka przychodzi wiadomosc WM_USER+210 no i tak dalem i chodzi..
// Do postu nizej: No ale jak dawalem ON_MESSAGE(1234,bl) to nie dzialalo :-/ , chyba ze sie mi cos pomylilo.. no ale grunt ze dziala...

0

[!!!] WM_USER+210 = 1234 :d

1 użytkowników online, w tym zalogowanych: 0, gości: 1