转 【教程】告诉你常见任务的位置如何设定(2种方法)
上一篇 /
下一篇 2008-06-02 14:32:49
论坛现在有人讨论如何修改常见任务栏的位置了.这里就把我的发现和大家分享下.如果你要安装我说的修改,修改前备份总是没错的. [:happy:] 另外,由于XP的窗口长宽比例,不推荐把常见任务移动到上方或者下方(这样的话要更改常见任务里组件的位置)
我们先来看几个图,我们下载一些主题后,可以发现应用后其中的常见任务栏不一定是在窗口左侧,而是有的在右边,有的甚至跑上边去了.大家已经发现这个可以修改VS中的shellstyle.dll达到这个效果,我也下载了可乐在一个帖子里提供的2种shellstyle.[;D]
图1:常见任务在窗口上方.


图2:常见任务在窗口右侧.
所以,第一种方法就是修改VS中的shellstyle.dll
关键是找到shellstyle.dll的什么地方在定义常见任务的位置.通过几个shellstyle.dll的对比.发现是其中uifile资源里的1号资源.其中定义位置的地方如图:
常见任务在上方的:

所以只要把里面的top修改成其他的,比如left,就能让常见任务回到左边.(这里需要注意的是,常见任务在上方的情况,其常见任务各部分位置在shellstyle中做了重排.我这里只是给大家看个效果而已,并没有重新排列常见任务中的各个组件)

常见任务在右边的也是一样:
把里面的right改成left后,常见任务就回到窗口左侧了
但是我们可以看到.一般的VS,以及XP默认的shellstyle.dll.在uifile的1号资源脚本最后是没有上面说的那些语句的.所以,上面我只是说明究竟是怎么定义常见任务位置的而已.要想让你现在所用VS的常见任务出现在右边(或者其他地方),只要在shellstyle.dll的uifile的1号资源最后加上如下一段语句,修改后编译保存就可以了.
<hwndview resid=main id=atom(main) sheet=styleref(main) layout=borderlayout()>
<ScrollViewer id=atom(scroller) sheet=styleref(taskpane) layoutpos=right xscrollable=false width=210rp>
<element id=atom(backdrop) layoutpos=top layout=filllayout()>
<element id=atom(sectionlist) layout=verticalflowlayout(0,0,3)/>
</element>
</ScrollViewer>
<Element layoutpos=Client layout=filllayout()>
<Element id=atom(clientviewhost) layout=borderlayout()>
</Element>
<Element id=atom(blockade) layout=borderlayout()>
<Element id=atom(blockadeaccent) layoutpos=left width=1/>
<Element id=atom(blockadeclient) layoutpos=client layout=borderlayout()>
<Element id=atom(blockadetitle) layoutpos=top/>
<Element id=atom(blockademessage) layoutpos=top/>
<Element id=atom(blockadeclear) layoutpos=top layout=borderlayout()>
<Button id=atom(blockadeclearbutton) layoutpos=top layout=borderlayout()>
<Element id=atom(blockadecleartext) layoutpos=top/>
</Button>
</Element>
</Element>
</Element>
</Element>
</hwndview>
<expando resid=mainsection layout=borderlayout() width=186rp>
<element layoutpos=top layout=filllayout()>
<button id=atom(header) layoutpos=bottom layout=borderlayout()>
</button>
<element id=atom(title) layoutpos=client/>
</element>
<clipper layoutpos=top>
<tasklist id=atom(tasklist) layout=verticalflowlayout(0,0,0)/>
</clipper>
</expando>
<expando resid=section layout=borderlayout() width=186rp>
<button id=atom(header) layoutpos=top layout=borderlayout()>
<element id=atom(title) layoutpos=client/>
</button>
<clipper layoutpos=top>
<tasklist id=atom(tasklist) layout=verticalflowlayout(0,0,0)/>
</clipper>
</expando>
如果要把常见任务修改到其他地方.只要修改红色部分的位置就可以了.左侧为left,右侧为right,上方为top,下方(只是理论上的猜测,没有试验)应该为bottom.这里要注意的是,由于XP窗口一般为长大于宽,所以放在上方和底部的时候,要在uifile的1号资源中重新定义常见任务的各部分位置.
第2种方法:那么,有没有办法让所有VS的常见任务都到右边去,而不是一个一个修改shellstyle呢,老外又是怎么想到加这么一段语句来实现常见任务位置的定义呢?
我们可以发现,加上的这段语句其实和shell32.dll里的uifile的3号资源里的语句一摸一样.所以,只要在shell32.dll里把位置定义好,以后就不用每个VS都一个一个去修改shellstyle了.如图:

只要把里面默认的left改成right,就可以把常见任务弄右边去了.
导入论坛
收藏
分享给好友
推荐到圈子
管理
举报
TAG: