Используя DwmExtendFrameIntoClientArea
Вызов API с Аэро включенным Стеклом работает просто великолепно. Однако я хочу, чтобы это работало, когда Аэро Стекло отключено также, как то, как это работает в панели управления Windows:
Заметьте, как кадр расширился в клиентскую область, даже при том, что Аэро Стекло отключено? Когда я делаю DwmExtendFrameIntoClientArea
Вызов API в моем приложении, возвращенный HRESULT является определенно не успехом, и мое приложение заканчивает тем, что было похоже на это:
http://img197.imageshack.us/img197/9629/clientapplication.png
Обычно, с Аэро включенным Стеклом, граница расширяет вниз к нижней части кнопки навигации, как в панели управления. Как я делаю это? DwmExtendFrameIntoClientArea
ясно не работает.
Между прочим, если это релевантно, мое приложение является приложением WPF.
Вы должны нарисовать это быть самим собой, похожим на фрейм.
Вы должны использовать DwmIsCompositionEnabled
, чтобы проверить, включен ли DWM, и обработать WM_DWMCOMPOSITIONCHANGED
для обнаружения изменения состояния DWM.
Затем вам нужно разделить способ рисования окна, если DWM включен, вы используете DwmExtendFrameIntoClientArea
, если он отключен, вы рисуете «рамку» самостоятельно.
Я понятия не имею, как дублировать фрейм Aero в WPF (в моем приложении у меня есть собственная цветовая схема, и я не использую фрейм Auro).
Это раздражает, но когда DWM отключен, система возвращается к рисованию в стиле XP, и ни одна из служб DWM не работает - даже те, которые не связаны с эффектом стекла.