У меня есть панель инструментов, разработанная в старых версиях Windows, которая в значительной степени отключена под Vista из-за нового дополнения к окну. С положением границы по умолчанию 4, все на панели инструментов сдвигается на четыре пиксела вниз и вправо, а затем все обрезается на четыре пикселя с нижней и правой сторон. Я не очень забочусь о горизонтальном измерении, но вертикально это означает, что приложение теряет восемь пикселей видимого содержимого.Как панель инструментов Vista может игнорировать или определять настройку заполнения границы?
Под «панели инструментов» Я имею в виду окно, созданное похожее на следующее:
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"?
- Если нет, то каким образом приложение определяет, что задано для заполнения границ, чтобы оно могло увеличить его окно вдвое больше?
- Для обоих вопросов, как вы это делаете таким образом, чтобы один и тот же исполняемый файл мог работать под XP, Vista, Win2003 и т. Д.?
+1. Удаление WS_THICKFRAME разрешило это для меня. – Eddie