Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / UIAutomation / Win32Providers / MS / Internal / AutomationProxies / WindowsGrip.cs / 1305600 / WindowsGrip.cs
//----------------------------------------------------------------------------
//
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
//
//
// Description: Windows Button Proxy
//
// History:
// 07/01/2003 : preid Created
//---------------------------------------------------------------------------
using System;
using System.Collections;
using System.Text;
using System.Runtime.InteropServices;
using System.Windows;
using System.Windows.Automation;
using System.Windows.Automation.Provider;
using System.ComponentModel;
using MS.Win32;
namespace MS.Internal.AutomationProxies
{
class WindowsGrip: ProxyFragment
{
// -----------------------------------------------------
//
// Constructors
//
//-----------------------------------------------------
#region Constructors
public WindowsGrip (IntPtr hwnd, ProxyHwnd parent, int item)
: base( hwnd, parent, item)
{
_sType = ST.Get(STID.LocalizedControlTypeGrip);
_sAutomationId = "Window.Grip"; // This string is a non-localizable string
}
#endregion
//------------------------------------------------------
//
// Patterns Implementation
//
//-----------------------------------------------------
#region ProxySimple Interface
///
/// Gets the bounding rectangle for this element
///
internal override Rect BoundingRectangle
{
get
{
if (IsGripPresent(_hwnd, false))
{
NativeMethods.Win32Rect client = new NativeMethods.Win32Rect();
if (Misc.GetClientRectInScreenCoordinates(_hwnd, ref client))
{
NativeMethods.SIZE sizeGrip = GetGripSize(_hwnd, false);
if (Misc.IsLayoutRTL(_hwnd))
{
return new Rect(client.left - sizeGrip.cx, client.bottom, sizeGrip.cx, sizeGrip.cy);
}
else
{
return new Rect(client.right, client.bottom, sizeGrip.cx, sizeGrip.cy);
}
}
}
return Rect.Empty;
}
}
#endregion
//------------------------------------------------------
//
// Internal Methods
//
//------------------------------------------------------
#region Internal Methods
static internal bool IsGripPresent(IntPtr hwnd, bool onStatusBar)
{
NativeMethods.Win32Rect client = new NativeMethods.Win32Rect();
if (!Misc.GetClientRectInScreenCoordinates(hwnd, ref client))
{
return false;
}
// According to the documentation of GetClientRect, the left and top members are zero. So if
// they are negitive the control must be minimized, therefore the grip is not present.
if (client.left < 0 && client.top < 0 )
{
return false;
}
NativeMethods.SIZE sizeGrip = GetGripSize(hwnd, onStatusBar);
if (!onStatusBar)
{
// When not on a status bar the grip should be out side of the client area.
sizeGrip.cx *= -1;
sizeGrip.cy *= -1;
}
if (Misc.IsLayoutRTL(hwnd))
{
int x = client.left + (int)(sizeGrip.cx / 2);
int y = client.bottom - (int)(sizeGrip.cy / 2);
int hit = Misc.ProxySendMessageInt(hwnd, NativeMethods.WM_NCHITTEST, IntPtr.Zero, NativeMethods.Util.MAKELPARAM(x, y));
return hit == NativeMethods.HTBOTTOMLEFT;
}
else
{
int x = client.right - (int)(sizeGrip.cx / 2);
int y = client.bottom - (int)(sizeGrip.cy / 2);
int hit = Misc.ProxySendMessageInt(hwnd, NativeMethods.WM_NCHITTEST, IntPtr.Zero, NativeMethods.Util.MAKELPARAM(x, y));
return hit == NativeMethods.HTBOTTOMRIGHT;
}
}
internal static NativeMethods.SIZE GetGripSize(IntPtr hwnd, bool onStatusBar)
{
using (ThemePart themePart = new ThemePart(hwnd, onStatusBar ? "STATUS" : "SCROLLBAR"))
{
return themePart.Size(onStatusBar ? (int)ThemePart.STATUSPARTS.SP_GRIPPER : (int)ThemePart.SCROLLBARPARTS.SBP_SIZEBOX, 0);
}
}
#endregion
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- EntityException.cs
- RawStylusActions.cs
- BaseComponentEditor.cs
- DataServiceResponse.cs
- DefaultValueTypeConverter.cs
- RuntimeHandles.cs
- RadioButtonPopupAdapter.cs
- SqlFunctionAttribute.cs
- StringUtil.cs
- ServiceTimeoutsElement.cs
- CaseCqlBlock.cs
- UIServiceHelper.cs
- ContentType.cs
- AdministrationHelpers.cs
- ColorBlend.cs
- CommandBinding.cs
- SecureConversationDriver.cs
- Crc32.cs
- XamlSerializer.cs
- TreeBuilderXamlTranslator.cs
- CodeExporter.cs
- XDRSchema.cs
- SpotLight.cs
- Vector3DAnimationBase.cs
- TiffBitmapDecoder.cs
- CheckBoxRenderer.cs
- SimpleBitVector32.cs
- InstanceDescriptor.cs
- ReferenceEqualityComparer.cs
- WeakReferenceList.cs
- SrgsElementFactory.cs
- ControlPaint.cs
- NamespaceCollection.cs
- EncoderBestFitFallback.cs
- GlobalizationSection.cs
- ThreadStartException.cs
- BitmapEffectInput.cs
- Matrix.cs
- AddDataControlFieldDialog.cs
- UiaCoreProviderApi.cs
- SecurityTokenException.cs
- HasCopySemanticsAttribute.cs
- ThicknessAnimation.cs
- DictionaryGlobals.cs
- ComponentConverter.cs
- FormDesigner.cs
- ReadOnlyActivityGlyph.cs
- FrugalList.cs
- DataGridViewControlCollection.cs
- GestureRecognizer.cs
- ArraySortHelper.cs
- BaseUriWithWildcard.cs
- DynamicMethod.cs
- DataGridTextBox.cs
- Rotation3DAnimationBase.cs
- SystemUnicastIPAddressInformation.cs
- Empty.cs
- ResolveNameEventArgs.cs
- XmlStringTable.cs
- WebPartChrome.cs
- AsymmetricSignatureDeformatter.cs
- ToolStripDropDownItem.cs
- X509LogoTypeExtension.cs
- XmlMtomWriter.cs
- Marshal.cs
- TextRunTypographyProperties.cs
- DataGridViewRowHeightInfoPushedEventArgs.cs
- SynchronizedInputAdaptor.cs
- Rules.cs
- EventLogEntry.cs
- ProxyAttribute.cs
- HttpResponseHeader.cs
- ExpressionBuilderContext.cs
- Border.cs
- DelimitedListTraceListener.cs
- SymmetricAlgorithm.cs
- Triplet.cs
- DescendantOverDescendantQuery.cs
- DecimalConverter.cs
- CalendarKeyboardHelper.cs
- BinaryObjectWriter.cs
- BuildProvider.cs
- ConfigurationErrorsException.cs
- FunctionMappingTranslator.cs
- ObjectDataSourceEventArgs.cs
- SiteMapNode.cs
- SqlDataSourceConnectionPanel.cs
- ReliableOutputConnection.cs
- HttpModuleActionCollection.cs
- CharacterShapingProperties.cs
- SessionStateModule.cs
- SwitchElementsCollection.cs
- NativeMethods.cs
- WebPartTransformerCollection.cs
- Overlapped.cs
- LoginCancelEventArgs.cs
- ActivityMarkupSerializationProvider.cs
- PageAsyncTask.cs
- WindowsAuthenticationModule.cs
- TextSegment.cs