DwmExtendFrameIntoClientArea и развернутое окно - PullRequest
1 голос
/ 14 ноября 2011

Я пытаюсь создать хороший графический интерфейс с эффектом стекла в клиентской области.

Итак, я реализовал это, как описано здесь .

У меня все получилось, и у меня была красивая рама, полностью из стекла, но только пока окно не развернуто. Когда я максимизирую окно, оно становится только черным: - (

С некоторыми поисками в 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. Может ли это быть проблемой с драйвером видеокарты?

...