如何拦截窗体的消息(如关闭,最大,最小)? ( 积分: 10 )

  • 主题发起人 主题发起人 delphiboy
  • 开始时间 开始时间
D

delphiboy

Unregistered / Unconfirmed
GUEST, unregistred user!
如何拦截窗体的消息<br>如关闭,最大,最小,双击最大化这些消息?<br><br>因为我把窗体DOCK到了一个PANEL里面,但用户如果双击属性栏,窗体回最大化,所以我想拦截这些消息。
 
如何拦截窗体的消息<br>如关闭,最大,最小,双击最大化这些消息?<br><br>因为我把窗体DOCK到了一个PANEL里面,但用户如果双击属性栏,窗体回最大化,所以我想拦截这些消息。
 
我想让窗体DOCK上面后,用户不能关闭它。而且双击时候,它不会最大化。
 
在message.pas中找到这些消息的标识, 然后在窗体中的代玛中拦截这些消息。
 
wm_systemcommand
 
前面写错<br><br>procedure WMSysCommand(var message: TMessage);Message WM_SYSCOMMAND ;<br>procedure TfrmViewPrinterLog.WMSysCommand(var message: TMessage);<br>begin<br> &nbsp; &nbsp; if (Message.WParam = SC_MINIMIZE)Or(Message.WParam=Sc_Close) then<br> &nbsp; &nbsp; begin<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Self.Hide;<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Self.SetTrayIcon;<br> &nbsp; &nbsp; end<br> &nbsp; &nbsp; else<br> &nbsp; &nbsp; &nbsp; &nbsp; Inherited;<br>end;
 
我们在双击窗体的属性栏时候,会使窗体最大化或还原一般大小,如果拦截这个消息,让他什么都不做。就是说双击这个功能在窗体的属性无效?
 
Application.CreateForm(Tjlddata_form, jlddata_form);<br> &nbsp;Panel2.Width :=284 ;<br> &nbsp;jlddata_form.HostDockSite :=Panel2 ;<br> &nbsp;jlddata_form.Show ;<br><br><br>我将窗体停靠在Panel上面,但如果用户双击该窗体属性栏,那么窗体回最大化。如何屏蔽掉呢?
 
你是不是想让窗口大小不发生改变,还是想当用户单击最大,小化按钮,关闭按钮,时做什么动作呢?
 
当窗口大小发生变化时,可拦截WM_SIZE消息,在消息处理程序中强行设置窗口大小,也可以一开始就设置窗口属性让其不能改变大小,并设置窗口大小,我设计过一个小程序,其中我就不让窗口在任何时候发生改变,以下你参照一下吧:<br>BOOL CMainFrame::PreCreateWindow(CREATESTRUCT&amp; cs)<br>{<br> if( !CFrameWnd::PreCreateWindow(cs) )<br> return FALSE;<br> // TODO: Modify the Window class or styles here by modifying<br> // &nbsp;the CREATESTRUCT cs<br> cs.x=0;<br> cs.y=0;<br> cs.cx=799;<br> cs.cy=583;<br> cs.style &amp;=WS_MAXIMIZE|WS_SYSMENU;<br> cs.lpszName = _T(&quot;红枫五字棋&quot;);<br><br> return TRUE;<br>}
 
把窗体的BorderStyle属性设置为bsNone,可不可以?
 
可以将窗体的 bordericons.biminimize 和 bimaximixe 属性设置为false呀
 

Similar threads

S
回复
0
查看
694
SUNSTONE的Delphi笔记
S
S
回复
0
查看
782
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部