代码之家  ›  专栏  ›  技术社区  ›  Roger Far

C在桌面上创建一个具有透明性的粘贴窗口

  •  0
  • Roger Far  · 技术社区  · 15 年前

    标题长,但问题简单。

    我试着让一个窗口贴在destop(或pin)上,我可以这样做:

        [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 回复  |  直到 15 年前
        1
  •  1
  •   Franci Penov    15 年前

    只能将顶级窗口创建为分层窗口。使用您的方法,您正在创建桌面窗口的子窗口,因此它不能分层。

    如果你试着解释你所说的“粘/钉”在桌面上的窗口是什么意思可能会更好。我假设您希望将窗口设置在桌面上的特定位置,并将其始终保持在该位置,但必须有我所缺少的其他内容。否则,为什么不将窗口定位在屏幕上的特定坐标处,对您不起作用呢?