private IntPtr CreateBroadcastWindow() { Microsoft.Win32.NativeMethods.WNDCLASS_I wc = new Microsoft.Win32.NativeMethods.WNDCLASS_I(); IntPtr moduleHandle = Microsoft.Win32.UnsafeNativeMethods.GetModuleHandle(null); if (!Microsoft.Win32.UnsafeNativeMethods.GetClassInfo(new HandleRef(this, moduleHandle), this.WndClass.lpszClassName, wc)) { if (Microsoft.Win32.UnsafeNativeMethods.RegisterClass(this.WndClass) == 0) { this.windowProc = null; return IntPtr.Zero; } } else if (wc.lpfnWndProc == this.DefWndProc) { short num = 0; if (Microsoft.Win32.UnsafeNativeMethods.UnregisterClass(this.WndClass.lpszClassName, new HandleRef(null, Microsoft.Win32.UnsafeNativeMethods.GetModuleHandle(null))) != 0) { num = Microsoft.Win32.UnsafeNativeMethods.RegisterClass(this.WndClass); } if (num == 0) { do { this.BumpQualifier(); } while ((Microsoft.Win32.UnsafeNativeMethods.RegisterClass(this.WndClass) == 0) && (Marshal.GetLastWin32Error() == 0x582)); } } return Microsoft.Win32.UnsafeNativeMethods.CreateWindowEx(0, this.WndClass.lpszClassName, this.WndClass.lpszClassName, -2147483648, 0, 0, 0, 0, Microsoft.Win32.NativeMethods.NullHandleRef, Microsoft.Win32.NativeMethods.NullHandleRef, new HandleRef(this, moduleHandle), null); }
public static extern bool GetClassInfo(HandleRef hInst, string lpszClass, [In, Out] Microsoft.Win32.NativeMethods.WNDCLASS_I wc);