C# создание торчащих окон на рабочем столе с прозрачностью

Длинное название, но простая проблема.

Я пытаюсь позволить окну прилипать к столешнице (или булавке), я могу сделать это так:

    [DllImport("User32.dll")]
    static extern IntPtr FindWindow(String lpClassName, String lpWindowName);
    [DllImport("user32.dll", SetLastError = true)]
    static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
    [DllImport("user32.dll")]
    static extern int SetParent(IntPtr hWndChild, IntPtr hWndNewParent);

        IntPtr pWnd = FindWindow("Progman", null);
        pWnd = FindWindowEx(pWnd, IntPtr.Zero, "SHELLDLL_DefVIew", null);
        pWnd = FindWindowEx(pWnd, IntPtr.Zero, "SysListView32", null);
        IntPtr tWnd = this.Handle;
        SetParent(tWnd, pWnd);

Это прекрасно работает, но я не могу изменить прозрачность или непрозрачность.

Я могу использовать CreateWindowEx для создания хорошего прозрачного многоуровневого окна, но тогда этот метод больше не работает, чтобы закрепить его на рабочем столе!

Кто-нибудь знает, как это можно сделать?

Поблагодарить!

1 ответ

Решение

Только окна верхнего уровня могут быть созданы как слоистые. При вашем подходе вы создаете дочернее окно к окну рабочего стола, следовательно, оно не может быть наслоено.

Возможно, будет лучше, если вы попытаетесь объяснить, что вы имеете в виду, "прикрепив"/"прикрепив" окно к рабочему столу. Я предполагаю, что вы хотите установить окно в определенном положении на рабочем столе и держать его всегда там, но должно быть что-то еще, чего мне не хватает. В противном случае, почему бы просто не расположить окно с определенными координатами на экране для вас?

Другие вопросы по тегам