日期:2014-05-19  浏览次数:20948 次

有什么办法可以去掉这个窗口在任务栏上的图标呢?
(winForm     vb2005)

如下面的代码,用SetParent   函数可以把一个自定义控件添加到   桌面   上,但此,此自定义控件会在任务栏上显示一个图标,请问,有什么办法可以让它不显示   任务栏图标呢?谢谢了!

Public   Class   Form1

        Public   Declare   Function   SetParent   Lib   "user32 "   (ByVal   hWndChild   As   IntPtr,   ByVal   hWndNewParent   As   IntPtr)   As   Integer
        Private   Sub   Button1_Click(ByVal   sender   As   System.Object,   ByVal   e   As   System.EventArgs)   Handles   Button1.Click
                Dim   u   As   New   UserControl
                u.BackColor   =   Color.Red
                Form1.SetParent(u.Handle,   Nothing)
        End   Sub


------解决方案--------------------
const int GWL_EXSTYLE = -20;
const int WS_EX_TOOLWINDOW = 0x80;

SetWindowLong(u.Handle, GWL_EXSTYLE, WS_EX_TOOLWINDOW | GetWindowLong(u.Handle, GWL_EXSTYLE));
SetParent(u.Handle, IntPtr.Zero);
注意SetWindowLong在SetParent之前。

另外提醒一下 楼主这种作法并没有把UserControl放到了桌面上 而且可能会有其他的不良副作用。

想用不夺取焦点的下拉框窗口应该用这种方式:
创建一个窗口,设置ShowInTaskbar及边框外观等属性,
override 属性ShowWithoutActivation 并返回true (.NET 2.0)
如果是.NET 1.X 用ShowWindow + SHOWNA 或者 SetWindowPos + SWP_NOACTIVATE|SWP_SHOWWINDOW来显示窗口