Я постараюсь объяснить мою проблему как можно лучше,
Я создаю многослойное окно в c ++ (с использованием windowsXP), все работает нормально, пока я не перетаскиваю свое созданное окно рядом с кнопкой запуска Windows, а затем, когда я нажимаю звездную кнопку панели задач Windows и закрываю ее снова, все окна под моим многослойным окном не красятся (только в той части стартового окна, которая появляется над моим окном).
Мое окно создания выглядит так:
CWnd :: CreateEx (WS_EX_TOOLWINDOW |
WS_EX_LAYERED,
AfxRegisterWndClass (0),
lpstr_name, WS_POPUP, 0,0,0,0,
pc_parent-> GetSafeHwnd (), 0);
...
Когда я создаю окно с этими стилями, проблема возникает, но если я создаю с расширенным стилем WS_EX_TRANSPARENT и всеми остальными, проблема больше не возникает. И если вместо окна WS_POPUP используется WS_CHILD или WS_OVERLAPPED, то этого также не происходит ...
Может кто-нибудь объяснить, почему, когда я создаю окно WS_POPUP со стилем WS_EX_LAYERED, все нижние окна не обновляются, и если я добавляю стиль WS_EX_TRANSPARENT, это прекрасно работает.
Примечание: почему я не использую стиль WS_EX_TRANSPARENT, если он работает правильно? если я использую его, мое окно не может быть перетащено, и мне нужно это сделать :))
Обновлено:
альтернативный текст http://img17.imageshack.us/img17/586/clipboard01il.jpg
Изображение выше, чтобы лучше описать происходящее:
Первая часть изображения, которую вы можете видеть в моем многослойном окне, а внизу - vs, во второй - я нажимаю кнопку запуска, а затем на последнем изображении я уже перетаскиваю свое многослойное окно вправо, и вы можете видеть, что окно vs не обновляет уязвимую область.
Обратите внимание, что эта ситуация до сих пор происходит только со стартовым окном ?! с другими окнами этого не происходит!? ...
Спасибо