Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / AccessibleTech / longhorn / Automation / Win32Providers / MS / Internal / AutomationProxies / WindowsGrip.cs / 1 / WindowsGrip.cs
//---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // // Description: Windows Button Proxy // // History: // 07/01/2003 : [....] 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
- LoginViewDesigner.cs
- PkcsMisc.cs
- TextOptionsInternal.cs
- BoolExpressionVisitors.cs
- Hex.cs
- ApplicationContext.cs
- EllipseGeometry.cs
- iisPickupDirectory.cs
- StrokeSerializer.cs
- ConfigurationPropertyAttribute.cs
- AtlasWeb.Designer.cs
- CodeConditionStatement.cs
- SqlStream.cs
- Zone.cs
- SQLConvert.cs
- DefaultHttpHandler.cs
- DataViewManagerListItemTypeDescriptor.cs
- FormViewDeletedEventArgs.cs
- _SingleItemRequestCache.cs
- DeploymentExceptionMapper.cs
- DescendantBaseQuery.cs
- ToolTip.cs
- BaseTreeIterator.cs
- PathData.cs
- ReliabilityContractAttribute.cs
- MenuItemCollection.cs
- FrameworkElementFactoryMarkupObject.cs
- RotateTransform3D.cs
- PointConverter.cs
- PersonalizationStateQuery.cs
- ConsoleTraceListener.cs
- SimpleWorkerRequest.cs
- ObjectStateEntry.cs
- ScaleTransform3D.cs
- FormatConvertedBitmap.cs
- ScriptingSectionGroup.cs
- XmlSchemaSimpleContentExtension.cs
- DateTimeValueSerializerContext.cs
- FeatureSupport.cs
- FlowDocument.cs
- TextModifierScope.cs
- CatalogPartChrome.cs
- ExtensionFile.cs
- PasswordPropertyTextAttribute.cs
- ControllableStoryboardAction.cs
- OdbcDataReader.cs
- WorkflowTransactionService.cs
- GridViewSortEventArgs.cs
- ReadContentAsBinaryHelper.cs
- XPathExpr.cs
- MessageParameterAttribute.cs
- ComponentResourceManager.cs
- HierarchicalDataSourceControl.cs
- EdmToObjectNamespaceMap.cs
- DataControlFieldHeaderCell.cs
- EventProxy.cs
- XmlSchemaComplexContentExtension.cs
- ComponentRenameEvent.cs
- DetailsViewRowCollection.cs
- LinkedResourceCollection.cs
- PermissionSet.cs
- DataGridDetailsPresenterAutomationPeer.cs
- Highlights.cs
- RawStylusInput.cs
- DataSourceHelper.cs
- PageAsyncTaskManager.cs
- TickBar.cs
- WindowsGraphicsCacheManager.cs
- HandlerBase.cs
- DataSourceExpression.cs
- HTMLTextWriter.cs
- UpDownBase.cs
- DisposableCollectionWrapper.cs
- OleServicesContext.cs
- Token.cs
- QilGeneratorEnv.cs
- HttpCookieCollection.cs
- CommonObjectSecurity.cs
- Path.cs
- TextElementAutomationPeer.cs
- NameGenerator.cs
- propertyentry.cs
- DCSafeHandle.cs
- GradientSpreadMethodValidation.cs
- NodeLabelEditEvent.cs
- LayoutEngine.cs
- Win32.cs
- DesignerDataTable.cs
- PolyBezierSegmentFigureLogic.cs
- DataSetUtil.cs
- NameValuePermission.cs
- ISFClipboardData.cs
- XmlElementList.cs
- XmlEncodedRawTextWriter.cs
- BamlLocalizerErrorNotifyEventArgs.cs
- LassoHelper.cs
- VScrollBar.cs
- InheritanceUI.cs
- RefreshPropertiesAttribute.cs
- CodeVariableDeclarationStatement.cs