如何改变无标题窗口的大小? ( 积分: 25 )

  • 主题发起人 主题发起人 czw6296
  • 开始时间 开始时间
C

czw6296

Unregistered / Unconfirmed
GUEST, unregistred user!
无标题窗口的移动很简单,使用SendMeaasge(this-&gt;Handle,WM_NCLBUTTON,HTCAPTION,0);<br>但如何改变大小呢?就像WinAMP一样,拉着边框可以改变。<br>Delphi或者c++Builder中如何实现?
 
无标题窗口的移动很简单,使用SendMeaasge(this-&gt;Handle,WM_NCLBUTTON,HTCAPTION,0);<br>但如何改变大小呢?就像WinAMP一样,拉着边框可以改变。<br>Delphi或者c++Builder中如何实现?
 
在onmousemove事件中判斷x,y的值,自己處理form的大小
 
onmousemove移动窗口,改变大小应该是鼠标指到边界时处理,鼠标指向边框时不会触发on莫mousemove事件。<br>WinAmp效果就很好。<br>处理X,Y有点儿麻烦,一方面鼠标移动在移动窗口,又要去改变大小,给用户的效果会不好。
 
public<br> &nbsp; &nbsp;{ Public declarations }<br> &nbsp; &nbsp; procedure CreateParams(var Params: TCreateParams); override;<br> &nbsp;end;<br><br>var<br> &nbsp;Form1: TForm1;<br><br>implementation<br><br>{$R *.dfm}<br><br>procedure TForm1.CreateParams(var Params: TCreateParams);<br>begin<br> &nbsp;inherited CreateParams(Params);<br> &nbsp;//Params.Style := Params.Style xor ws_caption xor ws_popup;<br> &nbsp;Params.Style := WS_THICKFRAME or WS_POPUP or WS_BORDER;<br>end;<br><br>procedure TForm1.FormCreate(Sender: TObject);<br>var<br> &nbsp;s:integer;<br>begin<br> &nbsp;s:=-1; <br> &nbsp;self.BorderWidth:=s;<br>end;
 
to wjiachun: &nbsp;谢谢,效果很好,只是有边框线,如何不显示边框?或者让边框的颜色和clientrect颜色一样,让用户感觉不到有边框。<br>没有边框就不能调整大小,不只到winamp是怎么实现的?
 
procedure HitTest(var Message: TWMMouse); message CM_NCHITTEST;<br><br>procedure TXXX.HitTest(var Message: TWMMouse);<br>var<br> &nbsp;pt: TPoint;<br>begin<br> &nbsp;inherited;<br> &nbsp;if Message.Result in [HTCLIENT, HTBORDER] then<br> &nbsp;begin<br> &nbsp; &nbsp;pt := SmallPointToPoint(Message.pos);<br> &nbsp; &nbsp;if ptinrect(rect(0, 0, 5, Height), pt) then<br> &nbsp; &nbsp; &nbsp;Message.Result := HTLEFT<br> &nbsp; &nbsp;else if ptinrect(....) then<br> &nbsp; &nbsp; &nbsp;Message.Result := HTTOP<br> &nbsp; &nbsp;else if ....<br> &nbsp;end;<br><br>end;
 
ok,问题基本解决了,只是要带个边框,用户可以忍受哦
 
后退
顶部