Classic Shell http://www.classicshell.net/forum/ |
|
Win 7 Explorer left pane scroll fix ONLY? TVM_ENSUREVISIBLE http://www.classicshell.net/forum/viewtopic.php?f=13&t=392 |
Page 1 of 1 |
Author: | XSPR [ Sun Mar 17, 2013 12:53 am ] |
Post subject: | Win 7 Explorer left pane scroll fix ONLY? TVM_ENSUREVISIBLE |
Hello! Classic Shell looks very impressive. However, it does a lot. I know some things are configurable, but I am really only interested in one thing: Only a fix for the left pane autoscroll bug in Windows 7 Explorer. If this is not possible, I have some technical questions about how to make such a small program myself. I took a look at the source code and the nice article about it here (thanks Mr. Beltchev!): http://www.codeproject.com/Articles/45430/Classic-Shell From what I understand, the solution Classic Shell implements is to make that C++ hook/callback function, which prevents (one of?) the TVM_ENSUREVISIBLE messages from getting sent. Is that correct? I am more familiar with C# than C++, so the code and its context was hard for me to understand. Using Spy++ 8 and BlitzPlus, I was able to find and programmatically get the handle hwnd of the tree view that sends the TVM_ENSUREVISIBLE messages. BlitzPlus is a language that can use a custom DLL's functions written in C++ if I declare them. I don't have much experience with hooks and callbacks-- and I'm afraid I might cause problems or lock up my system. I wish I could eradicate all auto-scrolling behavior in Windows 7 Explorer, including the "feature" of auto-scrolling an expanding folder to the top of the pane. I guess it's trying to show me all the subfolders, or as many of them as it can show. But it is jarring and I'd prefer to do the scrolling myself. Whether it scrolls to the top or the bottom, it is annoying for me because it's easy to lose my place and become momentarily distracted, having to re-navigate that "navigation" pane myself. The bug fix, as performed in Classic Shell, seems to ignore ONE of the TVM_ENSUREVISIBLE messages. Or is it any TVM_ENSUREVISIBLE message? The bug happens randomly on folders that haven't been opened that session, correct? So for the times that the bug doesn't occur, can it avoid the "feature" of autoscrolling which puts the expanding folder at the top? I.e. can a small program be made with a hooked callback function that tells Explorer's tree view to ignore ANY autoscrolling behavior, including the feature of placing it at the top? I'd settle for just the bug fix (to prevent it placing it at the bottom), but eradicating any autoscrolling in that left pane would be ideal. |
Author: | Ivo [ Sun Mar 17, 2013 8:08 am ] |
Post subject: | Re: Win 7 Explorer left pane scroll fix ONLY? TVM_ENSUREVISI |
I disable TVM_ENSUREVISIBLE for the root item if it is not currently selected. The auto-scrolling to the top is a feature of the underlying tree view control. It is not something that can be easily disabled. |
Author: | XSPR [ Sun Mar 17, 2013 8:42 am ] |
Post subject: | Re: Win 7 Explorer left pane scroll fix ONLY? TVM_ENSUREVISI |
Ivo wrote: I disable TVM_ENSUREVISIBLE for the root item if it is not currently selected. The auto-scrolling to the top is a feature of the underlying tree view control. It is not something that can be easily disabled. Thank you sir! If I wanted to make a DLL or a standalone program that only disables TVM_ENSUREVISIBLE, as you already coded in Classic Shell, what are the necessary parts besides the hook function CExplorerBHO::SubclassTreeProc that subclasses the tree view control? (I apologize if this is too technical a question for these forums.) |
Page 1 of 1 | All times are UTC - 8 hours [ DST ] |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |