读书人

关于托盘图标显示的有关问题

发布时间: 2012-02-19 19:43:38 作者: rapoo

关于托盘图标显示的问题
我写了一个托盘图标的控件。其中有个控制图标的属性,问题属性声明如下:
private
FIcon: TIcon;
protected
procedure SetIcon(Value: TIcon);
published
property Icon: TIcon read FIcon write SetIcon;
public
constructor Create(AOwner: TComponent); override;
 procedure UpDateTray(dwMessage: TOpType);

constructor TTray.Create(AOwner: TComponent);
begin
inherited;
FIcon := TIcon.Create;
FIcon.Assign(Application.Icon);
  。。。。
end;

procedure TTray.SetIcon(Value: TIcon);
begin
if not Value.Empty then  //若赋值了就使用新图标
begin
FIcon.Assign(Value);
end
else
begin
FIcon.Assign(Application.Icon); //否则使用程序的图标
end;
if Enabled then
begin
UpDateTray(NIM_MODIFY);
end;
end;

procedure TTray.UpDateTray(dwMessage: TOpType);
begin
if not (csDesigning in ComponentState) then
begin
if FEnabled then
begin
FTrayIconData.cbSize := SizeOf(TNotifyIconData);
FTrayIconData.Wnd := FWnd;
FTrayIconData.uID := 1;
FTrayIconData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
FTrayIconData.uCallbackMessage := WM_TRAYMSG;
FTrayIconData.hIcon := FIcon.Handle;
StrLCopy(FTrayIconData.szTip, PChar(FHint), 63);
Shell_NotifyIcon(dwMessage, @FTrayIconData);
end;
end;
end;

运行结果是能正常显示程序的图标。但是用编辑器选择另一个图标后,程序运行时还是原来的图标。搞了半天没有搞通,现在请教一下大家是怎么回事

[解决办法]
关了编辑器在重新打开,重新加载一次图标,可能是你编辑器的问题!

读书人网 >.NET

热点推荐