dragi Geschrieben 27. Juli 2004 Geschrieben 27. Juli 2004 Hallo, kann ein Trayicon in Windows 2000/XP auch auf Drag n` Drop reagieren? Wenn ja wie? Hoffe ihr habt eine Idee Vielen Dank Dragi Zitieren
geloescht_JesterDay Geschrieben 27. Juli 2004 Geschrieben 27. Juli 2004 Hallo, kann ein Trayicon in Windows 2000/XP auch auf Drag n` Drop reagieren? Wenn ja wie? 'also ich hab es noch nich probiert, aber hier mal meine Idee: Angelegt hab ich ein Try-Icon auf die Art: Type TNewNotifyIconData = record cbSize: DWORD; Wnd: HWND; uID: UINT; uFlags: UINT; uCallbackMessage: UINT; hIcon: HICON; //Version 5.0 is 128 chars, old ver is 64 chars szTip: array [0..127] of Char; dwState: DWORD; //Version 5.0 dwStateMask: DWORD; //Version 5.0 szInfo: array [0..255] of Char; //Version 5.0 DUMMYUNIONNAME: TDUMMYUNIONNAME; szInfoTitle: array [0..63] of Char; //Version 5.0 dwInfoFlags: DWORD; //Version 5.0 end; ... IconData: TNewNotifyIconData; ... procedure TForm1.AddSysTrayIcon; begin IconData.cbSize := SizeOf(IconData); IconData.Wnd := AllocateHWnd(SysTrayIconMsgHandler); {SysTrayIconMsgHandler is then callback message' handler} IconData.uID := 0; IconData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP; IconData.uCallbackMessage := TRAY_CALLBACK; //user defined callback message IconData.hIcon := Application.Icon.Handle; //an Icon's Handle IconData.szTip := 'Tooltip'; if not Shell_NotifyIcon(NIM_ADD, @IconData) then ShowMessage('add failed'); end; Auf Windows-Messages reagiert das Icon über die Nachricht TRAY_CALLBACK procedure SysTrayIconMsgHandler(var Msg: TMessage); message TRAY_CALLBACK; ... procedure TfrmInfo.SysTrayIconMsgHandler(var Msg: TMessage); var Point: TPoint; begin // if Msg.lParam <> WM_MOUSEMOVE then case Msg.lParamLo of WM_MOUSEMOVE:; WM_LBUTTONDOWN: MessageBeep(0); WM_LBUTTONUP:; WM_LBUTTONDBLCLK: frmMain.show; WM_RBUTTONDOWN: begin GetCursorPos(Point); //*** Wichtig! Damit sich das Menü schliesst wenn die Maus irgendwo gedrückt wird SetForegroundWindow(Self.Handle); frmMain.mnuTray.PopUp(Point.x, Point.y); end; WM_RBUTTONUP:; WM_RBUTTONDBLCLK:; end; end; Auszug aus der Win-Hilfe: The DragAcceptFiles function registers whether a window accepts dropped files. Also uber DragAcceptFiles dein TrayIcon (Wnd: hWnd) registrieren und dann die WindowsMessage WM_DROPFILES in der Prozedur abfragen. Das müsste so eigentlich gehen... Zitieren
dragi Geschrieben 30. Juli 2004 Autor Geschrieben 30. Juli 2004 Hallo, vielen Dank für den Code. Leider sperrt die traybar immer noch das Drag´n Drop. Wahrscheinlich ist das einfach nicht möglich :'( Gruss Dragi Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.