次のような(固定サイズの)ポップアップウィンドウを作成したいと思います。
私のアプリケーションではC#を使用しています。NativeWindowを調べましたが、これが正しい方法かどうかはわかりません。ウィンドウをWindows7のボリュームコントロールまたは「接続」ウィンドウとまったく同じように動作させたい。
どうすればこれを達成できますか?
WinFormsを使用して、フォームを作成し、以下を設定します。
Text = "";
FormBorderStyle = Sizable;
ControlBox = false;
MaximizeBox = false;
MinimizeBox = false;
ShowIcon = false;
編集:
これにはウィンドウがかなり大きい必要がありますが、それを少しごまかすことができます。最小サイズと最大サイズを目的のサイズに設定します。これにより、ユーザーのサイズ変更ができなくなります。
ジェフが提案したように、CreateParamsでもこれを行うことができます。
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
unchecked
{
cp.Style |= (int)0x80000000; // WS_POPUP
cp.Style |= 0x40000; // WS_THICKFRAME
}
return cp;
}
}
ただし、どちらの場合も、端にカーソルを合わせるとサイズ変更カーソルが表示されます。それを防ぐ方法がわかりません。
CreateParamsで、WS_POPUPとWS_THICKFRAMEを指定します。
私はこれを達成することができました:
if (m.Msg == 0x84 /* WM_NCHITTEST */) {
m.Result = (IntPtr)1;
return;
}
base.WndProc(ref m);
境界線上のカーソルがハンドルWM_NCHITTEST
を超え、境界線を超えたときに戻るのを防ぐためHTBORDER
。