Многослойные окна и COM перетаскивают изображение
У меня есть программа, которая отображает главное окно, многоуровневое окно и реализует перетаскивание COM. В общих чертах:
- Я создаю нормальное окно верхнего уровня.
- Я создаю многоуровневое окно, используя WS_EX_LAYERED и UpdateLayeredWindow/SetLayeredWindowAttributes (я пробовал оба). Многослойное окно расположено поверх окна, созданного в 1. Многослойное окно не является дочерним окном.
- Затем я начинаю перетаскивание с помощью функции 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.
Любые предложения оценены, поскольку у меня закончились идеи...
Спасибо, Су Грин