一个窗体,现在想让他循环显示一段文字,要平滑的显示,所以用定时器来定时给caption赋值的方法就不行了有什么好办法吗?
DrawText我找不到caption的句柄啊...
DrawText我找不到caption的句柄啊...
解决方案 »
- 怎么获取 hid脚踏开关的 开关状态?
- quickReport的qrdbtext显示数据不完整?
- 自定义异常 使用问题? 如何显示异常信息 及 不退出程序??
- 如何实现屏幕锁屏?
- ***100分*** 还可再加*** 求替换二进制文件中字符串的方法
- 问个很菜的问题!谢谢
- 在win2000下,如何取得进程(正在运行的程序)的磁盘位置???
- xywhx(xywhx)进来拿分(1)
- 提问: 请问如何对某一条的数据的数据操作的属性进行操作
- 有一个WebBrowser空间在Pagecontrol控件上,当Pagecontrol控件增加一页时自动生成一个WebBrowser控件,并且显示当前最新链接,而且前一页仍显示原来的链接,这如何实现啊
- delphi关于flash点击有什么好办法~~
- 如何去掉MDI窗口的自带的那3个窗口排列?
得参考默认处理过程
procedure TWinControl.WMNCPaint(var Message: TMessage);百度了这个资料给你
http://www.phpzy.com/php/1127924.html
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;type
TForm1 = class(TForm)
Timer1: TTimer;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
dc: HDC;
v: Integer;
l,t,b,r: Integer;
f: HFONT;
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}
{$o-}procedure TForm1.FormCreate(Sender: TObject);
var
n: NONCLIENTMETRICS;
begin
Timer1.Enabled := False;
Timer1.Interval := 10; dc := GetWindowDC(Handle); n.cbSize := SizeOf( NONCLIENTMETRICS );
SystemParametersInfo(SPI_GETNONCLIENTMETRICS, SizeOf( NONCLIENTMETRICS ), @n, 0);
f := CreateFontIndirect(n.lfCaptionFont);//取真正的标题的字体
SelectObject(dc, f);//设置 动态画的标题的字体 为 真正的标题的字体 //取动态标题的最大显示区域:left, top, bottom, right
l := 2*(GetSystemMetrics(SM_CXBORDER)+GetSystemMetrics(SM_CXDLGFRAME))+GetSystemMetrics(SM_CXSMICON);
// Inc(l,2);
t := 0;
b := GetSystemMetrics(SM_CYBORDER)+GetSystemMetrics(SM_CYDLGFRAME)+GetSystemMetrics(SM_CYCAPTION);
// Inc(b,3);
r := Width - GetSystemMetrics(SM_CXSIZE) * 3; SetBkMode(dc, TRANSPARENT);//设置背景透明
SetTextColor(dc, GetSysColor(COLOR_CAPTIONTEXT)); //设置文本颜色 为 真正的标题的文本颜色 SetTextBuf(nil);//置 真正标题 为空
Timer1.Enabled := True;
end;procedure TForm1.FormDestroy(Sender: TObject);
begin
DeleteObject(f);
ReleaseDC(Handle, dc)
end;procedure TForm1.Timer1Timer(Sender: TObject);
var
rc: TRect;
begin
Timer1.Enabled := False; if v > l then Dec(v) else v := r;//修改区域的right SetWindowPos(Handle, 0 ,0, 0, 0, 0, SWP_NOACTIVATE or SWP_NOZORDER or SWP_NOMOVE
or SWP_NOSIZE or SWP_DRAWFRAME);//重画,去除先前画的内容
rc := Rect(l, t, v, b);
DrawText(dc, 'Form1', 5, rc, DT_SINGLELINE or DT_VCENTER or DT_RIGHT);//真正的标题其实不是垂直居中的! Timer1.Enabled := True
end;end.