Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / AccessibleTech / longhorn / Automation / Win32Providers / MS / Internal / AutomationProxies / WindowsListViewScroll.cs / 1 / WindowsListViewScroll.cs
//---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // // Description: Class to provide scroll bars for listview // // History: // [....] (in DotNet) // 2003/08/08 - alexsn Updated for WCP // 2004/08/19 - [....] Took this out of the class hierarchy for listview and made the // non-client area use to create the scroll bar children // //--------------------------------------------------------------------------- using System; using System.Runtime.InteropServices; using System.ComponentModel; using System.Windows.Automation; using System.Windows.Automation.Provider; using System.Windows; using MS.Win32; namespace MS.Internal.AutomationProxies { // The default implementation for scroll bars uses SB_THUMBTRACK and SB_THUMBPOSITION for SetValue // This does not work with listview so the Scrollbar is overloaded with a derived version that // uses LVM_SCROLL messages instead class WindowsListViewScrollBar: WindowsScrollBar, IRangeValueProvider { // ----------------------------------------------------- // // Constructors // //----------------------------------------------------- #region Constructors internal WindowsListViewScrollBar(IntPtr hwnd, ProxyFragment parent, int item, int sbFlag) : base( hwnd, parent, item, sbFlag){} #endregion Constructors //------------------------------------------------------ // // Patterns Implementation // //----------------------------------------------------- #region RangeValue Pattern void IRangeValueProvider.SetValue(double val) { // Check if the window is disabled if (!SafeNativeMethods.IsWindowEnabled (_hwnd)) { throw new ElementNotEnabledException(); } NativeMethods.ScrollInfo si = new NativeMethods.ScrollInfo (); si.fMask = NativeMethods.SIF_ALL; si.cbSize = Marshal.SizeOf (si.GetType ()); if (!Misc.GetScrollInfo(_hwnd, _sbFlag, ref si)) { return; } int pos = (int)val; // Throw if val is greater than the maximum or less than the minimum. // See remarks for WindowsScrollBar.GetScrollValue(ScrollBarInfo.MaximumPosition) // regarding this calculation of the allowed maximum. if (pos > si.nMax - si.nPage + (si.nPage > 0 ? 1 : 0)) { throw new ArgumentOutOfRangeException("value", val, SR.Get(SRID.RangeValueMax)); } else if (pos < si.nMin) { throw new ArgumentOutOfRangeException("value", val, SR.Get(SRID.RangeValueMin)); } // LVM_SCROLL does not work in mode Report, use SetScrollPos instead bool isVerticalScroll = IsScrollBarVertical(_hwnd, _sbFlag); if (isVerticalScroll && WindowsListView.InReportView (_hwnd)) { Misc.SetScrollPos(_hwnd, _sbFlag, pos, true); return; } // get the "full size" of the list-view int size = WindowsListView.ApproximateViewRect (_hwnd); // delta between current and user-requested position in pixels // since the cPelsAll contains the dimension in pels for all items + the 2 pels of the border // the operation below does a trunc on purpose int dx = 0, dy = 0; if (!isVerticalScroll) { int cPelsAll = NativeMethods.Util.LOWORD (size); dx = (int)((pos - si.nPos) * ((double)cPelsAll / (si.nMax + 1 - si.nMin))); } else { int cPelsAll = NativeMethods.Util.HIWORD (size); dy = (int)((pos - si.nPos) * ((double)cPelsAll / (si.nMax + 1 - si.nMin))); } if (WindowsListView.Scroll (_hwnd, (IntPtr) dx, (IntPtr) dy)) { // Check the result, on occasion the result will be different to given value // a-jeanp: I played a lot to figure out what it is not the case. // I am giving up and issuing instead a second call with a new delta. if (!Misc.GetScrollInfo(_hwnd, _sbFlag, ref si)) { return; } if (si.nPos != pos) { if (!isVerticalScroll) { int cPelsAll = NativeMethods.Util.LOWORD (size); dx = (pos - si.nPos) * (cPelsAll / (si.nMax + 1 - si.nMin)); } else { int cPelsAll = NativeMethods.Util.HIWORD (size); dy = (pos - si.nPos) * (cPelsAll / (si.nMax + 1 - si.nMin)); } WindowsListView.Scroll (_hwnd, (IntPtr) dx, (IntPtr) dy); } } } #endregion Value Pattern } } // 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
- MenuScrollingVisibilityConverter.cs
- DiscreteKeyFrames.cs
- MethodAccessException.cs
- DefaultPropertyAttribute.cs
- RowSpanVector.cs
- InstanceNameConverter.cs
- CellConstant.cs
- KeyInstance.cs
- AffineTransform3D.cs
- XmlCountingReader.cs
- PropertyChangedEventArgs.cs
- BooleanToSelectiveScrollingOrientationConverter.cs
- BindStream.cs
- JavaScriptObjectDeserializer.cs
- BrowserDefinitionCollection.cs
- SqlNamer.cs
- TransformationRules.cs
- MailSettingsSection.cs
- KeyGesture.cs
- UICuesEvent.cs
- GenericWebPart.cs
- VirtualizedContainerService.cs
- AvTrace.cs
- BaseCAMarshaler.cs
- ListViewUpdateEventArgs.cs
- ResourceDisplayNameAttribute.cs
- ScriptServiceAttribute.cs
- BindUriHelper.cs
- CommonRemoteMemoryBlock.cs
- TemplateControlCodeDomTreeGenerator.cs
- BooleanStorage.cs
- TraceProvider.cs
- ZipIOEndOfCentralDirectoryBlock.cs
- GraphicsContainer.cs
- DoubleConverter.cs
- WindowsMenu.cs
- RenamedEventArgs.cs
- PointAnimationUsingKeyFrames.cs
- SourceFilter.cs
- SamlAuthenticationStatement.cs
- Scripts.cs
- CommandID.cs
- ProxyWebPartManager.cs
- ServiceInfo.cs
- RSATokenProvider.cs
- RawStylusInput.cs
- SHA1CryptoServiceProvider.cs
- XmlDocument.cs
- RawKeyboardInputReport.cs
- HttpModuleCollection.cs
- CornerRadiusConverter.cs
- CodeTypeReference.cs
- DataSvcMapFileSerializer.cs
- DesignConnection.cs
- SymbolType.cs
- AddingNewEventArgs.cs
- FormatterConverter.cs
- JapaneseCalendar.cs
- XamlReaderHelper.cs
- CellQuery.cs
- HiddenFieldPageStatePersister.cs
- RuntimeArgument.cs
- ConfigurationManagerHelper.cs
- TypeLoadException.cs
- ActivityCodeDomReferenceService.cs
- ConditionalAttribute.cs
- QueryContinueDragEvent.cs
- ValueExpressions.cs
- GenericWebPart.cs
- EntityWrapper.cs
- OpenTypeLayoutCache.cs
- XmlDataDocument.cs
- ParameterCollection.cs
- ExclusiveTcpListener.cs
- HtmlForm.cs
- SqlDependency.cs
- CanonicalFormWriter.cs
- MultipartContentParser.cs
- storepermissionattribute.cs
- GridErrorDlg.cs
- InfoCardRSACryptoProvider.cs
- ToolStripCustomTypeDescriptor.cs
- ObjectConverter.cs
- ZoomPercentageConverter.cs
- HwndTarget.cs
- ChannelReliableSession.cs
- QilInvokeLateBound.cs
- SystemThemeKey.cs
- FrameworkElement.cs
- SafeThreadHandle.cs
- DataObject.cs
- RayHitTestParameters.cs
- AssociationType.cs
- WsdlInspector.cs
- TimerElapsedEvenArgs.cs
- cookieexception.cs
- PointCollection.cs
- CollectionMarkupSerializer.cs
- DesignerDataRelationship.cs
- PrintPageEvent.cs