Windows 7では、ボリュームミキサーウィンドウには特定のスタイルがあり、太くて透明な境界線がありますが、タイトルバーはありません。 WinFormsウィンドウでそのウィンドウスタイルを再作成するにはどうすればよいですか?
Textをstring.Emptyに設定し、ControlBoxをfalseに設定して、タイトルバーを削除しようとしましたが、境界線も消えます。
form.Text = string.Empty;
form.ControlBox = false;
form.FormBorderStyle = FormBorderStyle.SizableToolWindow;
固定サイズのウィンドウの場合は、引き続きFormBorderStyle.SizableToolWindow
を使用する必要がありますが、フォームのWndProc
をオーバーライドして、クライアント以外のヒットテスト(サイズ変更カーソルへの切り替えに使用される)を無視できます。
protected override void WndProc(ref Message message)
{
const int WM_NCHITTEST = 0x0084;
if (message.Msg == WM_NCHITTEST)
return;
base.WndProc(ref message);
}
サイズを実際に適用したい場合は、フォームでMinimumSize
をMaximumSize
に等しく設定することもできます。
「この編集は投稿の作者に宛てたものであり、編集としては意味がありません。コメントまたは回答として書かれている必要があります。」クリスの答えの編集を新しい答えとして提示します。
彼の答えのコードは説明どおりに機能しますが、クライアント領域のマウスイベントの発生を防ぐこともできます。これを修正するには、(HTCLIENTのように)1を返す必要があります。
protected override void WndProc(ref Message message)
{
const int WM_NCHITTEST = 0x0084;
const int HTCLIENT = 0x01;
if (message.Msg == WM_NCHITTEST)
{
message.Result = new IntPtr(HTCLIENT);
return;
}
base.WndProc(ref message);
}