2012-03-06 1 views
11

私は、ユーザーがサイズ変更することができない固定ウィンドウを約束していますが、もちろん、この 'unresizable'ウィンドウを最大にするためにタイトルバーをダブルクリックすることが許されていると迷惑を掛けています。これをどうやって消すことができますか?私はwinformsコードでそれを行うことができますか、または私はWin32に移動する必要がありますか?FormBorderStyle.FixedToolWindowのウィンドウを最大化するようにウィンドウタイトルバーのダブルクリックを停止するにはどうすればよいですか?

ありがとうございます!

答えて

26

あなたは、一般的にタイトルバーをダブルクリックしてメッセージを無効にする(またはウィンドウを最大化されたデフォルトの動作を変更する)ことができます偽

+1

1うわーですが、私はこれがうまくいくとは思いませんでしたが、それはありません。ニース。 –

+0

クリック可能な「ボックスを最大化する」ボタンがすでにこの境界線スタイルで隠されていたので、私はこれを行うとは思わなかった。 –

+2

私のためのダブルクリックの助けを借りない – Petr

17

にフォームのMaximizeBoxプロパティを設定することができます。それはどのFormBorderStyleに動作します:

private const int WM_NCLBUTTONDBLCLK = 0x00A3; //double click on a title bar a.k.a. non-client area of the form 

     protected override void WndProc(ref Message m) 
     { 
      if (m.Msg == WM_NCLBUTTONDBLCLK) 
      { 
       m.Result = IntPtr.Zero; 
       return; 
      } 
      base.WndProc(ref m); 
     } 

MSDN Source

乾杯を!

+0

ダブルクリックシナリオでは1+ –

8

/// ///これは、フォームをマウスで移動させたり、マウスのダブルクリックでサイズを変更したりしないように、基本WIN32ウィンドウプロシージャをオーバーライドします。 /// ///

protected override void WndProc(ref Message m) 
    { 
     const int WM_SYSCOMMAND = 0x0112; 
     const int SC_MOVE = 0xF010; 
     const int WM_NCLBUTTONDBLCLK = 0x00A3; //double click on a title bar a.k.a. non-client area of the form 

     switch (m.Msg) 
     { 
      case WM_SYSCOMMAND:    //preventing the form from being moved by the mouse. 
       int command = m.WParam.ToInt32() & 0xfff0; 
       if (command == SC_MOVE) 
        return; 
       break; 
     } 

     if(m.Msg== WM_NCLBUTTONDBLCLK)  //preventing the form being resized by the mouse double click on the title bar. 
     { 
      m.Result = IntPtr.Zero;     
      return;     
     } 

     base.WndProc(ref m); 
    } 
+0

ダブルクリックシナリオでは1+ –

3

私はパーティーに遅刻を知って、同じを探している人を助けるかもしれません。

private const int WM_NCLBUTTONDBLCLK = 0x00A3; //double click on a title bar a.k.a. non-client area of the form 

private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled) 
{ 

    switch (msg) 
    {     
     case WM_NCLBUTTONDBLCLK: //preventing the form being resized by the mouse double click on the title bar. 
      handled = true; 
      break;     
     default: 
      break; 
    } 
    return IntPtr.Zero; 
} 
1

私はVB.Netでこれをチェックしました。以下のコードは私のために働いた。

Private Const Win_FormTitleDoubleClick As Integer = 163 

Protected Overrides Sub WndProc(ByRef m As Message) 
    If m.Msg = Win_FormTitleDoubleClick Then 
     m.Result = IntPtr.Zero 
     Return 
    End If 
    MyBase.WndProc(m) 
End Sub 

注:163は、イベントコード

関連する問題