Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge

Mfc in den SystemTray laden

Style / 6 Antworten / Baumansicht 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
T-Rex Style „Mfc in den SystemTray laden“
Optionen

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

 GrüßeT-Rex 
bei Antwort benachrichtigen
Style T-Rex „Habe hier einen Link für Dich: Eigenes Programmsymbol in der Taskleiste...“
Optionen

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

bei Antwort benachrichtigen
T-Rex Style „Danke für die schnell Antwort bin gerade dabei mir die Deklarationen...“
Optionen

Hier, noch ein Link für Dich:

Suche nach SysTray Icon MFC bei www.google.de


Gruß
T-Rex

 GrüßeT-Rex 
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
thomas woelfer Style „Mfc in den SystemTray laden“
Optionen

... 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

this posting contains no tpyos.
bei Antwort benachrichtigen
Style Nachtrag zu: „Mfc in den SystemTray laden“
Optionen

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

bei Antwort benachrichtigen