我用SetWindowRgn()给窗口设置了个不规则的形状,但是问题出现了,当我拖动窗口的时候,有个黑色放形的边框在动,我现在想给它去掉,请给想个办法.谢谢.
解决方案 »
- HTTPS SSL USBKey
- 请问 OpenPrinter , StartDocPrinter 等API函数被封装在哪个单元中?
- 一个严重的问题,请各位高手帮帮我,感激不尽,时间紧,急急急
- 请问一个同时有:=和=符号的表达式的含义
- 急! ! ! !急! ! ! !急! ! ! !使文档里的内容显示到RichEdit里.
- 中级难度题目--近来瞧瞧吧!
- 如何在程序实现网页中跑马灯功能?
- 如何用 case 来对字符串进行判断??
- 有研究过IManipulationProcessor和FInertiaProcessor这个方面的吗?
- 为什么资源文件找不到?
- 在线求教!数据库保存文本文件提速
- 各位高手,如何在dbgrid中把英文列表体改成中文的?多谢了
var
Rgn1: HRgn;
begin
Rgn1 := CreateEllipticRgn(0, 20, 170, 170);
SetWindowRgn(Handle, Rgn1, true);
end;我试了没有你说的那种情况啊!
在系统的显示属性对话框中有一项叫:拖动时显示窗口内容,选中就没框了,如果一定不能有框,用这个移动办法(摘自超级猛料)
不规则窗体移动时如何去掉虚框
0:去掉窗体原来的Caption栏1:自己做一个模拟的Caption栏。2:拦截鼠标在这个模拟的区域的Mouse消息,鼠标进入的时候,改变消息所指范围,变成NCHITEST,移出时恢复3:拦截WM_MOUSEDOWN消息,设置起始点。4:拦截WM_MOUSEMOVE消息,代码如下:if ssLeft in Shift thenbeginForm1.Left := Form1.Left - (MPos.X-X);Form1.Top := Form1.Top - (MPos.Y-Y);end;全部测试代码:varMPos:TPoint; {Position of the Form before drag}procedure TForm1.Button1Click(Sender: TObject);varr:HRGN;beginr:=CreateEllipticRgn(0,0,300,300);SetWindowRgn(handle,r,true);DeleteObject(r);end;procedure TForm1.Button2Click(Sender: TObject);beginclose;end;procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);beginMPos.X := X;MPos.Y := Y;end;procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);beginif ssLeft in Shift thenbeginForm1.Left := Form1.Left - (MPos.X-X);Form1.Top := Form1.Top - (MPos.Y-Y);end;end;***************************************unit epMoveForm;interfaceusesWindows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;typeTepMoveForm = class(TGraphicControl)privateFDown: Boolean;FOldX, FOldY: Integer;protectedprocedure MouseDown(Button: TMouseButton; Shift: TShiftState;X, Y: Integer); override;procedure MouseMove(Shift: TShiftState; X, Y: Integer); override;procedure MouseUp(Button: TMouseButton;Shift: TShiftState; X, Y: Integer); override;publicprocedure Paint; override;constructor Create(AOwner: TComponent); override;publishedproperty Align;end;procedure Register;implementationconstructor TepMoveForm.Create(AOwner: TComponent);begininherited Create(AOwner);Width := 100;Height := 100;end;procedure TepMoveForm.Paint;begin// if csDesigning in ComponentState thenwith Canvas dobeginPen.Style := psDash;Brush.Style := bsClear;Rectangle(0, 0, Width, Height);endend;procedure TepMoveForm.MouseMove;beginif FDown thenwith TForm(Owner) doSetBounds(Left + X - FOldX, Top + Y - FOldY, Width, Height);end;procedure TepMoveForm.MouseUp;beginFDown := False;end;procedure TepMoveForm.MouseDown;beginif (Button = mbleft) and not FDown then FDown := True;FOldX := X;FOldy := Y;end;procedure Register;beginRegisterComponents('Win32', [TepMoveForm]);end;end.