2011-12-31 6 views
-2

もちろん、ウィンドウ移動イベントを発生させる方法。何か案が?Cでウィンドウタイトルのダブルクリックを検出する方法#

+0

アプリケーションがウィンドウタイトルのダブルクリックに反応するのは非常に珍しいです。通常、これはウィンドウマネージャによって処理されます。なぜあなたはそれをしたいのですか? – CodesInChaos

+0

私はmdiコンテナに複数の子ウィンドウを持っています。私は作業を簡単にするためにドッキング可能なウィンドウとしてそれらを使用したいと思います。ユーザーコントロールをフォームのように動作させたくないからです。したがって、私はタイトルがクリックされ、私は私のドックのアクションを実行するときを知る必要があります。現在、DoubleClickに設定していますが、境界線ではなく内側のウィンドウ領域でのみ動作します。 – MahanGM

答えて

1

タイトルには1つの質問があり、あなたの質問は別のものです。あなたの質問のために、あなたはこのを探している、私は推測 - http://msdn.microsoft.com/en-us/library/system.windows.forms.control.move.aspx

EDIT:

あなたのタイトルの質問 - http://www.codeproject.com/KB/vb/MouseClickOnTitlebar.aspx

あなたは

#define WM_NCMBUTTONDBLCLK 0x00A9

でダブルクリックを処理することができます

あなたの質問に答えてほしい。

+0

2つの質問です。 1つはタイトル用で、もう1つは移動用です。とにかくありがとう。タイトルダブルクリックのアイデア? – MahanGM

+0

私は嫌な方法があなたを助けることができるかどうかを見ていました。これはあなたにとって簡単なようです。リンクに記載されているようなwinformメッセージを処理することが効果的です。十分に簡単です。 – King

0

ウィンドウのタイトルバーをダブルクリックすると、ウィンドウのサイズが変わります。最大化するか、通常のウィンドウ状態に戻ります。 Resizeイベントは、この2つのケースで発生し、ウィンドウが最小化されたときにも発生します。これは、ウィンドウを最大化、最小化、および他のウィンドウには、このようにサイズ変更イベントを処理できることを意味します

private void Form1_Resize(object sender, EventArgs e) 
    { 
     switch (this.WindowState) 
     { 
      case FormWindowState.Maximized: 
       //handle maximizing 
       break; 
      case FormWindowState.Minimized: 
       //handle minimizing 
       break; 
      case FormWindowState.Normal: 
       //if you want, handling resizing the window in Normal state. 
       break; 
      default: 
       break; 
     } 
    } 

あなたはまた、それが移動したときに何かをするために、フォーム/ウィンドウの移動イベントを処理することができます

private void Form1_Move(object sender, EventArgs e) 
    { 
     this.Text = this.Location.ToString(); 
    } 

こちらがお役に立てば幸いです。

+0

お返事ありがとうございます。私のフォームはSizableTool状態です。状態が変わることはありません。 – MahanGM

+0

FormBorderStyleがSizableToolWindowに設定されていることを意味します。この枠線スタイルのフォームは、最大化、最小化、サイズ変更、移動が可能です。 WindowStateはまだ変更できます*。私が書いたことを試しましたか?そうでない場合は、試して見てください。 :) – Mzn

+0

本当に?私はそれがSizableToolWindowに設定されて以来、変更されることはないと思った。私は今それを試してみましょう。 – MahanGM

0

このソリューションは私にとっては機能しません(VS2015、Win7)。 しかし、わずかに異なる方法が働いている...

protected override void WndProc(ref Message m) 
    { 
     base.WndProc(ref m); 
     const int WM_NCLBUTTONDBLCLK = 0x00A3; // this constant int is different 

     if (m.Msg == WM_NCLBUTTONDBLCLK) 
      this.OnResizeEnd(EventArgs.Empty); 
    } 
関連する問題