Многослойные окна и COM перетаскивают изображение

У меня есть программа, которая отображает главное окно, многоуровневое окно и реализует перетаскивание COM. В общих чертах:

  1. Я создаю нормальное окно верхнего уровня.
  2. Я создаю многоуровневое окно, используя WS_EX_LAYERED и UpdateLayeredWindow/SetLayeredWindowAttributes (я пробовал оба). Многослойное окно расположено поверх окна, созданного в 1. Многослойное окно не является дочерним окном.
  3. Затем я начинаю перетаскивание с помощью функции COM DoDragDrop. В IDropSource::QueryContinueDrag я вызываю ImageList_BeginDrag, ImageList_DragMove и так далее.

Проблема в том, что перетаскиваемое изображение, которое показывает COM (это изображение в списке изображений), отображается под многослойным окном, а не поверх него. Курсор отображается в верхней части многослойного окна (как и ожидалось). Снизу вверх, слой, который я получаю:

  • Главное окно (внизу)
  • COM перетащить изображение
  • Многослойное окно
  • Курсор (вверху)

Что должно быть:

  • Главное окно (внизу)
  • Многослойное окно
  • COM перетащить изображение
  • Курсор (вверху)

Я уже применил KB943326 "Перекрывающиеся многоуровневые окна не отображаются в правильном порядке в Windows Server 2003 или в Windows XP" (" http://support.microsoft.com/kb/943326"), но это не имело никакого значения.

Я использую XP SP2.

Любые предложения оценены, поскольку у меня закончились идеи...

Спасибо, Су Грин

0 ответов

Другие вопросы по тегам