MessageBoxにVisualStyleが適用されない

MessageBox#Showだが、アラートを表示するために久しぶりに使ってみるとWindowsXPのVisualStyleが適用されていないことに気が付いた。

前に使ったときはちゃんとVisualStyleは適用されていたけどなぁ、と思っていろいろ試してみたところ、MessageBox#Showメソッドの第6パラメタを指定するとVisualStyleが適用されないようだ。

[STAThread]
static void Main(string[] args)
{
    Application.EnableVisualStyles();
    DialogResult result = MessageBox.Show("VisualStyleが有効にならないのは何故"
        , "どうして"
        , MessageBoxButtons.OK
        , MessageBoxIcon.Exclamation
        , MessageBoxDefaultButton.Button1
        , MessageBoxOptions.DefaultDesktopOnly);
    Application.Run(new Form());
}

試しにMessageBoxOptionsを指定しないで実行したところ、

と、VisualStyleが正しく適用されるのだが、MessageBoxOptionsを指定しない場合、システムモーダル※TopMostなウインドウにならないので、アラートとしては使えない。バグかな。

※今でもついつい使ってしまうのだが、現在のWindows O/SのAPIでは"システムモーダル"なウインドウという概念は通常使わない。