To rh:
我知道你说的方法的原理,而且也部分试验过.
请给出你的截获窗体移动消息及自画本身的代码,好吗?
我想你的这种方法也许可行,但是可能会有闪烁.
我知道你说的方法的原理,而且也部分试验过.
请给出你的截获窗体移动消息及自画本身的代码,好吗?
我想你的这种方法也许可行,但是可能会有闪烁.
解决方案 »
- stringgrid中的递增
- Delphi 7 IDE的那些面板不能像Delphi 2007一样停靠起来的么?非得悬浮的?
- 求助:Delphi用ADO连接SQL Server问题
- 串口打印问题,各位大侠帮帮忙!
- DELPHI作为一种通用的软件开发工具有哪些主要的优点和不足
- 討論:通過代理服務器(如SyGate等)上網的QQ是如何接收信息的?
- OleContainer1如何清空
- 关于DBgrid遍历问题
- 关于在三层分布程序中,用ACTIVAX控件做前端,在分布时出的问题,急!!100分求救
- 关于自制VCL组件的问题
- for循环执行条件有错?
- 怎样用delphi写出端口扫描的程序,要速度很快!拜托了!
在Windows系统中,需要在移动窗口时显示窗口和虚框,可以调用Windows API函数实现:
SystemParametersInfo(SPI_GETDRAGFULLWINDOWS,TRUE,NULL,0);
var
p:^trect;
begin
p:=pointer(msg.lParam);
left:=p^.Left;
top:=p^.Top;
msg.Result:=integer(true);
msg.Result:=1;
SetWindowPos(handle,HWND_TOP ,p^.Left,p^.Top,p^.Right-p^.Left,p^.Bottom-p^.Top,SWP_SHOWWINDOW );
inherited;
end;
xixi~~repaint当然不可以了,慢得很:)
var Handled: Boolean);
var
P: TPoint;
R: TRect;
begin
if (msg.message = WM_NCMOUSEMOVE) or (msg.message = WM_MOUSEMOVE) then
begin
if IsDown then
begin
GetCursorPos(p);
SetBounds(p.x - pt.x, p.y - pt.y, Width, Height);
GetWindowRect(Handle, r);
ClipCursor(@r);
end;
end else if (msg.message = WM_NCLBUTTONDOWN) then
begin
if msg.wParam = HTCAPTION then
begin
IsDown := True;
GetCursorPos(pt);
pt.x := pt.x - Left;
pt.y := pt.y - Top;
Handled := True;
GetWindowRect(Handle, r);
ClipCursor(@r);
end;
end else if (msg.message = WM_NCLBUTTONUP) or (msg.message = WM_LBUTTONUP) then
begin
IsDown := False;
ClipCursor(nil);
end;
end;以上方法可以实现,但是不够完美,可供参考!