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
- TypedAsyncResult.cs
- FixedSOMContainer.cs
- XmlSchemaAnnotation.cs
- SoapHeader.cs
- ProcessRequestArgs.cs
- DCSafeHandle.cs
- PathStreamGeometryContext.cs
- EncryptedType.cs
- QilInvoke.cs
- LayoutUtils.cs
- AllMembershipCondition.cs
- NamespaceQuery.cs
- Image.cs
- PrintControllerWithStatusDialog.cs
- XmlIgnoreAttribute.cs
- ControlBindingsCollection.cs
- Page.cs
- ToolboxItemAttribute.cs
- TraceContext.cs
- KnownBoxes.cs
- SafeHandle.cs
- HtmlFormParameterReader.cs
- ListBindingConverter.cs
- TimelineCollection.cs
- EntityModelSchemaGenerator.cs
- ListControl.cs
- DataObjectFieldAttribute.cs
- DataFormats.cs
- DependencyObjectType.cs
- TdsParserStateObject.cs
- XmlSchemaComplexContentExtension.cs
- ListDictionary.cs
- ColorConvertedBitmap.cs
- MemberInfoSerializationHolder.cs
- ActivityMarkupSerializer.cs
- ConnectionStringsExpressionBuilder.cs
- FrameDimension.cs
- DataObjectEventArgs.cs
- PersistenceProviderDirectory.cs
- StyleSheet.cs
- Wizard.cs
- ipaddressinformationcollection.cs
- PathFigureCollectionConverter.cs
- PermissionRequestEvidence.cs
- RadioButtonPopupAdapter.cs
- StreamingContext.cs
- PropertyEmitter.cs
- CharAnimationBase.cs
- SplineQuaternionKeyFrame.cs
- CancellationToken.cs
- TreeViewBindingsEditor.cs
- PartialCachingControl.cs
- RtType.cs
- Compiler.cs
- TableParagraph.cs
- ValidationRule.cs
- IpcChannelHelper.cs
- RegionData.cs
- DictionaryBase.cs
- DataRowComparer.cs
- PropertyInfo.cs
- EqualityComparer.cs
- LocatorPart.cs
- CustomLineCap.cs
- Soap.cs
- HwndSourceKeyboardInputSite.cs
- ColorEditor.cs
- XmlNavigatorFilter.cs
- WindowsListViewSubItem.cs
- RegexRunnerFactory.cs
- SafeHandles.cs
- WebControlAdapter.cs
- BCLDebug.cs
- DocumentEventArgs.cs
- InitiatorSessionSymmetricTransportSecurityProtocol.cs
- ComboBoxRenderer.cs
- __TransparentProxy.cs
- Vector3DCollectionConverter.cs
- CollectionMarkupSerializer.cs
- SimpleExpression.cs
- EventToken.cs
- FontStyleConverter.cs
- DragCompletedEventArgs.cs
- WebCategoryAttribute.cs
- WebPartEditVerb.cs
- ExtensionFile.cs
- ProviderCollection.cs
- ZipFileInfo.cs
- DetailsViewInsertedEventArgs.cs
- SchemaMapping.cs
- MemberAssignment.cs
- URL.cs
- EditorZoneDesigner.cs
- AutomationIdentifier.cs
- BinaryObjectReader.cs
- AsyncOperation.cs
- IpcClientChannel.cs
- SqlDataSourceConfigureFilterForm.cs
- ModelPerspective.cs
- CodeNamespaceCollection.cs