Hmm..
Das erste!
Delphi-Quellcode:
procedure SetTrayIcon(hWnd: hWnd; IconID: Integer; TipMsg: PChar;
Update: Boolean);
begin
with NIconD do
begin
cbSize := SizeOf(TNotifyIconData); // funktioniert unter 32 Bit
uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
uCallbackMessage := WM_TRAYEVENT;
uID := $0815;
hIcon := LoadIcon(hInstance, MAKEINTRESOURCE(IconID));
lStrCpy(szTip, TipMsg);
Wnd := hWnd;
end;
if not Update then
Shell_NotifyIcon(NIM_ADD, @NIconD)
else
Shell_NotifyIcon(NIM_MODIFY, @NIconD);
end;
cbSize := SizeOf(TNotifyIconData); // funktioniert nicht mehr unter 64 Bit
erzählt mir immer etwas von
Zitat:
[dcc64 Fehler] ClockUnit.pas(249): E2034 Zu viele Parameter
Bei SizeOf..
Unter 64 Bit springt er hier rein. (ShellAPI) bei der Suche der Declaration.
Delphi-Quellcode:
_NOTIFYICONDATAW = record
private
class constructor Create;
public
class function SizeOf: Integer; static;
public
cbSize: DWORD;
anstelle SizeOf von System zu verwenden.. Was soll der Blödsinn?
Gebe ich System.SizeOf(TNotifyIconData); an gibt es keinen Fehler aber ein Icon wird auch nicht erstellt.
Dir ist bewust, dass Du dieses Problem selber verursachst hast?
Delphi-Quellcode:
with NIconD do
begin
cbSize := SizeOf(TNotifyIconData); // funktioniert unter 32 Bit
Durch das WITH wird nunmal das 'SizeOf' von 'NIconD' verwendet und nicht das von System...
Wenn diese Abweichen, dann wird gemeckert.....
Deshalb:
Ein grundsätliche Regel (welche von vielen empfohlen wird):
KEIN 'WITH' verwenden!