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
![Network programming in C#, Network Programming in VB.NET, Network Programming in .NET](/images/book.jpg)
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- LineServicesCallbacks.cs
- DataViewSettingCollection.cs
- CollectionBuilder.cs
- RotationValidation.cs
- BaseAutoFormat.cs
- Membership.cs
- OledbConnectionStringbuilder.cs
- SerialPinChanges.cs
- TableSectionStyle.cs
- GridViewHeaderRowPresenter.cs
- SimpleHandlerBuildProvider.cs
- SingleObjectCollection.cs
- ImageUrlEditor.cs
- OptimizedTemplateContentHelper.cs
- XmlKeywords.cs
- PerformanceCounterLib.cs
- DesignerLoader.cs
- IOThreadTimer.cs
- QuaternionRotation3D.cs
- EntityDesignerDataSourceView.cs
- RewritingProcessor.cs
- ProcessManager.cs
- TabItemAutomationPeer.cs
- IdentityHolder.cs
- SqlDataSourceConfigureFilterForm.cs
- TagPrefixInfo.cs
- FontEmbeddingManager.cs
- XamlNamespaceHelper.cs
- Identity.cs
- UnionCqlBlock.cs
- WsdlContractConversionContext.cs
- PKCS1MaskGenerationMethod.cs
- DbConnectionInternal.cs
- PerformanceCounterPermission.cs
- Rotation3DKeyFrameCollection.cs
- CodeDirectiveCollection.cs
- GatewayDefinition.cs
- ResXBuildProvider.cs
- HelpProvider.cs
- XmlAttribute.cs
- IndentTextWriter.cs
- SemanticResolver.cs
- SchemaCollectionCompiler.cs
- HtmlInputHidden.cs
- EntityFunctions.cs
- Color.cs
- DynamicMethod.cs
- AdministrationHelpers.cs
- WebPartEditorApplyVerb.cs
- XmlNamespaceMappingCollection.cs
- BigInt.cs
- MethodMessage.cs
- ConsumerConnectionPointCollection.cs
- DataTemplateSelector.cs
- SqlUDTStorage.cs
- ContentType.cs
- TabItem.cs
- BulletChrome.cs
- ColumnClickEvent.cs
- ValueConversionAttribute.cs
- AssemblyUtil.cs
- TransactionScopeDesigner.cs
- DefaultParameterValueAttribute.cs
- SessionStateModule.cs
- SimpleTextLine.cs
- ListBoxItemWrapperAutomationPeer.cs
- ConfigXmlReader.cs
- CompiledQuery.cs
- TypeTypeConverter.cs
- WebPartCatalogAddVerb.cs
- NodeFunctions.cs
- CollectionChangeEventArgs.cs
- AddInIpcChannel.cs
- SplayTreeNode.cs
- ObjectIDGenerator.cs
- TextBoxBase.cs
- IsolatedStorageFilePermission.cs
- ISessionStateStore.cs
- SslStream.cs
- MetadataPropertyCollection.cs
- EntityDataSourceConfigureObjectContext.cs
- ModifierKeysConverter.cs
- PersistenceMetadataNamespace.cs
- ListView.cs
- OleCmdHelper.cs
- _CookieModule.cs
- DesignerUtils.cs
- Span.cs
- OrderedDictionaryStateHelper.cs
- XamlReader.cs
- CookielessHelper.cs
- ConvertEvent.cs
- DependencyObjectCodeDomSerializer.cs
- IdentifierCreationService.cs
- DesignerToolStripControlHost.cs
- RegexMatchCollection.cs
- Configuration.cs
- ContextQuery.cs
- IApplicationTrustManager.cs
- XPathNodeHelper.cs