我这样为何不对?? 代码?不是说了吗?但我觉得自己的方法应该错了,一个被hide了的窗口,是不能触发onmousemove事件的!还得向各位请教呀:] 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不能在ONPAINT中写HIDE, 因为SHOW也会触发ONPAINT事件;仔细看QQ的窗口,并没有完全隐藏,而是留下一部分,因此只要运用ONMOUSEMOVE配合MOUSE的坐标设置窗口的大小即可 to szchengyu(cy) 兄弟说的很有道理呀,是不是在窗口的oncreate事件中将其尺寸设得很小,再在该窗口的onmousemove事件重新调整它的大小? yeah,除ONMOUSEMOVE外,还要............ 试过了还是不行!!窗口的borderstyle属性已设为bsnone或者bsdialog,onmousemove事件是触发了,窗口也变大了,可鼠标移走后,怎么让窗口又变成"一线天"的样子呢??好像没有鼠标离开窗口的事件呀??!!! 其实QQ的窗体并没有hide,而是变得很小,不信你仔细观察屏幕边缘就知道了 QQ的这个功能是HOOK实现的,等我去试试先(猜的,错了不要怪我,谁谁谁!别扔鸡蛋) to Taken(铁拳);我也知道它并没有hide了:] Hide以后 还能激发Onshow事件吗?你再看看,QQ并没有全部隐藏,只是把窗口大小改变了 我不会用CM_MOUSEENTER / CM_MOUSELEAVE,但看了源代码,DELPHI其实也是在空闲的时候检测鼠标的位置来处理以上两个消息的以下的代码应该可以,不知还有没有更好的办法unit Unit1;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); private { Private declarations } public { Public declarations } procedure MYIdle(Sender: TObject; var Done: Boolean); end;var Form1: TForm1;implementation{$R *.DFM}procedure TForm1.MYIdle(Sender: TObject; var Done: Boolean);var p: TPoint;begin GetCursorPos(p); if (p.x < left - 5) or (p.x > left + width + 5) or (p.y < top) or (p.y > top + height) then begin height := 3; borderstyle := bsnone; Done := true end else begin Done := false; end;end;procedure TForm1.FormCreate(Sender: TObject);begin height := 2; Application.OnIdle := MyIdle;end;procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);begin if (y = 0) or (y = 1) then begin height := 200; borderstyle := bsSizeable; end;end;end. 是呀,我已说过自己以前的想法是错的了:]为什么大家还水放过我??to xzgyb(老达摩):CM_MOUSEENTER,CM_MOUSELEAVE好像不是windows的消息吧?我在d5带的sdk中没有找到相关帮助说明,继续关注 非常感谢szchengyu(cy)!!你的代码我等下再看 我试做了QQ的窗口,基本上已经实现了窗体的模仿,但是还没有任何功能,如果要留下你的mail; to:thygw(注册表错误) 能给我一份吗?[email protected] 哈哈,差点出过好机会了:][email protected] TO: thygw(注册表错误) 我也要:[email protected] w~~~~~信件没有收到TO: thygw(注册表错误)你发了没??如果真的能发,请e到[email protected] 一个难题,求高手帮忙!!在线!! 急求一个小问题~~如果判断一个BUTTON是否在矩形的区域内??Up者都有分!! API里面用writefile()函数发送串口数据,怎么数据有时会截掉? 在DELPHI里两台远端计算机通过MODEM传输数据,用什么控件好呢? 关于文件压缩.急!在线等待!立即给分! 怎样取得cpu的型号! MessageBox能不能让它自动返回 哪个控件是TextArea的? 怎样在应用程序中实现动态创建快捷方式的功能?有实例最好:) 请问哪有MOD音乐文件的格式说明。 高手来吧 大家快来啊!
因此只要运用ONMOUSEMOVE配合MOUSE的坐标设置窗口的大小即可
兄弟说的很有道理呀,是不是在窗口的oncreate事件中将其尺寸设得很小,再在该窗口的
onmousemove事件重新调整它的大小?
onmousemove事件是触发了,窗口也变大了,可鼠标移走后,怎么让窗口又变成"一线天"的样子呢??
好像没有鼠标离开窗口的事件呀??!!!
等我去试试先
(猜的,错了不要怪我,谁谁谁!别扔鸡蛋)
我也知道它并没有hide了:]
你再看看,QQ并没有全部隐藏,只是把窗口大小改变了
DELPHI其实也是在空闲的时候检测鼠标的位置来处理以上两个消息的以下的代码应该可以,不知还有没有更好的办法unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
procedure MYIdle(Sender: TObject; var Done: Boolean);
end;var
Form1: TForm1;implementation{$R *.DFM}procedure TForm1.MYIdle(Sender: TObject; var Done: Boolean);
var
p: TPoint;
begin
GetCursorPos(p);
if (p.x < left - 5) or (p.x > left + width + 5) or (p.y < top) or (p.y > top + height) then
begin
height := 3;
borderstyle := bsnone;
Done := true
end else
begin
Done := false;
end;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
height := 2;
Application.OnIdle := MyIdle;
end;procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if (y = 0) or (y = 1) then
begin
height := 200;
borderstyle := bsSizeable;
end;
end;end.
为什么大家还水放过我??
to xzgyb(老达摩):
CM_MOUSEENTER,CM_MOUSELEAVE好像不是windows的消息吧?我在d5带的sdk中没有找到相关帮助
说明,
继续关注
你的代码我等下再看
能给我一份吗?[email protected]
[email protected]
TO: thygw(注册表错误)
你发了没??
如果真的能发,请e到[email protected]