- PR -

WndProcでのメッセージ(マウスクリック)

1
投稿者投稿内容
たく
会議室デビュー日: 2007/06/15
投稿数: 16
投稿日時: 2007-07-27 12:24
よろしくお願いします。

C#で
 ・フォーム
 ・画像(ユーザコントロール(派生元:PictureBox))
を用意し、フォーム全面に画像を張り付けています。
そして、以下のメソッドをユーザコントロール内で定義し、フォームにマウスイベントを通知しています。

−ユーザコントロール−
 protected override void WndProc(ref Message m)
 {
  switch (m.Msg)
  {
    case WM_NCHITTEST:
      m.Result = (IntPtr)HTTRANSPARENT;
      return;
  }
  base.WndProc(ref m);
 }

−フォーム−
 protected override void WndProc(ref Message m)
 {
  switch (m.Msg)
  {
    case WM_NCHITTEST:
      m.Result = (IntPtr)HTCAPTION;
      return;
  }
  base.WndProc(ref m);
 }



そこで、画像がクリックされた時に特殊な処理をしたいので、
 ・WM_LBUTTONDOWN = 0x201
を定義したのですが、このメッセージが来ていませんでした。


WndProc内で、コントロールがマウスクリックされたのを知る手段はないのでしょうか?
コントロール上でマウスクリックしたら、フォームを移動できるのでクリック自体は拾えているはずだと思うのですが、いまいちわかりません。

ご存じの方いたら教えてください、よろしくお願いします。

−環境−
Windows VISTA
VS2005
たく
会議室デビュー日: 2007/06/15
投稿数: 16
投稿日時: 2007-07-27 13:08
引用:

そこで、画像がクリックされた時に特殊な処理をしたいので、
 ・WM_LBUTTONDOWN = 0x201
を定義したのですが、このメッセージが来ていませんでした。



非クライアント領域なので、
 ・const int WM_NCLBUTTONDOWN = 0xA1;
を定義することで、期待どおりの動作を行えました。


1

スキルアップ/キャリアアップ(JOB@IT)