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