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