フォームを常に最背面に表示する
スポンサーリンク
フォームを常に最背面に表示したい場合は、Win32 API に頼ることになります。FindWindow 関数で Program Manager という特別なウィンドウ ハンドルを得て、そのハンドルを SetParent 関数で親ウィンドウのハンドルにすることで再背面を実現します。
まずは、ベタな方法からやってみましょう。初めに、API の宣言をしておく必要があります。
サンプルコード
以下にサンプルコードを示します。
J# 全般
// 以下の名前空間をインポートする import System.Runtime.InteropServices.*; public class Form1 extends System.Windows.Forms.Form { Windows フォーム デザイナで生成されたコード // FindWindow 関数 /** @attribute DllImport("USER32.DLL", CharSet=CharSet.Auto) */ private static final native System.IntPtr FindWindow( System.String lpClassName, System.String lpWindowName ); // SetParent 関数 /** @attribute DllImport("USER32.DLL", CharSet=CharSet.Auto) */ private static final native System.IntPtr SetParent( System.IntPtr hWndChild, System.IntPtr hWndNewParent ); // ここから先が使用例になります private void button1_Click(Object sender, System.EventArgs e) { // Program Manager のハンドルを取得する System.IntPtr hProgramManagerHandle = FindWindow(null, "Program Manager"); // 正しく取得できた場合は、Program Manager を親ウィンドウに設定する if (! hProgramManagerHandle.Equals(System.IntPtr.Zero)) { System.IntPtr hSuccess = SetParent(this.get_Handle(), hProgramManagerHandle); } } }
次に TopMost プロパティに習って、BottomMost プロパティのようなものを作ってみましょう。このプロパティを true に設定すると再背面での表示になり、false に設定すると元に戻るようなイメージになります。
ここから先は保留中...
関連するリファレンス
準備中です。