DwmExtendFrameIntoClientArea без аэро стекла

Используя DwmExtendFrameIntoClientArea Вызов API с Аэро включенным Стеклом работает просто великолепно. Однако я хочу, чтобы это работало, когда Аэро Стекло отключено также, как то, как это работает в панели управления Windows:

enter image description here

Заметьте, как кадр расширился в клиентскую область, даже при том, что Аэро Стекло отключено? Когда я делаю DwmExtendFrameIntoClientArea Вызов API в моем приложении, возвращенный HRESULT является определенно не успехом, и мое приложение заканчивает тем, что было похоже на это:

http://img197.imageshack.us/img197/9629/clientapplication.png

Обычно, с Аэро включенным Стеклом, граница расширяет вниз к нижней части кнопки навигации, как в панели управления. Как я делаю это? DwmExtendFrameIntoClientArea ясно не работает.

Между прочим, если это релевантно, мое приложение является приложением WPF.

11
задан Ian Boyd 10 December 2012 в 20:30
поделиться

1 ответ

Вы должны нарисовать это быть самим собой, похожим на фрейм.

Вы должны использовать DwmIsCompositionEnabled , чтобы проверить, включен ли DWM, и обработать WM_DWMCOMPOSITIONCHANGED для обнаружения изменения состояния DWM.

Затем вам нужно разделить способ рисования окна, если DWM включен, вы используете DwmExtendFrameIntoClientArea , если он отключен, вы рисуете «рамку» самостоятельно.

Я понятия не имею, как дублировать фрейм Aero в WPF (в моем приложении у меня есть собственная цветовая схема, и я не использую фрейм Auro).

Это раздражает, но когда DWM отключен, система возвращается к рисованию в стиле XP, и ни одна из служб DWM не работает - даже те, которые не связаны с эффектом стекла.

2
ответ дан 3 December 2019 в 09:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: