Skip navigation.

Fat R笔记……与减肥无关

Fat awful terrible Rubbish-bin

Posts tagged with "Windows"

使用SATA硬盘后的待机问题

,

我的主机(Epox的9nda3i,NForce3芯片组)原先采用的是两块PATA硬盘,现在由于其中一块烧掉了 (意味着JavaMagic有排不能更新了,虽然现在我也没空去更新……)换成了一块SATA

可是问题来了,换了SATA后待机居然就不能正常唤醒了,要么开机后屏幕黑掉只剩鼠标指针可以动,要么就是可以看到wallpaper,但仍然只有鼠标可以动。后来重新装了一个系统,稍微好一些,唤醒时可以看见登录框,但输入密码后就freeze了,现象很像以前硬盘掉电造成的freeze。于是就怀疑起硬盘来,后来发现把PATA拔了居然就可以正常待机并唤醒了,但只要插上PATA就必然不行(我试过手上若干能被BIOS辨认出来的PATA都这样,只有BIOS辨认不出来的才能幸免)。

由于不知道到底是跟BIOS有关还是跟驱动有关,现在又是赶论文的关键时期,不敢赌rp去烧bios,于是只好尝试不同的驱动版本。然而试了n款,包括非官方和官方的,无论新旧,都存在这个问题。后来发现,把NForce的SW IDE驱动卸载,用回系统自带的atapi驱动居然就正常了,唯一不爽的地方是开机进系统的时候要检测n久。

再后来,发现用SW IDE驱动时,在BIOS里面把PATA硬盘设置成None,居然也可以待机了。不过那破驱动会把硬盘的Transfer Mode自动检测成DMA 2,要在设备管理器那里去掉"Let BIOS select transfer mode",并手动指定成最高的传输模式。虽然还是不爽,不过也只能这样将就用着先了。

另外,在网上搜索了一下,似乎讨厌NForce SW IDE驱动的人也不少。这里还有一个有趣的benchmark,似乎系统自带的驱动性能也不差嘛……
http://www.nforcershq.com/forum/benchmark-ms-ide-vs-nforce-ide-updated-vt56754.html

这里讲到了卸载NForce IDE驱动的方法:
http://forums.nvidia.com/lofiversion/index.php?t12773.html
即,可以在添加删除程序那里用卸载程序卸,也可以在设备管理器的IDE ATA/ATAPI控制器下,选择右键菜单的“更新设备驱动”,在向导中选择指定安装,不要搜索,然后就可以在向导里看到“标准双通道PCI IDE控制器”,也就是系统自带的驱动了。

晕了,Word的自动编号功能

,

自动编号功能在写论文的时候非常有用,在调整章节标题、图表位置时其编号也会随之变化,并且还可以在文章中交叉引用,省去了手工操作的麻烦。然而今天尝试为图注按章节编号(即图2-1 xxxx的格式,表示第二章的第一张图)却遇到了巨大的挫折,插入图注时选择“包含章节号”并选择起始样式1时,word提示“题注或页码中不含章节号”(神经病Word,那么大一个章节号在标题中你看不见么……而且为什么会在“题注”和“页码”中找章节号啊你 )如果强行插入,文档中就会显示“错误!文档中没有指定样式的文字。”Word的帮助基本上是废的,后来折磨了半天我才总算搞明白到底该怎么正确使用自动编号的功能。

按我的理解Word里面的样式是可以“继承”。在样式修改窗口中有一栏“样式基于”选项,在这一选项中可以选择当前样式继承了哪个父样式的所有设置。我以前认为,只需要在“段落”的“大纲等级”那里正确设置了等级,就万事无忧了。反正目录什么的应该就是靠文本的大纲等级来生成的。所以我之前的做法是新建一个基于标题1的样式,然后把字体编号什么的修改成我需要的,然后应用到我的章标题上,二级标题同样是基于标题2修改。这样一直用着倒也没什么问题。

然而这正是灾难的根源。

通过研究发现,插入包含章节号的图注时实际上插入的是两个域:
{ STYLEREF 1 \s }-{ SEQ 图 \* ARABIC \s 1 }

第一个域就是章节号,第二个域就是图编号。在“插入”-“域”菜单可以手工插入这两个域,域的参数含义也可以在插入域的窗口中查看到(但StyleRef域的\s开关似乎没有说明)。
我之前基于标题1样式创建了MyTitle1样式作为我的章标题样式,通过StyleRef域的参数说明,我把它改成
{ STYLEREF  MyTitle1 \n \t  \* MERGEFORMAT }

这样可以正确用数字显示我的章序号了,而问题是SEQ域的\s 1开关没有生效,在新的章节里它的编号还是继续累加,没有重新设置为1。即使把它改成\s MyTitle1也仍然不行。

然后,我终于发现上面给出的那个Word自动插入的域代码不认可我设置的标题样式,是因为它只会认名字为“标题 1”的那个内置的样式,而不会认我的基于“标题 1”的样式。这样想其实也对,毕竟叫“标题 1”的只有一个,而基于标题1的样式却可以有很多。

因此,正确的做法是这样:
- 打开“样式和格式”侧边栏(菜单项“格式”-“样式和格式”,或工具栏样式列表左边的那个按键)
- 侧边栏下方的“显示”选择“有效格式”
- 右键单击 "标题 1",选择“修改”
- “样式基于”选择“无样式”(当然也可选择想继承的样式)
- 修改成自己需要的风格
- 样式名称可以改,但改完之后会变成“标题 1,MyTitle1”这样,相当于为内置的一个样式增加了一个别名(我的理解)
- 将其应用到标题上
- 如果对效果不满意,不要直接在标题上改,仍然是在“样式”中改(除非选中了“自动更新”,反正一定不能修改后会自动生成一个基于“标题 1”的样式)
- 确认应用在标题上的是“标题 1”而不是基于它的子样式,这时就可以正常使用图注功能了

另外,编号的时候也要注意要针对每一级的标题分别设置编号方式。以三级标题为例,设置如下:
- 修改“标题 3”的样式,打开“修改样式”窗口
- 左下角的“格式”选择“编号”
- 选择“多级符号”,然后随便选一个(最好是选接近自己需要的那个),点“自定义”

呃,我错了,正确的方法是:
- 点击菜单项“格式”-“项目符号和编号”
- 到“多级符号”标签页中,选一个接近自己需要的样式,点“自定义”
- 点击“高级”按键
- 编辑级别1的样式,注意“将级别连接到样式”那里选择“标题 1”(如果不做这一步,后面的级别的一个个数字是不会随章节数变化的)
- 编辑级别2的样式,注意“将级别连接到样式”那里选择“标题 2”,“在其后重新开始编号”选择“级别 1”
- 编辑级别3的样式,注意“将级别连接到样式”那里选择“标题 3”,“在其后重新开始编号”选择“级别 2”
这样使用三种标题样式作为章节标题时就不必操心编号的问题了。

在MinGWStudio中建立VirtuaWin Project

, ,

首先用cvs下载最新的VW代码:

#mkdir virtuawin
#cvs -d:pserver:anonymous@virtuawin.cvs.sourceforge.net:/cvsroot/virtuawin login
#cvs -z3 -d:pserver:anonymous@virtuawin.cvs.sourceforge.net:/cvsroot/virtuawin co -P .


然后把virtuawin目录复制到Windows下,假如D:\MyProject\virtuawin
运行MinGWStudio.exe,Ctrl+N新建Project,类型是Win32 Console Application(如果希望带上一个console用于调试)或者Win32 Application,Location选择D:\MyProject,Project name为virtuawin,提示时回答yes。

建立project后,用右键菜单分别添加Source Files(添加D:\MyProject\virtuawin下所有列出的.c文件)、Header Files(添加D:\MyProject\virtuawin下所有.h文件)、Resource Files(添加VirtuaWin.rc)

接下来增加需要的链接库。按Alt+F7打开Project Settins,Compile页的Extra compiling options里填入-mtune=pentium4(也可以不填),Link页的Libraries填入gdi32;comctl32;winmm。注意Extra linking options,如果填入-mwindows则表示不带console,否则默认情况下会有一个console。

保存后,Project文件就会被创建到D:\MyProject\virtuawin\virtuawin.mdsp了。可以复制一份,一份对应带console一份对应不带console。

从synergy抄了一个功能...

, ,

VirtuaWin的鼠标切换虚拟桌面功能一直让我又爱又恨,虽然加入了自定义触发区域、全屏检测等功能,但还是经常发生误切换。synergy(一个用一套鼠标键盘控制n台电脑和屏幕的软件)有一个用ScrollLock将鼠标锁在当前屏幕的功能,觉得挺有用的,于是抄过来加到VirtuaWin里面。在适当的地方(我暂时把它放到了MouseProc中,检测鼠标是否处于触发区的代码前。觉得应该衡量一下两者的开销,再决定要不要干脆把它移到别的地方)加入以下代码即可实现这个功能:
if (scrollLock && (GetKeyState(VK_SCROLL)&1)) continue;

其中scrollLock是一个新加的配置选项,用于设置是否启用这一功能。

当然,要做到像synergy那样支持自定义按键还有一堆代码要写,以后再看看有没有这个必要吧。

vw3.exe

另外,有人知道什么好的全屏检测(检测当前窗口是否处于全屏状态)机制吗....

Word生成图表列表

,

首先是为图片和表格增加题注。题注可以用插入>引用>题注来插入,也可以手动输入。手动输入题注的方法是按Alt+F9进入域代码编辑模式,输入
Fig. { SEQ Fig. \* Arabic }示范图片

即可输入图注,图注的标签为"Fig.",其中的域代码会按顺序自动生成图片编号,因此每张图片都可以使用同样的代码。

如果是手动输入,还是需要到插入>引用>题注菜单,选择新建标签,输入Fig.,这样Word就会把刚才手动输入的标签识别为图注标签了。这时就可以在插入>引用>索引和目录>图表目录对话框标签页中选择刚才新建的标签"Fig."了。如果需要修改字体和缩进等样式,可以按“修改”键进行修改。

对于表格,也可以采用类似的方法。

干掉丑丑的属性页字体……

效果如图。
之前是这样,字体是宋体,众所周知的丑:

替换成Tahoma字体之后:

不过这里有一点小问题,就是对话框高度增加了,有时会显得不好看。例如:

嗯,其实这个对话框下面本来就有一坨空白,只不过改了字体后空白更多了


修改的方法很简单,用资源编辑器打开%WINDIR%\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.2180_x-ww_a84f1ff9\comctl32.dll
把Dialog资源中,语言版本为2052(即简体中文)的对话框的字体改掉就行了。原来用的是9pt的宋体,改成8pt的Tahoma就可以了。之前试过改成9pt的Tahoma和微软雅黑,对话框会被撑得很大,看起来很难看,所以最后还是跟英文版本的字体一致,用8pt的字体。
另外,在string table资源的264那里还有一个"宋体",没研究过干嘛用的,不过也一起改掉吧。上面还有个数字"42",英文版本的数字是"9679"也一起改掉。
在x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.0.0_x-ww_1382d70a目录下面还有一个6.0的comctl32.dll,也可以用同样的方法修改。
5.0版本的comctl32.dll在system32目录下面,也可以进行同样的修改,只是string table里面似乎没有"宋体"这个字符串。


另外,一些标准对话框(如打开文件,字体选择等)的字体也可以在systen32\comdlg32.dll里面改。例如打开文件对话框,有时文件类型那里会很长,用宋体会显示不全,改成Tahoma就好看多了。


修改之前记得要把system32\dllcache里面对应的dll删掉,否则会被系统自动替换回去的。