Hallo Herr Kosch,
Ich habe immer in den Netzwerkkomponenten die Schuld am Anzeigefehler gegeben, diese waren aber garnicht schuld!!
Schuld war ein Blinkendes Symbol in der TNA!!!!!!!!!!!
Ich habe ein kleines Beispiel Programm geschrieben, das nur blinkt (also das Problem vollkommen isoliert), dann ist das Problem nach ca. 10 Sek. Aufgetreten, weiters habe ich festgestellt, daß es nur bei WinNT 4.0 auftritt(keine Ahnung wieso)!
Hier mein Quellcode:
var <br>
blink : boolean;<br>
icostatus:longint;<br>
<br>
procedure TaskBarAddIcon;<br>
var tnid : TNOTIFYICONDATA ;<br>
ico : ticon;<br>
begin<br>
tnid.cbSize := sizeof(TNOTIFYICONDATA);<br>
tnid.Wnd := frmmain.handle;<br>
tnid.uID := 1;<br>
tnid.uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP;<br>
ico:=ticon.Create;<br>
frmmain.imglst.GetIcon(0,ico);<br>
tnid.hIcon := ico.Handle;<br>
strcopy(tnid.szTip,'BugReport');<br>
Shell_NotifyIcon(NIM_ADD, @tnid);<br>
end;<br>
procedure TaskbarChangeIcon(index : integer);<br>
var tnid : TNotifyIconData;<br>
ico : ticon;<br>
begin<br>
tnid.cbSize := sizeof(TNOTIFYICONDATA);<br>
tnid.Wnd := frmmain.handle;<br>
tnid.uID := 1;<br>
tnid.uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP;<br>
tnid.uCallbackMessage := WM_TASKBAREVENT;<br>
ico:=ticon.Create;<br>
frmmain.imglst.GetIcon(index,ico);<br>
tnid.hIcon := ico.Handle;<br>
case index of<br>
0 : strcopy(tnid.szTip,'BugReport');<br>
1 : strcopy(tnid.szTip,'Neue Mitteilung');<br>
end;<br>
if index>1 then<br>
strcopy(tnid.szTip,'Neue Mitteilung');<br>
Shell_NotifyIcon(NIM_MODIFY, @tnid);<br>
end;<br>
procedure Tfrmmain.Timer1Timer(Sender: TObject);<br>
begin<br>
if blink then begin<br>
{if icostatus=0 then<br>
icostatus:=1<br>
else<br>
icostatus:=0;}<br>
if (icostatus+1)>95 then<br>
icostatus:=0<br>
else<br>
icostatus:=icostatus+1;<br>
TaskbarChangeIcon(IcoStatus);<br>
end;<br>
end;<br>
procedure Tfrmmain.FormCreate(Sender: TObject);<br>
begin<br>
blink:=false;<br>
taskbaraddicon;<br>
blink:=true;<br>
end;<br>
Dieses Problem habe ich nun schon seit April, und jetzt da ich den Grund weiß würde mich eine saubere Lösung des Problems interessieren, (??Was ist falsch an meinem Code??)
mit bestem Dank im Voraus
Hansjörg
Ich habe immer in den Netzwerkkomponenten die Schuld am Anzeigefehler gegeben, diese waren aber garnicht schuld!!
Schuld war ein Blinkendes Symbol in der TNA!!!!!!!!!!!
Ich habe ein kleines Beispiel Programm geschrieben, das nur blinkt (also das Problem vollkommen isoliert), dann ist das Problem nach ca. 10 Sek. Aufgetreten, weiters habe ich festgestellt, daß es nur bei WinNT 4.0 auftritt(keine Ahnung wieso)!
Hier mein Quellcode:
var <br>
blink : boolean;<br>
icostatus:longint;<br>
<br>
procedure TaskBarAddIcon;<br>
var tnid : TNOTIFYICONDATA ;<br>
ico : ticon;<br>
begin<br>
tnid.cbSize := sizeof(TNOTIFYICONDATA);<br>
tnid.Wnd := frmmain.handle;<br>
tnid.uID := 1;<br>
tnid.uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP;<br>
ico:=ticon.Create;<br>
frmmain.imglst.GetIcon(0,ico);<br>
tnid.hIcon := ico.Handle;<br>
strcopy(tnid.szTip,'BugReport');<br>
Shell_NotifyIcon(NIM_ADD, @tnid);<br>
end;<br>
procedure TaskbarChangeIcon(index : integer);<br>
var tnid : TNotifyIconData;<br>
ico : ticon;<br>
begin<br>
tnid.cbSize := sizeof(TNOTIFYICONDATA);<br>
tnid.Wnd := frmmain.handle;<br>
tnid.uID := 1;<br>
tnid.uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP;<br>
tnid.uCallbackMessage := WM_TASKBAREVENT;<br>
ico:=ticon.Create;<br>
frmmain.imglst.GetIcon(index,ico);<br>
tnid.hIcon := ico.Handle;<br>
case index of<br>
0 : strcopy(tnid.szTip,'BugReport');<br>
1 : strcopy(tnid.szTip,'Neue Mitteilung');<br>
end;<br>
if index>1 then<br>
strcopy(tnid.szTip,'Neue Mitteilung');<br>
Shell_NotifyIcon(NIM_MODIFY, @tnid);<br>
end;<br>
procedure Tfrmmain.Timer1Timer(Sender: TObject);<br>
begin<br>
if blink then begin<br>
{if icostatus=0 then<br>
icostatus:=1<br>
else<br>
icostatus:=0;}<br>
if (icostatus+1)>95 then<br>
icostatus:=0<br>
else<br>
icostatus:=icostatus+1;<br>
TaskbarChangeIcon(IcoStatus);<br>
end;<br>
end;<br>
procedure Tfrmmain.FormCreate(Sender: TObject);<br>
begin<br>
blink:=false;<br>
taskbaraddicon;<br>
blink:=true;<br>
end;<br>
Dieses Problem habe ich nun schon seit April, und jetzt da ich den Grund weiß würde mich eine saubere Lösung des Problems interessieren, (??Was ist falsch an meinem Code??)
mit bestem Dank im Voraus
Hansjörg
Comment