ResHacker使用小解

阅读更多
转自 http://bbs.myjxtx.com/read.php?tid=10866&fpage=1:
我们随便用ResHacker打开一个对话框,比如我修改的下载对话框:

首先这几行:

这里的是此对话框的编号,标题,使用语言,使用字体等参数。。。

对话框常见控件
接下来的两个大括号“{}”中括起来的就是对话框的控件了,每一个控件对应一行

控件有其基本格式:
CONTROL “控件内容”, 控件所对应的编号, 控件类型, 控件参数, X方向位置, Y方向位置, 长度, 宽度

基本操作:

改变位置和大小:其中位置和大小是根据自己的需要修改的,可以直接修改数值,或者在对话框演示窗口中直接拖动,有一些控件像AVI动画等在演示窗口中是隐藏不显示的,点击会出现大小虚框,就可以拖动了。。。

添加控件:需要加上一个控件可在“{}”中加上一行对应类型的代码,每个类型的代码格式在下面分类说明,直接复制格式代码再根据自己需要修改即可(一般添加的是文字、位图、图标或AVI动画代码。而按钮、进度条和代码一般只做修改不做添加。。。添加的话需要另外修改其他的对应复杂一些的代码。。。)

删除控件:直接删除对应的那一行代码即可

第2项控件的对应编号如果没有特殊需要(比如添加图标)最好不要改动。


以下就我知道的几种常见控件修改分类说明(所有的控件参数见文章最后的控件参数表):

1.文字信息的修改

这是最常见的一种控件了。。。
格式:

CONTROL "文件大小未知", 4361, STATIC, SS_SIMPLE | SS_NOPREFIX | WS_CHILD, 30, 40, 190, 20
修改说明:
第1项,控件内容就是"文件大小未知" 引号里的就是提示的文字内容,可以根据自己的需要改成自己想要显示的文字信息。

2.位图信息的修改

位图信息也是我们经常改动或加上的。。如FlyakiteOS里就加上了不少。。为我们的对话框增光添彩。。

格式:
CONTROL 2, 0, STATIC, SS_BITMAP | WS_CHILD | WS_VISIBLE | WS_GROUP, 261, 12, 85, 85

修改说明:
第1项,控件内容(格式中的就是2了)是对应的Bitmap位图资源组里的图片编号,如果你想新加入一个位图到对话框,可以在Bitmap位图资源组里新加入你所要添加的位图,编号可自己设定但不可与现有位图编号重复,然后在对话框里把上面的第1项控件内容改为你新加入位图的编号即可。。。
要注意的是添加的位图要用iconworkshop另存为“带透明的BMP位图”,这样编译保存以后对话框显示出来的就是透明的

3.图标信息的修改

图标在对话框中的修改方式与位图大致相同

格式:
CONTROL 4102, 4102, STATIC, SS_ICON | WS_CHILD | WS_VISIBLE, 7, 7, 21, 20

修改说明:
第1项控件内容和第2项控件编号(格式中都是4102)一般都是对应的Icon Group图标资源组的里的图标编号,如果你想新加入一个图标到对话框,可以在Icon Group图标资源组里新加入你所要添加的图标,编号可自己设定但不可与现有图标编号重复,然后在对话框里把上面的第1项控件内容和第2项控件编号改为你新加入图标的编号即可。。。

4.按钮信息的修改

按钮一般对应的按钮功能是在源程序设计的时候就制定好了的。。所以一般只修改位置和大小,不改内容,也不添加按钮。。

格式: CONTROL "打开(&O)", 4377, BUTTON, BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 30, 100, 60, 14

修改说明:按照基本操作中的位置和大小的修改方法修改。。

5.AVI动画的修改

AVI动画是比较麻烦的一项,首先你要自己用flash、fireworks、ImageReady、Photoimpact等动画制作工具制作好gif动画,再用Movie Gear转成AVI动画导入AVI资源组,AVI的制作参见可乐的教程: http://www.pcpchina.com/bbs/index.php?showtopic=64

格式: CONTROL "", 4353, "SysAnimate32", ACS_TRANSPARENT | ACS_AUTOPLAY | ACS_TIMER | WS_CHILD | WS_VISIBLE, 198, 11, 85, 85

修改说明:
AVI动画代码的最后两个也就是AVI动画长和宽的代码,要和你的实际AVI大小相同,要注意的是,这两个数并不是10进制数好像,或者是需要换算的。。。比如格式代码中的85 ,85对应的AVI大小是128*128

不过有一个偷懒的办法。。。不用换算。我是试了128*128的 位图放进去之后自动的调整为了85,85。。。。AVI我也试着用85 , 85,试出来确实没错128*128大小对应的就是85,85。。。其他的可以照搬。。。把你想改的AVI大小放一个同样大小的位图进去,会自动换算成控件格式的大小。。。

系统的一些AVI动画位置(注意AVI动画的上面的格式代码只供识别代码类型是AVI动画。。。修改的时候要用原代码改大小和位置,不可复制格式代码,否则会由于编号不同程序会找不到对应的动画):

