C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.87101 の関連記事表示

<< 0 >>
■87101  Re[1]: フォームを常に全面にし、操作だけは背面の画面に反映
□投稿者/ 魔界の仮面弁士 -(2018/04/11(Wed) 21:45:15)
    No87094 (対中率 さん) に返信
    > フォームを最前面にしつつ、キーボードやマウス操作のみ背面に反映する方法はないでしょうか。

    枠線部もマウス操作を受け付けない方が良いでしょうか?


    private void button1_Click(object sender, EventArgs e)
    {
     var fw = new FrameWindow();
     fw.SetBounds(50, 100, 350, 250);
     fw.Show(this);
    }


    private class FrameWindow : Form
    {
     protected override CreateParams CreateParams
     {
      get
      {
       const int WS_EX_NOACTIVATE = 0x8000000; // アクティブにならないフォームにする
       const int WS_EX_TRANSPARENT = 0x20; // マウス操作を透過(要レイヤードウィンドウ)
       var cp = base.CreateParams;
       cp.ExStyle |= WS_EX_TRANSPARENT | WS_EX_NOACTIVATE;
       return cp;
      }
     }
     public FrameWindow()
     {
      ShowInTaskbar = false;
      TopMost = true;
      BackColor = Color.Blue; // 枠線色
      Padding = new Padding(9); // 枠線幅
      FormBorderStyle = FormBorderStyle.None;
      Controls.Add(new Control() { BackColor = Color.Magenta, Dock = DockStyle.Fill });

      // WS_EX_TRANSPARENT を有効にするには、
      // TransparencyKey をセットするか、もしくは
      // Opacity を 1.0 未満にする必要がある
      TransparencyKey = Color.Magenta;
     }
    }
記事No.87094 のレス /過去ログ149より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -