Я пытаюсь отладить огромное приложение Win32 GUI (у меня есть полные источники), разделенное на несколько процессов.Проблема заключается в следующем: в одном процессе у меня есть диалоговое окно со списком, когда я дважды щелкаю элемент в списке, запускается другой процесс, который создает свое собственное окно, которое выводится на передний план и закрывает начальный диалог.Если я выполняю некоторые манипуляции (которые я пока не могу полностью объяснить, поскольку я еще не до конца их понимаю), то что-то заставляет начальный диалог начать мигать на панели задач.
Я пробовал Microsoft Spy ++ и вижу это всякий раз, когдаЯ делаю, что манипуляция WM_ACTIVATE отправляется в диалог, в большинстве случаев она имеет следующие параметры:
fActive: WA_INACTIVE fMinimized:False hwndPrevious:(null)
, и в этих случаях диалог не начинает мигать.Но время от времени параметры равны
fActive: WA_ACTIVE fMinimized:False hwndPrevious:(null)
, и это точно соответствует мигающему окну.
MSDN говорит, что WM_ACTIVATE отправляется с WA_ACTIVE, когда окно активируется каким-либо иным способом, кроме щелчка мыши (например, с помощью вызова функции SetActiveWindow или с помощью интерфейса клавиатуры для выбора окна) .
Теперь в коде приложения SetActiveWindow() никогда не вызывается, и я ничего не делаю с клавиатурой, которая может переключать окна.
Какие другие причины возможны для отправки WM_ACTIVATE с помощью WA_ACTIVE?