Многослойные окна и COM перетаскивают изображение - PullRequest
1 голос
/ 22 декабря 2009

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

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

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

  • Главное окно (внизу)
  • COM drag image
  • Многослойное окно
  • Курсор (вверху)

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

  • Главное окно (внизу)
  • Многослойное окно
  • COM drag image
  • Курсор (вверху)

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

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

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

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

...