下载动画:shdoclc.dll中的4352对话框,对应的是shdocvw.dll的AVI动画256号
网页下载动画:shdoclc.dll中的13136号对话框,对应的也是shdocvw.dll的AVI动画256号

以下动画共用shell32.dll中的1020号对话框
移动文件:shell32.dllAVI动画160号
复制文件:shell32.dllAVI动画161号
将文件移动到回收站:shell32.dllAVI动画162号-
清空回收站:shell32.dllAVI动画163号
删除文件:shell32.dll AVI动画164号
属性转换:shell32.dll AVI动画165号

另外补上AVI动画的添加方法,就是在本来没有AVI动画的对话框里添加AVI

首先当然还是要按上面的方法把你要加的AVI做好。。。然后导入你所要添加的对话框所在的文件中,导入的时候AVI号码自己定,但不可以和现有AVI号码相同,比如你设了一个号码为1。。。。那么在你要加的对话框的代码中加入下面这一行代码: CONTROL "#1", 12287, "SysAnimate32", ACS_CENTER | ACS_AUTOPLAY | WS_CHILD | WS_VISIBLE, 176, 17, 85, 85

其中控件内容,也就是“#1"里面,#号后面的数字就是你先前设定的avi号码了。。。。
6.进度条的修改


竖式进度条:

进度条也是windows对话框中经常出现的,除了我们常见的windows进度条以外,还有软件也有,例如winrar压缩的进度条等。。。

格式(进度由左往右增加): CONTROL "", 13137, "msctls_progress32", WS_CHILD | WS_VISIBLE, 4, 4, 20, 97

修改说明:Windows默认的进度条的进度是从左往右增加的,如以上格式代码就是,不少朋友喜欢把进度条改成从下往上增加的,也就是所谓的竖式进度条,在参数前面加上 PBS_SMOOTH | PBS_VERTICAL |即可注意改完后要对应的改变进度条控件的大小和位置

例如把以上格式代码中的变成进度从下往上的: CONTROL "", 13137, "msctls_progress32", PBS_SMOOTH | PBS_VERTICAL | WS_CHILD | WS_VISIBLE, 4, 4, 20, 97



暂时就写以上常见的6种,以后再补充其他的。。。
另外。。在所有的控件都修改完成之后养成一个好习惯,在演示窗口中把每个控件都点击一下看看大小虚框有没有盖住其他的控件,如果有就把大小调整一下再编译。。遗忘这一点可能会引起控件被盖住的错位问题

控件参数表
所谓控件参数基本上常见的就是Visual C++编程 MFC中的CStatic样式

基本的如下表:
CStatic样式
  所有的控制都有各种显示样式。样式是在用Create函数建立控制时传递给它的dwStyle参数所决定的。对CStatic有效的样式简介如下:

从CWnd继承来的样式:
  WS_CHILD CStatic所必须的。
  WS_VISIBLE 表示该控制对用户应该是可见的。
  WS_DISABLED 表示该控制拒绝接受用户事件。
  WS_BORDER 控制的文本区域带有边框。
CStatic固有的样式:
  SS_BLACKFRAME 该控制区域以矩形边界显示。颜色与窗口框架相同。
  SS_BLACKRECT ? 该控制以填充的矩形显示。颜色与当前的窗口框架相同。
  SS_CENTER 文本居中。
  SS_GRAYFRAME 控制以矩形边框方式显示。颜色与当前桌面相同。
  SS_GRAYRECT 该控制以填充的矩形显示。颜色与当前的桌面相同。
  SS_ICON 控制以图标形式显示。文本作为图标在资源文件的名称。rect参数只控制位置。
  SS_LEFT 文本居左显示。文字可回绕。
  SS_LEFTNOWORDWRAP 文本居左显示。多余的文字被剪裁。
  SS_NOPREFIX 表示字符串中的"&"字符不表示为加速前缀。
  SS_RIGHT 文本居右显示。文字可回绕。
  SS_SIMPLE 只简单的显示一行文本。任何CTLCOLOR信息都被其父窗口忽略。
  SS_USERITEM 用户定义项。
  SS_WHITEFRAME 控制以矩形边框方式显示。颜色与当前窗口背景颜色相同。
  SS_WHITERECT 控制以填充矩形方式显示。颜色与当前窗口背景颜色相同。
  
这些常数中,“SS”(Static Style)开头的表示只能用于CStatic控制。以“WS”(Window Style)开头的常数表示可适用于所有窗口,它们定义在CWnd对象中。CWnd中还有很多以“WS”样式常数。你可以在MFC文档中的CWnd::Create函数中找到它们。上面的四种是只用于CStatic对象的。
  CStatic对象至少要带有两个样式:WS_CHILD和WS_VISIBLE。该控制必须作为另一窗口的子窗口来建立。如果不使用WS_VISIBLE,则所建立的控制是看不见的。WS_DISABLED控制着标签对事件的响应,因为CStatic不接收键盘或鼠标事件,所以使用该项是多余的。
  所有的其它样式选项都是可选的,它们控制着标签的外观。在CStatic::Create函数中使用这些控制,可以控制CStatic在屏幕上的显示。

你可能感兴趣的:(MFC,Windows,PHP,BBS,框架)