plz help: SystemTray und co.
-
HI!
Ich bin an der Entwicklung einer Windows Shell (desktop + filemanager)
-> members.fortunecity.de/scopsmir fehlt allerdings eine doku über den systemtray den ich mit in meine shell einbinden will.
Weiß jemand wie ich den Systemtray nachbauen kann?
MfG
scops
-
//Unter die #include´s: void tray(); NOTIFYICONDATA nidTrayIcon; //Am ende des Programmes: void tray() { nidTrayIcon.cbSize = sizeof(nidTrayIcon); nidTrayIcon.hIcon = LoadIcon(hInst,MAKEINTRESOURCE(IDI_ICON1)); nidTrayIcon.hWnd = hwnd; nidTrayIcon.uCallbackMessage = (WM_USER + 1); nidTrayIcon.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP; nidTrayIcon.uID = 0x0200; lstrcpyn(nidTrayIcon.szTip,"Tray!",sizeof(nidTrayIcon.szTip)); Shell_NotifyIcon(NIM_ADD, &nidTrayIcon); ShowWindow(hwnd,SW_HIDE); } //Start mit: tray();
Sollte funktionieren.
MFG
ReneS
-
hi!
Danke für deine antwort!
aber irgendwie geht garnix.
hab im BCB nen neues Projekt erstellt und den code reingebaut.compiler errors:
[C++ Fehler] main.cpp(453): E2451 Undefiniertes Symbol 'hInst'
[C++ Fehler] main.cpp(453): E2451 Undefiniertes Symbol 'IDI_ICON1'
[C++ Fehler] main.cpp(454): E2451 Undefiniertes Symbol 'hwnd'wo deklariere ich die 3?
MfG
scops
-
hInst ist die Instance deiner Anwendung, bekommts du über GetModuleHandle(0); oder über die WinMain direkt.
Das andere ist der Icon aus der Resource, der angezeigt werden soll
Und das dritte ist das Handle deines Fensters...
cu para
-
Danke für die erklärung
nur wie bau ichs ein? *G*
sorry bin relativ neu bei c++
cya
scops
-
Zeig mal deinen kompletten Code her!
-
nun der code wär z.B. nen leeres BCB projekt:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------mit eingefügtem code:
//---------------------------------------------------------------------------
#include <vcl.h>
void tray();
NOTIFYICONDATA nidTrayIcon;
#pragma hdrstop#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent Owner)
: TForm(Owner)
{
tray();
}
//---------------------------------------------------------------------------void tray()
{
nidTrayIcon.cbSize = sizeof(nidTrayIcon);
nidTrayIcon.hIcon = LoadIcon(hInst,MAKEINTRESOURCE(IDI_ICON1));
nidTrayIcon.hWnd = hwnd;
nidTrayIcon.uCallbackMessage = (WM_USER + 1);
nidTrayIcon.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
nidTrayIcon.uID = 0x0200;
lstrcpyn(nidTrayIcon.szTip,"Tray!",sizeof(nidTrayIcon.szTip));
Shell_NotifyIcon(NIM_ADD, &nidTrayIcon);
ShowWindow(hwnd,SW_HIDE);
}was muss ich jetz adden, das der mir die trayicons in das fenster malt?
oder in nen Panel... egaldanke
scops
-
Mit der geposteten Funktion wird lediglich ein Icon in das Windows-SysTray hinzugefügt (und anschließend das eigene Fenster versteckt).
So wie ich das lese, willst du aber nicht ein Icon ins SysTray eintragen, sodern ein eigenes SysTray programmieren, in das andere Programme ihr Icon eintragen.
Wie das dann geht kann ich dir aber auch nicht sagen.
-
genau daniel
jo hoffe nur jemand weiß es bzw. weiß wos ne doku gibt wie das geht...
gibt je etliche Shells die nen eigenen systray haben... also muss ja irgendwo stehn wie das geht... leider werde ich als relativer neuling (3 monate) bei c++ nich ganz schlau aus dem code dieser shells....cya
scops