B
Bral
Unregistered / Unconfirmed
GUEST, unregistred user!
unit Main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, ExtCtrls, StdCtrls;
type
TfrmMain = class(TForm)
tmrMouseOut: TTimer;
procedure MouseLeaveProc(Sender: TObject);
private
{ Private declarations }
protected
procedure WMMOVING(var Msg: TMessage);
message WM_MOVING;
procedure MouseEnterProc(var Msg: TMessage);
message CM_MOUSEENTER;
public
{ Public declarations }
end;
var
frmMain: TfrmMain;
implementation
{$R *.dfm}
{
****************************
* 以下为窗口效果相关过程 *
****************************
}
//限制窗口的Top不能小于0,即窗口不能被拖动到顶部以外
procedure TfrmMain.WMMOVING(var Msg: TMessage);
begin
inherited;
//当窗口被移动的时候
if PRECT(Msg.lParam).Top < 0 then
PRECT(Msg.lParam).Top := 0;
end;
//实现窗口自动弹出
procedure TfrmMain.MouseEnterProc(var Msg: TMessage);
begin
inherited;
tmrMouseOut.Enabled := True;
//如果窗口不是隐藏的,不用弹出。
if Self.Top >= 0 then
Exit;
Self.Top := 0;
Msg.Result := 0;
end;
//实现窗口自动隐藏
procedure TfrmMain.MouseLeaveProc(Sender: TObject);
var
pt: TPoint;
begin
GetCursorPos(pt);
if (not PtInRect(Self.BoundsRect, pt)) and (GetAsyncKeyState(VK_LButton) <> 0) then
Exit;
if PtInRect(Self.BoundsRect, pt) then
Exit;
tmrMouseOut.Enabled := False;
//如果窗口不在最顶部,不用隐藏。
if Self.Top > 0 then
Exit;
//将窗口上缩,只显示三个像素
Self.Top := -Self.Height + 3;
end;
{
****************************
* 以上为窗口控制相关过程 *
****************************
}
end.
这个是2ccc上找到的,D7编译后一切正常,但是D2007编译就不能自动弹出了。鼠标移动到隐藏后剩下的那一点点窗体上面不会自动弹出,必须点击一下才行。这个是怎么回事?另外2ccc上其他几个自动隐藏的源代码都在D2007下出问题,编译能通过,但是实际效果就不是那么回事了。谁能告诉我怎么回事。谢谢
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, ExtCtrls, StdCtrls;
type
TfrmMain = class(TForm)
tmrMouseOut: TTimer;
procedure MouseLeaveProc(Sender: TObject);
private
{ Private declarations }
protected
procedure WMMOVING(var Msg: TMessage);
message WM_MOVING;
procedure MouseEnterProc(var Msg: TMessage);
message CM_MOUSEENTER;
public
{ Public declarations }
end;
var
frmMain: TfrmMain;
implementation
{$R *.dfm}
{
****************************
* 以下为窗口效果相关过程 *
****************************
}
//限制窗口的Top不能小于0,即窗口不能被拖动到顶部以外
procedure TfrmMain.WMMOVING(var Msg: TMessage);
begin
inherited;
//当窗口被移动的时候
if PRECT(Msg.lParam).Top < 0 then
PRECT(Msg.lParam).Top := 0;
end;
//实现窗口自动弹出
procedure TfrmMain.MouseEnterProc(var Msg: TMessage);
begin
inherited;
tmrMouseOut.Enabled := True;
//如果窗口不是隐藏的,不用弹出。
if Self.Top >= 0 then
Exit;
Self.Top := 0;
Msg.Result := 0;
end;
//实现窗口自动隐藏
procedure TfrmMain.MouseLeaveProc(Sender: TObject);
var
pt: TPoint;
begin
GetCursorPos(pt);
if (not PtInRect(Self.BoundsRect, pt)) and (GetAsyncKeyState(VK_LButton) <> 0) then
Exit;
if PtInRect(Self.BoundsRect, pt) then
Exit;
tmrMouseOut.Enabled := False;
//如果窗口不在最顶部,不用隐藏。
if Self.Top > 0 then
Exit;
//将窗口上缩,只显示三个像素
Self.Top := -Self.Height + 3;
end;
{
****************************
* 以上为窗口控制相关过程 *
****************************
}
end.
这个是2ccc上找到的,D7编译后一切正常,但是D2007编译就不能自动弹出了。鼠标移动到隐藏后剩下的那一点点窗体上面不会自动弹出,必须点击一下才行。这个是怎么回事?另外2ccc上其他几个自动隐藏的源代码都在D2007下出问题,编译能通过,但是实际效果就不是那么回事了。谁能告诉我怎么回事。谢谢