古いバージョンの Windows で開発されたツールバーは、ウィンドウの新しい境界パディングにより、Vista ではほとんど切断されています。デフォルトの境界パディング 4 では、ツールバーのすべてが 4 ピクセル下と右に押し出され、すべてが下側と右側から 4 ピクセル切り取られます。水平方向の寸法はあまり気にしませんが、垂直方向に見ると、アプリケーションが表示可能なコンテンツの 8 ピクセルを失うことになります。
「ツールバー」とは、次のように作成されたウィンドウを意味します。
APPBARDATA AppBarData;
AppBarData.hWnd = CreateWindowEx(WS_EX_TOOLWINDOW | WS_EX_TOPMOST, MAIN_WNDCLASS,
"", WS_POPUP | WS_THICKFRAME | WS_CLIPCHILDREN,
0, 0, 400, TOOLBAR_HEIGHT, NULL, NULL,
AppInstance, NULL);
// more initialization ....
SHAppBarMessage(ABM_NEW, &AppBarData);
境界パディングは、一見すると Vista にとって新しい構成項目であるため、XP と Vista の両方で実行されるアプリケーションはどのようにこれを処理できますか? 私の質問は次のとおりです。
- ツールバーが Vista に「'border padding' 設定を無視します。私の境界パディングは 0 です」と伝えることは可能ですか?
- そうでない場合、アプリケーションはどのようにして境界パディングが設定されているかを判断し、ウィンドウをその 2 倍の高さにすることができるのでしょうか?
- 両方の質問に対して、同じ実行可能ファイルを XP、Vista、Win2003 などで動作させるにはどうすればよいですか?