Я ищу хороший способ визуализации оверлеев поверх собственной формы Windows , не принадлежащей мне, предпочтительно с использованием библиотеки, доступной для .NET (WinForms, GTK #, ...). Точно, я хотел бы отобразить несколько ярлыков или текстовых полей в определенном месте окна.
Контекст устройства и System.Drawing: То, что я сейчас делаю, это рисование непосредственно в контексте устройства других окон, что вызывает мерцание, поскольку части другого приложения перерисовываются с непредсказуемыми интервалами. Поэтому мне пришлось бы перехватывать его событие WM_PAINT с помощью магии хука, но на самом деле это не так далеко, как хотелось бы, если нет более простого пути.
Наложение прозрачного окна с видимыми дочерними метками: другой метод, который я попробовал, - создание Windows.Forms.Form с размером других окон, используя TransparencyKey, чтобы сделать видимыми только дочерние элементы. Кажется, это довольно сложно исправить, так как я не хочу, чтобы окно было самым верхним, а ровно на один Z-уровень выше внешнего окна. Плюсом было бы то, что я мог бы добавить к нему больше поведения, так как я мог бы фактически обрабатывать события щелчка и т. Д.
Как бы вы это реализовали / справились с проблемами в двух методах, описанных выше?