Я пытаюсь создать хороший графический интерфейс с эффектом стекла в клиентской области.
Итак, я реализовал это, как описано здесь .
У меня все получилось, и у меня была красивая рама, полностью из стекла, но только пока окно не развернуто. Когда я максимизирую окно, оно становится только черным: - (
С некоторыми поисками в Google и экспериментами я понял, что когда я отменяю действие окна в ответ на WM_WINDOWPOSCHANGING
, например:
case WM_WINDOWPOSCHANGING: {
WINDOWPOS* pWindowPos = (WINDOWPOS*)lParam;
if (pWindowPos->flags & SWP_FRAMECHANGED) {
InvalidateRect(hWnd, NULL, TRUE);
}
}
Я получаю эффект стекла и при максимизации окна.
Странно то, что это работает, только если я дважды щелкну по строке заголовка или по этой кнопке максимизации в правом верхнем углу окна. Но если я переместлю окно в верхнюю часть экрана, чтобы оно защелкнулось, чтобы максимизировать окно (Aero Snap), окно станет просто черным.
У кого-нибудь есть идеи, как это сделать правильно?
(я разрабатываю под Windows 7 64 бит.)
Edit:
Я должен также упомянуть, что я хочу удалить стандартную строку заголовка, я делаю это, возвращая 0
в ответ на сообщение WM_NCCALCSIZE
. Без этого все работает нормально.
Edit:
Тест на другой системе, который в основном такой же, прошел успешно. Единственное заметное отличие состоит в том, что есть другая видеокарта, AMD Radeon HD 4300 вместо AMD Radeon HD 5870. Может ли это быть проблемой с драйвером видеокарты?