2017-01-16 6 views
0

私はTTrayIconのキャンバスに描画しようとしていますが、成功しません。 私は窓の私がこれまで試したことはある10TTrayIconで描画する方法

上ラザロV1.6.2を使用したプログラミングよ:

procedure TForm1.TrayIcon1Paint(Sender: TObject); 
var 
    tmpcanvas: TCanvas; 
begin 
    tmpcanvas := TrayIcon1.Canvas; 
    tmpcanvas := TrayIcon1.Icon.Canvas; // also not working 
    tmpcanvas.Font.Size := 22; 
    tmpcanvas.Brush.Color := RGBToColor(255,255,255); 
    tmpcanvas.FillRect(1,1,200,200); 
    tmpcanvas.Font.Color := RGBToColor(0,0,0); 
    tmpcanvas.TextOut(1,1, 'TEST'); 
end; 

私はForm1.CanvasでイベントForm1.OnPaintにし、そこにこのコードを試してみました期待どおりに動作します

しかし、私はTTrayIcon.Canvasでペインティングすることはできません。 TTrayIconのキャンバス上の描画は他のキャンバス上の描画と異なります...

一部のデバッグの後、TTrayIcon.OnPaintイベントはトリガーされません。しかし、TrayIcon1Paint(..)を強制実行しても何も起こりません。

今私はアイデアがありません。どんな助けも高く評価されます。

+0

システムはこのように動作しません。別のアイコンが必要な場合は、別のアイコンを指定する必要があります。基礎となるシステムは、ペイントメッセージに基づいていません。 –

+0

私はシステムトレイに動的な情報を表示したい。私はそれが "ウィンドウ時間"も "動的"なので、うまくいくはずだと思った。 –

+1

Windows時間は通知アイコンではなく、シェルによって描画される。それは何でも満足しています。あなたはAPIに適合しなければなりません。そしてそれはアイコンを求めます。リッチダイナミックUIの場合、通知アイコンは表示されません。 –

答えて

1

Windows通知アイコンには、OnPaintイベントに一致するインターフェイスはありません。 OnPaintイベントは、さまざまなプラットフォームでの使用を想定しています。

Windowsの通知アイコンは、Windowsアイコンオブジェクトの形式でシステムに提供されます。通知アイコンの外観を変更する場合は、新しいアイコンオブジェクトを指定する必要があります。私はWindows API関数のこの特定のラッパーに慣れていませんが、通知アイコンの外観を更新するこのようなコードを書くことができると期待します。

TrayIcon1.Icon := MyNewIcon; 
関連する問題