diff --git a/Source/OpenTK/Platform/Windows/API.cs b/Source/OpenTK/Platform/Windows/API.cs index 94177295..4d7f13d5 100644 --- a/Source/OpenTK/Platform/Windows/API.cs +++ b/Source/OpenTK/Platform/Windows/API.cs @@ -813,11 +813,22 @@ namespace OpenTK.Platform.Windows #endregion + #region IsWindowVisible + [DllImport("user32.dll")] public static extern bool IsWindowVisible(IntPtr intPtr); #endregion + #region LoadIcon + + [DllImport("user32.dll")] + public static extern HICON LoadIcon(HINSTANCE hInstance, LPCTSTR lpIconName); + + #endregion + + #endregion + #region Display settings #region ChangeDisplaySettings @@ -2701,7 +2712,7 @@ namespace OpenTK.Platform.Windows #region ShFileInfo [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] - public struct SHFILEINFO + struct SHFILEINFO { public IntPtr hIcon; public int iIcon; diff --git a/Source/OpenTK/Platform/Windows/WinGLNative.cs b/Source/OpenTK/Platform/Windows/WinGLNative.cs index 118a329e..85f5df8a 100644 --- a/Source/OpenTK/Platform/Windows/WinGLNative.cs +++ b/Source/OpenTK/Platform/Windows/WinGLNative.cs @@ -588,26 +588,29 @@ namespace OpenTK.Platform.Windows // Gets the shell application icon for the executing process or the default icon, if not available. Icon GetApplicationIcon() { - IntPtr retval = IntPtr.Zero; - try - { - SHFILEINFO info = new SHFILEINFO(); - info.szDisplayName = ""; - info.szTypeName = ""; + //return Icon.FromHandle(Functions.LoadIcon(Process.GetCurrentProcess().Handle, "")); + try { return Icon.ExtractAssociatedIcon(System.Reflection.Assembly.GetEntryAssembly().CodeBase); } + catch { return null; } + //IntPtr retval = IntPtr.Zero; + //try + //{ + // SHFILEINFO info = new SHFILEINFO(); + // info.szDisplayName = ""; + // info.szTypeName = ""; - int cbFileInfo = Marshal.SizeOf(info); - ShGetFileIconFlags flags = ShGetFileIconFlags.Icon | ShGetFileIconFlags.SmallIcon | ShGetFileIconFlags.UseFileAttributes; - string path = System.Reflection.Assembly.GetEntryAssembly().CodeBase; + // int cbFileInfo = Marshal.SizeOf(info); + // ShGetFileIconFlags flags = ShGetFileIconFlags.Icon | ShGetFileIconFlags.SmallIcon | ShGetFileIconFlags.UseFileAttributes; + // string path = System.Reflection.Assembly.GetEntryAssembly().CodeBase; - retval = Functions.SHGetFileInfo(path, 256, ref info, (uint)cbFileInfo, flags); - return Icon.FromHandle(info.hIcon); - } - catch - { - // Shallow exceptions and fall-back to default icon. - Debug.Print("SHGetFileInfo failed, return value: {0}", retval); - return null; - } + // retval = Functions.SHGetFileInfo(path, 256, ref info, (uint)cbFileInfo, flags); + // return Icon.FromHandle(info.hIcon); + //} + //catch + //{ + // // Shallow exceptions and fall-back to default icon. + // Debug.Print("SHGetFileInfo failed, return value: {0}", retval); + // return null; + //} } #endregion