2009-05-30 10 views
5

私のプログラムでは、WndProcオーバーライドを使ってフォームのサイズを変更しています。あなたはフォームの端にポインタを移動すると、カーソルはまだそこにあります。とにかくこのカーソルを隠すことはありますか?C#リサイズカーソルを隠す

+3

を設定されていた私はこれをテストしていないので、私はちょうどコメントよ、あなたは傍受しようとしていますWM_NCHITTESTメッセージ?さらに詳しい情報はこちら:http://msdn.microsoft.com/en-us/library/ms645618(VS.85).aspx –

答えて

7

私はラッセが私を送ったリンクへのWndProcのおかげを使用する方法を発見しました。あなたの返信Jonに感謝しますが、それは私が欲しかったものではありませんでした。私はそれをテストしていない

protected override void WndProc(ref Message m) 
    { 
     const int WM_NCHITTEST = 0x0084; 

     switch (m.Msg) 
     { 
      case WM_NCHITTEST: 
       return; 
     } 

     base.WndProc(ref m); 
    } 

徹底的ので、任意の副作用があるかどうかを知るが、それは現時点では私のために正常に動作しません:私はそれをやった方法を知りたい人のために、私はこれを使用しました:)。

+0

のときに、resizeableに設定されているときに境界線が表示されるときだけ、投稿時にそのようなことに答えるつもりでした。あなたは帰りの後に休憩が必要はありません。 –

+0

いや、あなたの権利。習慣の力^ _^ – Ozzy

8

代わりにFormBorderStyleプロパティを適切に設定しないのはなぜですか?次にWndProcのどちらかを使用する必要はありません。ここで

は実証するいくつかのサンプルコードです - フォームのサイズを変更できるかどうかを切り替えるには、ボタンをクリックします。

using System; 
using System.Windows.Forms; 
using System.Drawing; 

class Test 
{ 
    [STAThread] 
    static void Main(string[] args) 
    { 
     Button button = new Button 
     { 
      Text = "Toggle border", 
      AutoSize = true, 
      Location = new Point(20, 20) 
     }; 
     Form form = new Form 
     { 
      Size = new Size (200, 200), 
      Controls = { button }, 
      FormBorderStyle = FormBorderStyle.Fixed3D 
     }; 
     button.Click += ToggleBorder; 
     Application.Run(form); 
    } 

    static void ToggleBorder(object sender, EventArgs e) 
    { 
     Form form = ((Control)sender).FindForm(); 
     form.FormBorderStyle = form.FormBorderStyle == FormBorderStyle.Fixed3D 
      ? FormBorderStyle.Sizable : FormBorderStyle.Fixed3D; 
    } 
} 
+0

私は、Vistaでそのサイズの境界線が得られるので、サイズ変更可能なツールボックスに設定しました。固定された3Dを使用すると、その境界線を取得できません(私はcontrolBoxをfalseとタイトルなしに設定します) – Ozzy

+0

SizeableToolWindowを意味すると仮定して、FixedToolWindowを試しましたか?それはまったく同じように見えますが、サイズ変更はできません。 –

+0

Downvoters:説明してください。その答えが改善されるでしょう。 –

0

FormBorderStyleを設定するだけで十分です。なぜあなたはこれにWndProcを使用していますか?

+0

この場合formborderstyleは十分ではないからです。 – Ozzy

0

@Ozzy/Lasse 私のために働いた!

は同じ問題を抱えていた:

標準の境界線のスタイルは、カスタムCreateParamsを行うには、私が望む外観を与えることはありません。 Size、MinimumSize、およびMaximumSizeに同じ値を指定して、サイズ変更を無効にしました。リサイズカーソルはまだ...オジー&ラッセのおかげでは、これは今WM_NCHITTESTをフィルタリングすることにより処理され、しかし

おかげ

関連する問題