用API实现在MSN的信息提示 delphi教程
[
2008-7-30 22:36:00
| 发表者 :
zihe
]
我是比较喜欢用msn的,因为它的信息提示比较独特,所有的聊天软件都是弹出一个常规的windows对话框,而它却好像是从任务栏里冒出来的。想想了,在delphi这样的纯oop工具里加一个api应该不难实现,花了十来分钟终于搞出来了,以下是实现方法:
1、建立一个application,将两个按钮放置到主窗体from1中,分别为button1和button2。
button1.caption:=´打开窗口´;
button2.caption:=´关闭窗口´;
2、在file菜单项中的new中添加窗体form2,并且在project中的options里,将form2设置为available froms。
3、以下是form2窗体内的控件及属性设置
form2.borderstyle:=bsnone;
添加panel1
panel1.align:=alclient;
panel1.bevellnner:=bvlowered;
可以在panel1内添加你想要的文字。
ok,打开form2的代码窗口,代码如下:
unit unit2;
interface
uses
windows, messages, sysutils, variants, classes, graphics, controls, forms,
dialogs, extctrls, jpeg, stdctrls;
type
tform2 = class(tform)
panel1: tpanel;
image1: timage;
label1: tlabel;
procedure label1click(sender: tobject);
procedure image1click(sender: tobject);
private
{ private declarations }
public
procedure show;
procedure close;
{ public declarations }
end;
var
form2: tform2;
implementation
procedure tform2.close;
begin
if animatewindow(handle,200,aw_ver_positive+aw_hide)=false then
begin
showmessage(´窗体退出出错´);
free;
end;
inherited close;
end;
procedure tform2.show;
begin
top:=430;
left:=560;
if animatewindow(handle,200,aw_ver_negative)=false then
begin
showmessage(´窗体显示出错´);
free;
end;
inherited show;
end;
{$r *.dfm}
以上红色的区域为具体实现特效的代码。为form1添加如下代码即可:
unit unit1;
interface
uses
windows, messages, sysutils, variants, classes, graphics, controls, forms,
dialogs, stdctrls;
type
tform1 = class(tform)
button1: tbutton;
button2: tbutton;
procedure button1click(sender: tobject);
procedure button2click(sender: tobject);
private
{ private declarations }
public
{ public declarations }
end;
var
form1: tform1;
implementation
uses unit2;
var
mesfrm:tform2;
{$r *.dfm}
procedure tform1.button1click(sender: tobject);
begin
mesfrm:=tform2.create(application);
mesfrm.show;
end;
procedure tform1.button2click(sender: tobject);
begin
mesfrm.close;
end;
end.
ok,运行程序你已经可以看到效果了,不过记得将显示器设为800*600象素呵。
由于制作时间较短,只实现了基本的效果,但稍加修改便可和msn的信息提示一模一样。
上一篇:
Delphi编码标准->包命名 delphi教程 下一篇:
Delphi面向对象编程的20条规则(By Marco Cantu)(rule 11-15) delphi教程