わかった。すべてを理解したと思ったら、まだ理解していません。
機能的な appbar クラスをコーディングしてテストしました。単純な Windows フォームを使用してクラスを拡張およびテストすると、XP (SP 3、32 ビット) と Windows 7 (64 ビット) の両方で問題なく動作します。他のウィンドウにもアクセスでき、すべて適切に最大化されます。ただし、「複雑な」Windows フォーム (つまり、アプリケーション) を取得して appbar クラスから派生させると、デスクトップがそれを「キック」するように見えます。つまり、最初はすべてが適切にサイズ調整されますが、その後、デスクトップのサイズが元のサイズに戻ります。これは、フォームを appbar モードにした直後に発生する場合もあれば、フォームの外側をクリックしたとき (たとえば、ブラウザーを開くため) に発生したり、フォームが MessageBox を呼び出したときに発生したりする場合もあります。問題の可能性があると考えて、すべてのフォーム機能をバックグラウンド ワーカーに配置しましたが、結果は同じです。以下に3枚の画像を掲載しました。最初のものは、アプリケーションを初期の WinForm として示しています。2 つ目は、アプリバーが「機能している」ことを示しています。最後は、アプリバーが「機能していない」ことを示しています。問題が表示されない場合は、ごみ箱に注意してください。何か案は?
編集:ログを介してこれらの呼び出しを見つけました。デスクトップのサイズが「通常」に変更されるたびに、それらが起動するように見えます。今、「単純な」バージョンに同様のパターンがあるかどうかを確認しようとしています。
- msg=0x6 (WM_ACTIVATE) hwnd=0x1e03ea wparam=0x0 lparam=0x0 結果=0x0
- メッセージ = 0x1c (WM_ACTIVATEAPP) hwnd = 0x1e03ea wparam = 0x0 lparam = 0x1a90 結果 = 0x0
- メッセージ = 0x1a (WM_WININICHANGE) hwnd = 0x1e03ea wparam = 0x2f lparam = 0x9fe048 結果 = 0x0
- メッセージ = 0x1a (WM_WININICHANGE) hwnd = 0x1e03ea wparam = 0x18 lparam = 0x9fe038 結果 = 0x0