在Windows系统桌面签入窗口,点击‘显示桌面’时也能和桌面图标一样不隐藏。
使用了这样的方法:
public void SetDeskWindow(IntPtr hWin)
{
//win7 下是查找 Progman 窗口
IntPtr hDeskTop = FindWindow("Progman", null);
IntPtr hShellDll = IntPtr.Zero;
hShellDll = FindWindowEx(hDeskTop, IntPtr.Zero, "SHELLDLL_DefVIew", null);
// win8,10 需寻找 workerw 窗口,因有多个,需查找其下有 shelldll_defView 的
if (hShellDll == IntPtr.Zero)
{
hDeskTop = FindWindowEx(IntPtr.Zero, IntPtr.Zero, "WorkerW", null);
while (hDeskTop != IntPtr.Zero)
{
hShellDll = FindWindowEx(hDeskTop, IntPtr.Zero, "SHELLDLL_DefView", null);
if (hShellDll != IntPtr.Zero) break;
hDeskTop = FindWindowEx(IntPtr.Zero, hDeskTop, "WorkerW", null);
}
}
hDeskTop = FindWindowEx(hShellDll, IntPtr.Zero, "SysListView32", null);
SetParent(hWin, hDeskTop);
}
虽然此方法在win7,win10 下都能正常签入桌面,但在win10 下,签入桌面的窗口上所有文字都是透明的(图片不会透明),在Win7下正常。
怎样能使这样的签入窗口文字不透明而正常显示?
补充图片:
http://bbs.csdn.net/topics/391897283
最好能截个图来说明问题,不清楚你的描述
这是因为dwm误将黑色视为透明导致的。要修复此问题可以尝试使用GDI+进行绘制(不稳定),最好的办法是换用WPF来写界面。
最好换WPF!
我也遇到过这种问题,换了wpf之后就好了。
希望能帮到你!