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
Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge
Habe hier einen Link für Dich:
Eigenes Programmsymbol in der Taskleiste anzeigen
Es ist zwar mit VB realisiert, aber Du kannst Dir darin die nötigen Anregungen holen, wie Du Dein Problem lösen kannst.
Gruß
T-Rex
Danke für die schnell Antwort =) #
bin gerade dabei mir die Deklarationen anzuschauen .. soweit auch verständlich ! werde mal versuchen es zu integrieren.
Dennoch wäre ich für andere Tipps bezüglich C++ , MFC auch sehr dankbar !
mfg marcus
Hier, noch ein Link für Dich:
Suche nach SysTray Icon MFC bei www.google.de
Gruß
T-Rex
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
... im wesentlichen startest du das programm und registrierst den icon handler fuer den tray. dann ist es da. das einzige problem koennte sein - und ich vermutet das ist was du meinst - das das programm ausserdem dann noch ein 'sichtbares' fenster hat. das kannst du z.b. mit einem timer behandeln der das ding kurz nach dem starten versteckt.
WM_HOPETHISHELPS
jau alles klar =) danke ihrs.
Habe es hinbekommen . Das was Thomas angesprochen hatte war mein 2 problem , dat hab ich aber dann schliesslich doch noch selbst gelöst...Der Tipp mit dem Timer war klasse *g*..
Danke an alle die sich bemüht haben !!
mfg marcus