怎样实现在桌面上显示文字??(30分)

Q

QQ2001

Unregistered / Unconfirmed
GUEST, unregistred user!
怎样实现在桌面上显示文字??
 
不知要如何显示,不然可以使用api(textout)写到透明窗体上
 
把窗体设为透明是一种方法,
unit Unit1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

const

WS_EX_LAYERED = $80000;

AC_SRC_OVER = $0;

AC_SRC_ALPHA = $1;

AC_SRC_NO_PREMULT_ALPHA = $1;

AC_SRC_NO_ALPHA = $2;

AC_DST_NO_PREMULT_ALPHA = $10;

AC_DST_NO_ALPHA = $20;

LWA_COLORKEY = $1;

LWA_ALPHA = $2;

ULW_COLORKEY = $1

ULW_ALPHA = $2

ULW_OPAQUE = $4

//新增加的常量定义

type

TForm1 = class(TForm)

procedure FormCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;
function SetLayeredWindowAttributes(hwnd:HWND; crKey:Longint; bAlpha:byte; dwFlags:longint ):longint; stdcall; external user32;//函数声明
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
var l:longint;
begin
l:=getWindowLong(Handle, GWL_EXSTYLE);
l := l Or WS_EX_LAYERED;
SetWindowLong (handle, GWL_EXSTYLE, l);
SetLayeredWindowAttributes (handle, 0, 180, LWA_ALPHA);
//第二个参数是指定透明颜色
//第二个参数为0则使用第四个参数设置alpha值,从0到255,其他的我不太清楚,因为没有api帮助
end;
end.
 
to jx_l:
textout具体怎样用?
 
procedure TForm1.Button1Click(Sender: TObject);
var
lshdc:hdc;
lscanvas:Tcanvas;
begin
lscanvas:=tcanvas.Create;
lshdc:=getdc(0);
lscanvas.Handle:=lshdc;
lscanvas.TextOut(10,50,'asdfccas');
lscanvas.Free;
releasedc(0,lshdc);
end;
如果要实现涂鸦的效果,用个hook或直接抓屏.可以查找DFW有资料的.
 
To QQ2002:
刚好上面的这位有个示例,请参照,TextOut的具体用法可参照Windows API的说明
 
顶部