PPC字体修改之初步尝试
来源:互联网 发布:桥梁 健康 监测 软件 编辑:程序博客网 时间:2024/05/21 12:15
现在先介绍一下CreateFontIndirectW这个函数:
HFONT CreateFontIndirect(
const LOGFONT* lplf
);
Parameters
lplf
[in] Long pointer to a LOGFONT structure that defines the characteristics of the logical font.
Return Values
A handle to a logical font indicates success. NULL indicates failure. To get extended error information, call GetLastError.
上边是PPC2003的sdk里边的介绍,在MSDN里边也有。这个函数只有一个参数,就是Logfont结构体。返回值是一个字体的句柄,如果调用失败则返回NULL。Logfont是一个结构体,是如下定义的:
This structure defines the attributes of a font.
typedef struct tagLOGFONT {
LONG lfHeight;
LONG lfWidth;
LONG lfEscapement;
LONG lfOrientation;
LONG lfWeight;
BYTE lfItalic;
BYTE lfUnderline;
BYTE lfStrikeOut;
BYTE lfCharSet;
BYTE lfOutPrecision;
BYTE lfClipPrecision;
BYTE lfQuality;
BYTE lfPitchAndFamily;
TCHAR lfFaceName[LF_FACESIZE];
} LOGFONT;
这些参数不用我介绍了吧?有用的就是第一个即字体的高度。还有就是Charset,这是设置字符集的,不过在PPC下,似乎没啥用处。最后一个则是字体名,如“宋体”,“Tahoma”等。下边尝试着改一下一个软件的字体。
第一个被动刀子的是大树(谁是大树?当然是风流倜傥,玉树临风的……还是自己到bbs.hanzify.org去问吧:)汉化的FunnySnake TKCreater这是个非常好用的主题编辑软件。这个软件几乎在我的PDA上没有一个标准字体-_-b,当然是先修改标准字体。我发现对话框字体全是Tahoma 8,可能是我PDA的分辨率问题吧。显示效果很差。所以我都改成了Tahoma 9就有些地方显示效果比较好了。但界面还有许多地方字体烂,譬如说主界面:
打开IDA Pro反汇编,搜索Font字串,找到几处:
一共找到7处,先分析第一处:
我们知道CreateFontIndirectW的参数只有一个。前面文章我们分析。前四个参数是通过寄存器传递。所以R0里边就是Logfont的地址了。看看上边图,IDA已经标出来了。R0里边的值是SP+#0xC0+var_BC。第一个参数也就是字体高度了。我们可以往上翻,找到设置字体高度的地方:
MOV R3, #0xD
STR R3, [SP,#0xC0+var_BC]
先把0d放入r3,然后把r3,放入SP+#0xC0+var_BC,这个地址。所以字体高度就是0d.我试着改成0e,其他也照样都改成0e.只是最后一个有点麻烦:
首先我们看到参数在R4里边。再看前边:
首先,字体高度是在R7里边,而从上图的第一行来看则是来源于R2。R2又是这个字函数传入的第二个参数,所以改法即有两种:一是把 MOV R7, R2,改成 MOV R7, 0x0E,这样不管传入什么参数,得到的都是0x0E的字体,再一种改法便是到函数外边改:
双击图中的黄色部分,就到了调用处
修改这里就可以了。全部修改完后效果如下:
但是……
菜单成了这样字这是真么回事呢?原来是因为本来这地方是两行一样的字体摞起来的。字体改大后由于不一样了就成酱紫了。并且只要这地方改好了,主界面字体就完了,弄了好一阵子才改的像点样子了(这个太麻烦,我就不写了)。可惜最上边一行时间没法弄好了。算一个美中不足吧。还有一处美中不足的地方是关于对话框的那个连接,我也暂时没找到改法。
- PPC字体修改之初步尝试
- NDK之cmake初步尝试
- PPC获取系统字体
- 内存修改初步之-扫雷成绩修改
- 修改ppc模拟器的内存
- 初步尝试WPF
- 初步尝试RMAN备份
- Qt多线程初步尝试
- SSH初步整合尝试
- 菜鸟尝试初步编程
- Spark 的初步尝试
- gearman初步尝试
- OJ实现初步尝试
- 初步尝试shiny包
- Ajax的初步尝试
- ssh初步尝试
- 初步尝试python爬虫
- 初步尝试tidb
- linux上锐捷客户端配置
- ORACLE常用的SQL语法和数据对象
- XmlHttp实现无刷新三联动ListBox
- C#中使用PrintDialog方便的实现程序的打印功能
- 网络协议
- PPC字体修改之初步尝试
- 使用花生壳远程访问公司内部机器?
- 一个登录密码MD5加密的封装类代码共享
- oracle(使用TRUACTE删除数据时,提示资源正忙)
- 五一计划
- 羊肉臊子面制作全过程
- mysql数据类型
- 宏伟的计划
- jdbc 连接SQL 2000数据库的问题