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
- DateTimePicker.cs
- ViewUtilities.cs
- DataGridColumnCollection.cs
- PropertyItemInternal.cs
- PointCollection.cs
- DragDeltaEventArgs.cs
- SystemResourceHost.cs
- EventToken.cs
- SQLConvert.cs
- CompositionTarget.cs
- Walker.cs
- SchemaImporter.cs
- StartFileNameEditor.cs
- ISAPIApplicationHost.cs
- BitmapEffectState.cs
- GenericUI.cs
- AstTree.cs
- Ops.cs
- HijriCalendar.cs
- Table.cs
- VisualStyleRenderer.cs
- SoapTypeAttribute.cs
- SingleResultAttribute.cs
- LinkedResourceCollection.cs
- CompilerHelpers.cs
- BuildTopDownAttribute.cs
- GridViewCancelEditEventArgs.cs
- WindowVisualStateTracker.cs
- BitHelper.cs
- SelectionGlyph.cs
- HostAdapter.cs
- FunctionQuery.cs
- HijriCalendar.cs
- RSAPKCS1SignatureFormatter.cs
- wgx_render.cs
- XmlSchemaSet.cs
- KeysConverter.cs
- NavigateEvent.cs
- ToolStripContainer.cs
- RelationalExpressions.cs
- CodeDirectiveCollection.cs
- EasingFunctionBase.cs
- DbConnectionStringBuilder.cs
- ObjectStateManager.cs
- UserControlParser.cs
- TreeIterator.cs
- DesignerSerializationOptionsAttribute.cs
- FragmentQueryKB.cs
- SqlAliaser.cs
- CodeCatchClauseCollection.cs
- XmlEventCache.cs
- SamlSecurityToken.cs
- BamlLocalizableResource.cs
- ActivityExecutorDelegateInfo.cs
- PackageDigitalSignature.cs
- CodeTypeReference.cs
- StandardOleMarshalObject.cs
- AsymmetricSecurityBindingElement.cs
- AuthenticatedStream.cs
- DbConnectionFactory.cs
- StyleXamlTreeBuilder.cs
- NavigationCommands.cs
- XmlSchemaGroupRef.cs
- ListBindingConverter.cs
- CookieHandler.cs
- AspProxy.cs
- X509SecurityToken.cs
- WebDisplayNameAttribute.cs
- HandledEventArgs.cs
- ConnectorSelectionGlyph.cs
- TextSearch.cs
- RawStylusInputCustomDataList.cs
- JpegBitmapDecoder.cs
- CrossAppDomainChannel.cs
- ToggleButtonAutomationPeer.cs
- MultipartIdentifier.cs
- StorageAssociationSetMapping.cs
- fixedPageContentExtractor.cs
- DynamicResourceExtensionConverter.cs
- ElementUtil.cs
- CurrencyManager.cs
- QueuePathEditor.cs
- TypeUnloadedException.cs
- DataMisalignedException.cs
- AnonymousIdentificationSection.cs
- SerializableAttribute.cs
- MemberHolder.cs
- DataRow.cs
- TextCharacters.cs
- ErrorWebPart.cs
- EntityReference.cs
- ToolStripItemBehavior.cs
- _ListenerAsyncResult.cs
- MemoryRecordBuffer.cs
- DefaultValueAttribute.cs
- ReadWriteControlDesigner.cs
- nulltextnavigator.cs
- XmlChoiceIdentifierAttribute.cs
- IfJoinedCondition.cs
- TableProviderWrapper.cs