//DrawStateから呼び出されるコールバック関数
function DrawStateProc(DC: HDC; lparam: LPARAM; wparam: WPARAM;
cx, cy: integer):LongBool; stdcall;
begin
DrawIconEx(DC, 20, 60, HICON(lparam), 96, 96, 0, 0, DI_NORMAL);
Result :=True;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
S: string;
begin
//灰色テキストを描画
S :='Delphi Tips & Tricks';
DrawState(Canvas.Handle, 0, nil, Integer(PChar(S)), Length(S), 60, 30,
Canvas.TextWidth(S), Canvas.TextHeight(S), DST_TEXT or DSS_DISABLED);
//灰色アイコンを描画
DrawState(Canvas.Handle, 0, nil, Application.Icon.Handle, 0, 20, 20,
0, 0, DST_ICON or DSS_DISABLED);
//コールバック関数を使ってアイコンを任意のサイズで描画
//ここでのCx, Cyの指定はデバイスコンテキストの描画領域のサイズらしい
DrawState(Canvas.Handle, 0, @DrawStateProc, Application.Icon.Handle, 0, 0, 0,
Width, Height, DST_COMPLEX or DSS_DISABLED);
end; |