From 635ee507f88afc9b3724ea86669339b6f713d41e Mon Sep 17 00:00:00 2001 From: RKrom Date: Thu, 20 Dec 2012 08:48:01 +0000 Subject: [PATCH] Cleanup of User32 Code, added setter for the ExtendedWindowStyle and changed the WindowPlacement to use get/set git-svn-id: http://svn.code.sf.net/p/greenshot/code/trunk@2396 7dccd23d-a4a3-4e1f-8c07-b4c1b4018ab4 --- Greenshot/Forms/ImageEditorForm.cs | 4 +-- GreenshotPlugin/Core/WindowsHelper.cs | 35 +++++++++++++++------- GreenshotPlugin/UnmanagedHelpers/User32.cs | 22 +++----------- 3 files changed, 30 insertions(+), 31 deletions(-) diff --git a/Greenshot/Forms/ImageEditorForm.cs b/Greenshot/Forms/ImageEditorForm.cs index 01987b9af..8959c9e26 100644 --- a/Greenshot/Forms/ImageEditorForm.cs +++ b/Greenshot/Forms/ImageEditorForm.cs @@ -96,7 +96,7 @@ namespace Greenshot { // Make sure the editor is placed on the same location as the last editor was on close WindowDetails thisForm = new WindowDetails(this.Handle); - thisForm.SetWindowPlacement(editorConfiguration.GetEditorPlacement()); + thisForm.WindowPlacement = editorConfiguration.GetEditorPlacement(); // init surface Surface = iSurface; @@ -706,7 +706,7 @@ namespace Greenshot { } } // persist our geometry string. - editorConfiguration.SetEditorPlacement(new WindowDetails(this.Handle).GetWindowPlacement()); + editorConfiguration.SetEditorPlacement(new WindowDetails(this.Handle).WindowPlacement); IniConfig.Save(); // remove from the editor list diff --git a/GreenshotPlugin/Core/WindowsHelper.cs b/GreenshotPlugin/Core/WindowsHelper.cs index 02de583b3..8c7ec42ef 100644 --- a/GreenshotPlugin/Core/WindowsHelper.cs +++ b/GreenshotPlugin/Core/WindowsHelper.cs @@ -771,28 +771,41 @@ namespace GreenshotPlugin.Core { } } + /// + /// Get / Set the WindowStyle + /// public WindowStyleFlags WindowStyle { get { - return (WindowStyleFlags)User32.GetWindowLongWrapper(this.hWnd, (int)WindowLongIndex.GWL_STYLE); + return (WindowStyleFlags)User32.GetWindowLongPtr(this.hWnd, (int)WindowLongIndex.GWL_STYLE); } set { - User32.SetWindowLong(this.hWnd, (int)WindowLongIndex.GWL_STYLE, (uint)value); + User32.SetWindowLongPtr(this.hWnd, (int)WindowLongIndex.GWL_STYLE, (uint)value); } } - public WindowPlacement GetWindowPlacement() { - WindowPlacement placement = WindowPlacement.Default; - User32.GetWindowPlacement(this.Handle, ref placement); - return placement; - } - - public void SetWindowPlacement(WindowPlacement placement) { - User32.SetWindowPlacement(this.Handle, ref placement); + /// + /// Get/Set the WindowPlacement + /// + public WindowPlacement WindowPlacement { + get { + WindowPlacement placement = WindowPlacement.Default; + User32.GetWindowPlacement(this.Handle, ref placement); + return placement; + } + set { + User32.SetWindowPlacement(this.Handle, ref value); + } } + /// + /// Get/Set the Extended WindowStyle + /// public ExtendedWindowStyleFlags ExtendedWindowStyle { get { - return (ExtendedWindowStyleFlags)User32.GetWindowLongWrapper(this.hWnd, (int)WindowLongIndex.GWL_EXSTYLE); + return (ExtendedWindowStyleFlags)User32.GetWindowLongPtr(this.hWnd, (int)WindowLongIndex.GWL_EXSTYLE); + } + set { + User32.SetWindowLongPtr(this.hWnd, (int)WindowLongIndex.GWL_EXSTYLE, (uint)value); } } diff --git a/GreenshotPlugin/UnmanagedHelpers/User32.cs b/GreenshotPlugin/UnmanagedHelpers/User32.cs index 2515a7aeb..7efb531a3 100644 --- a/GreenshotPlugin/UnmanagedHelpers/User32.cs +++ b/GreenshotPlugin/UnmanagedHelpers/User32.cs @@ -114,12 +114,12 @@ namespace GreenshotPlugin.UnmanagedHelpers { public extern static int SendMessage(IntPtr hWnd, int wMsg, IntPtr wParam, IntPtr lParam); [DllImport("user32", SetLastError=true, EntryPoint = "SendMessageA")] public static extern bool SendMessage(IntPtr hWnd, uint msg, int wParam, int lParam); - [DllImport("user32", SetLastError=true)] - public extern static uint GetWindowLong(IntPtr hwnd, int index); + // See: http://msdn.microsoft.com/en-us/library/windows/desktop/ms633585%28v=vs.85%29.aspx [DllImport("user32", EntryPoint="GetWindowLongPtr", SetLastError=true)] public extern static uint GetWindowLongPtr(IntPtr hwnd, int nIndex); - [DllImport("user32", SetLastError = true)] - public static extern int SetWindowLong(IntPtr hWnd, int index, uint styleFlags); + // See: http://msdn.microsoft.com/en-us/library/windows/desktop/ms644898%28v=vs.85%29.aspx + [DllImport("user32", EntryPoint = "SetWindowLongPtr", SetLastError = true)] + public static extern int SetWindowLongPtr(IntPtr hWnd, int index, uint styleFlags); [DllImport("user32", SetLastError = true)] public static extern IntPtr MonitorFromWindow(IntPtr hwnd, uint dwFlags); [DllImport("user32", SetLastError = true)] @@ -221,20 +221,6 @@ namespace GreenshotPlugin.UnmanagedHelpers { [DllImport("user32", SetLastError = true)] public static extern IntPtr CreateIconIndirect(ref IconInfo icon); - /// - /// Wrapper for the GetWindowLong which decides if the system is 64-bit or not and calls the right one. - /// - /// - /// - /// - public static uint GetWindowLongWrapper(IntPtr hwnd, int nIndex) { - if (IntPtr.Size == 8) { - return GetWindowLongPtr(hwnd, nIndex); - } else { - return GetWindowLong(hwnd, nIndex); - } - } - public static uint GetGuiResourcesGDICount() { return GetGuiResources(Process.GetCurrentProcess().Handle, 0); }