オーバーライドしたWndProcでWM_CLOSEのメッセージを捕獲し、何も処理しないことで無かったことにする。 これにより、×ボタンなどにより閉じることができないフォームを作ることができる。 ただし、別の閉じる方法を提供しなければならない。

public class Form1 : System.Windows.Forms.Form
{
    // 途中略

    // WndProcメソッドをオーバーライドし
    // WM_CLOSEメッセージ自体を無視する
    protected override void WndProc( ref Message m )
    {
        const int WM_CLOSE = 0x10;

        // ウィンドウを閉じない
        if ( m.Msg == WM_CLOSE ) 
        {
            // 閉じる処理をキャンセル
            m.Result = IntPtr.Zero;
        }
        else
        {
            base.WndProc( ref m );
        }
    }
}