zoukankan      html  css  js  c++  java
  • 全脑瘫IT时代(五)

    Windows 7 有一个臭名卓著的bug。什么?你不知道?只要搜“windows7 explorer double click scroll”,排在结果第一的就是。

    OK, let's show it.

    运行资源管理器,展开一些文件夹,让左边的树列表滚动条充满,找一个子文件夹比较多的文件夹,就比如c:\windows,双击windows,很大概率滚动条跑到上面去了,你双击的文件夹被放在了屏幕最下面。

    我们双击一个文件夹展开它基本上是因为我们想看到它的子文件夹,如今却被滚动到看不到的位置,每次双击都要手工去调整滚动条的位置。

    这是一个几乎每天都会遇到,甚至可以说是如影随形的bug,但是却一直没有被修正(注意只有windows7才有这个问题)。

    Update,现在有一个解决办法,使用开源的 Classic Shell:

    CodeProject

    SourceForge

    问题的原因:

    Explorer 向 TreeView 发送了两次 TVM_ENSUREVISIBLE,第一次发送给顶层Item,第二次发送给选中的Item。发送给顶层是没有什么意义的,这导致了bug,但是不知道微软这样做的意义。

    解决的办法可以参考 Classic Shell 的源代码,ExplorerBHO.cpp line 39:

        if (uMsg==TVM_ENSUREVISIBLE && (dwRefData&1))
        {
            // HACK! there is a bug in Win7 Explorer and when the selected folder is expanded for the first time it sends TVM_ENSUREVISIBLE for
            // the root tree item. This causes the navigation pane to scroll up. To work around the bug we ignore TVM_ENSUREVISIBLE if it tries
            // to show the root item and it is not selected
            HTREEITEM hItem=(HTREEITEM)lParam;
            if (!TreeView_GetParent(hWnd,hItem) && !(TreeView_GetItemState(hWnd,hItem,TVIS_SELECTED)&TVIS_SELECTED))
                return 0;
        }

  • 相关阅读:
    css3简易实现图标动画由小到大逐个显现
    下拉图标呼吸效果制作
    设置图片从页面四周渐入效果的锚点方法
    关于导航宽度高度自适应的小栗子
    Odd-e CSD Course Day 5
    Odd-e CSD Course Day 2
    Odd-e CSD Course Day 3
    Odd-e CSD Course Day 1
    Odd-e CSD Course Day 4
    [心得] SQL Server Partition(表分區) 資料分佈探討
  • 原文地址:https://www.cnblogs.com/skogkatt/p/4163376.html
Copyright © 2011-2022 走看看