저는 Delphi 2007에서 TTrayIcon 컴포넌트를 발견했습니다. 사용 된 코드는 매우 간단합니다. 64 × 64, 경우 48x48, 32 × 32, 16 × 16 및 24x24 : http://artbyloveland.com/icon.ico이 아이콘 크기는 다음을 포함한다 : 할당 된 아이콘이 없으므로TTrayIcon이 설치된 트레이 막대에 내 아이콘이 왜 못 생깁니 까?
는procedure TForm1.FormCreate(Sender: TObject);
begin
AppTrayIcon := TTrayIcon.Create(nil);
AppTrayIcon.OnDblClick := OnAppTrayIconDblClick;
Application.OnMinimize := OnApplicationMinimize;
Application.OnRestore := OnApplicationRestore;
end;
procedure TForm1.OnApplicationRestore(Sender: TObject);
begin
AppTrayIcon.Visible := False;
ShowWindow(Application.Handle, SW_SHOW);
Application.BringToFront;
end;
procedure TForm1.OnApplicationMinimize(Sender: TObject);
begin
AppTrayIcon.Visible := True;
ShowWindow(Application.Handle, SW_HIDE);
end;
procedure TForm1.OnAppTrayIconDblClick(Sender: TObject);
begin
Application.Restore;
end;
Delphi는 해당 아이콘이다 Application.Icon을 사용한다.
내 Windows Vista에서는 모든 것이 정상입니다. 비 테마 윈도우 윈도우와 같은 Server 2003에서
는, 결과는 모든 나사 - 최대 :편집 : 처음에는 , 나는 그것 때문에 알파 채널의 생각했다. 그래서 알파 채널을 사용하지 않고 ico 파일 버전을 만들려고했습니다. Ken이 제안한 GreenFish Icon Editor도 시도해 보았습니다. 나는 모든 색상의 깊이와 모든 크기를 선택했습니다. 두 경우 모두 최종 결과가 더 좋습니다. 그러나 ico 파일에는 전혀없는 검은 선이 있습니다.
아이콘 크기가 작은 HICON이 필요합니다. 얼마나 큰지 알아 내기 위해 GetSystemMetrics를 호출하십시오. 예를 들어 값이 20 인 경우 올바른 크기가 없습니다. 아마도이 컴포넌트는 평범한 오래된 LoadIcon을 사용하고 있으며, 다시 샘플링 된 32px 아이콘이 있습니다. –
글쎄요, 그것이 20 살이더라도 다른 컴퓨터 설치를 위해서는 뭔가 다른 것이 될 수 있습니다. 맞습니까? 어쨌든 내 Windows 2003 서버에서 SM_CXSMICON에 대해 16을 얻습니다. Ken의 충고를 적용하여 부분적으로 버그를 수정할 수 있습니다. 그러나 여전히 ico 파일의 첫 번째 위치에는 존재하지 않는 검은 획이 남아 있습니다. –
나는 항상'Shell_NotifyIcon'을 호출하고'LoadImage'로 만든'HICON'을 전달합니다. VCL 처리 아이콘은 절망적입니다.나는 당신이이 컴포넌트가'Application.Icon'을 사용하도록하는 것 이외의 일을한다는 어떠한 증거도 보지 못했습니다. 그리고 그것은 실패 할 운명입니다. –