Programmieren - alles kontrollieren 4.934 Themen, 20.613 Beiträge

Mfc in den SystemTray laden

Style / 6 Antworten / Flachansicht Nickles

Hi Ihrs ,

ich habe folgendes Problem :
Mein Programm soll auf Knopfdruck in den Tray geladen werden , aber ich bekomme das irgendwie nich hin !
Ich hoffe Ihr könnt mir weiterhelfen =)

mfg marcus

bei Antwort benachrichtigen
BDelphi T-Rex „Hier, noch ein Link für Dich: Suche nach SysTray Icon MFC bei www.google.de...“
Optionen

Hallo

versuche es mal hiermit:

// CDeinDialog.cpp
#define WM_NOTIFICATION (WM_APP+100)

BEGIN_MESSAGE_MAP(CDeinDlg, CDialog)
ON_MESSAGE(WM_NOTIFICATION, OnTrayNotification)
END_MESSAGE_MAP()

// CDeinDlg.h
// Generierte Message-Map-Funktionen
//{{AFX_MSG(CDeinDlg)
afx_msg LRESULT OnTrayNotification(WPARAM wParam, LPARAM lParam);
//}}AFX_MSG
dann kommt der aufruf, wo du das Progg minimieren willst also button oder so!


void CDeinDlg::OnMini()
{
NOTIFYICONDATA tnd;
ZeroMemory(&tnd, sizeof (NOTIFYICONDATA));
tnd.cbSize = sizeof (NOTIFYICONDATA);
tnd.hWnd = this ->m_hWnd;
tnd.uID = 1;
tnd.uFlags = NIF_MESSAGE|NIF_ICON|NIF_TIP;
tnd.uCallbackMessage = WM_NOTIFICATION;
tnd.hIcon = (HICON) LoadImage(AfxGetApp()->m_hInstance,
MAKEINTRESOURCE(IDI_MIN),IMAGE_ICON,
16,16,LR_SHARED|LR_DEFAULTCOLOR);
tnd.szTip[64]='\0';
lstrcpyn(tnd.szTip,"Proggname",sizeof(tnd.szTip));
Shell_NotifyIcon(NIM_ADD,&tnd);
ShowWindow(SW_HIDE);
}
so fehlt nur noch, das du das Progg ja auch wieder haben willst (hier beispiel linke maustastendruck):


LRESULT CDeinDlg::OnTrayNotification(WPARAM wp, LPARAM lp)
{
switch (lp)
{
case WM_LBUTTONUP:
ShowWindow(SW_SHOW);
NOTIFYICONDATA iconData;
iconData.cbSize = sizeof(NOTIFYICONDATA);
iconData.hWnd = this->GetSafeHwnd();
iconData.uID = 1;
return Shell_NotifyIcon(NIM_DELETE,&iconData);
}
return 0;
}
Kann dir nicht genau sagen, ob es funktioniert, habe da aus einem anderem Forum

Gruß BDelphi

bei Antwort benachrichtigen