ボーダーレスフォームを作成しました。次を使用してシステムメニューをそれに割り当てることができました。
protected override CreateParams CreateParams
{
get
{
CreateParams param = base.CreateParams;
param.Style |= (WS_SYSMENU);
return param;
}
}
しかし、実行すると、次のように WMNCHITTEST で設定したカスタム サイズ変更ゾーンが表示されなくなりました。
protected override void WndProc(ref Message m)
{
const int wmNcHitTest = 0x84;
const int htBottomLeft = 16;
const int htBottomRight = 17;
if (m.Msg == wmNcHitTest)
{
int x = (int)(m.LParam.ToInt64() & 0xFFFF);
int y = (int)((m.LParam.ToInt64() & 0xFFFF0000) >> 16);
Point pt = PointToClient(new Point(x, y));
Size clientSize = ClientSize;
if (pt.X >= clientSize.Width - 40 && pt.Y >= clientSize.Height - 40 && clientSize.Height >= 40)
{
m.Result = (IntPtr)(htBottomRight);
return;
}
}
base.WndProc(ref m);
}
では、これを克服するにはどうすればよいでしょうか。WMNCHITTEST も尊重するシステム メニューでボーダレス フォームを作成することはできますか?