У меня есть панель инструментов, разработанная в более старых версиях Windows, которая в значительной степени отключена в Vista из-за новой границы окна. При заполнении границ по умолчанию, равном 4, все на панели инструментов сдвигается на четыре пикселя вниз и вправо, а затем все обрезается на четыре пикселя снизу и справа. Меня не очень волнует горизонтальное измерение, но по вертикали это означает, что приложение теряет восемь пикселей видимого содержимого.
Под «панелью инструментов» я подразумеваю окно, подобное следующему:
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 "Игнорировать настройку 'заполнение границ'; мой заполнитель границ равен 0"?
- Если нет, то как приложение определяет, как задан отступ для границ, чтобы оно могло увеличить окно в два раза?
- Для обоих вопросов, как вы делаете это таким образом, чтобы один и тот же исполняемый файл мог работать под XP, Vista, Win2003 и т. Д.?