Project1

标题: 请教像VA那样的自动载入字体在XP里怎么实现? [打印本页]

作者: 赛露休斯    时间: 2014-6-20 13:33
标题: 请教像VA那样的自动载入字体在XP里怎么实现?
VA有个Fonts文件夹,把字体文件放入其中就能自动载入了
但XP的不行,虽然有自动载入字体脚本,但只要路径变一变或者字体文件移动变更两下就会出bug、以及某些机器会失败
不知道VA是怎么实现的?XP的话有没有办法也想VA那样实现吗?

作者: fux2    时间: 2014-6-20 17:37
紫苏的启动时获得句柄的dll是开源的,
夏娜也提供了播放器的源码,
你只要有vs,然后把dll源码部分的这一段
  1.     char buf[256], *pBuf = buf;
  2.     GetPrivateProfileString("Font", "names", "", buf, 256, szIniPath);
  3.     while(*pBuf) {
  4.         char *p;
  5.         for(p = pBuf; *p != 0 && *p != '|'; ++p);
  6.         if(*p) {
  7.             *p = 0;
  8.             ++p;
  9.         }
  10.         AddFontResourceEx(pBuf, FR_PRIVATE, 0);
  11.         pBuf = p;
  12.     }
复制代码
复制进去,编译生成就可以使用了。
作者: 赛露休斯    时间: 2014-6-20 19:00
本帖最后由 赛露休斯 于 2014-6-20 19:05 编辑
fux2 发表于 2014-6-20 17:37
紫苏的启动时获得句柄的dll是开源的,
夏娜也提供了播放器的源码,
你只要有vs,然后把dll源码部分的这一段 ...


这一段源码,复制到夏娜的播放器编译可以吗?还是必须要dll?
另外这段代码能不能弄成载入指定文件夹内的字体那样呢?
作者: fux2    时间: 2014-6-20 19:06
赛露休斯 发表于 2014-6-20 19:00
这一段源码,复制到夏娜的播放器编译可以吗?还是必须要dll?
另外复制到哪个位置? ...


代码单独复制过去就可以了,如果你不需要紫苏dll 的其他功能。
在夏娜播放器里有步骤注释,步骤1设置RTP的前面加上这一段就行。
在这里你还可以去掉debug信息,还可以加密噗哟哟233
用法和紫苏dll一样,写在ini里,记得看紫苏dll的使用说明。
作者: 赛露休斯    时间: 2014-6-20 19:09
本帖最后由 赛露休斯 于 2014-6-20 19:11 编辑
fux2 发表于 2014-6-20 19:06
代码单独复制过去就可以了,如果你不需要紫苏dll 的其他功能。
在夏娜播放器里有步骤注释,步骤1设置RTP ...


对了,字体这段代码能不能弄成载入指定文件夹内的字体那样子呢?
总觉得在ini里面编辑,玩家会随意修改

作者: fux2    时间: 2014-6-20 19:13
赛露休斯 发表于 2014-6-20 19:09
对了,字体这段代码能不能弄成载入指定文件夹内的字体那样子呢?
总觉得在ini里面编辑,玩家会随意修改
...

核心不过是这个而已
  1. AddFontResourceEx(pBuf, FR_PRIVATE, 0);
复制代码
你自己遍历fonts文件夹得到字体文件名,赋给这个pbuf就行了。
然后,这里是RM的提问区,这么问偏题很厉害了。
作者: 赛露休斯    时间: 2014-6-20 19:21
fux2 发表于 2014-6-20 19:13
核心不过是这个而已你自己遍历fonts文件夹得到字体文件名,赋给这个pbuf就行了。
然后,这里是RM的提问区 ...


对C完全外行呢,装VS一共才学过几天就被难倒了orz,连遍历文件夹也不会...能不能帮忙写一下遍历代码呢?
另外话说我在一些RGSS自动加载字体脚本里也有看到AddFontResourceEx这个,编译到exe里和直接写脚本有什么不同吗?
作者: fux2    时间: 2014-6-20 19:31
赛露休斯 发表于 2014-6-20 19:21
对C完全外行呢,装VS一共才学过几天就被难倒了orz,连遍历文件夹也不会...能不能帮忙写一下遍历代码呢?
...

现在在用别人的机器,没有vs,这玩意太大了。
至于脚本无效的原因,我之前听人说过好像是某个操作只在启动时执行一次,
具体的记不清了,总之就是没用= =
作者: 赛露休斯    时间: 2014-6-20 19:53
fux2 发表于 2014-6-20 19:31
现在在用别人的机器,没有vs,这玩意太大了。
至于脚本无效的原因,我之前听人说过好像是某个操作只在启 ...

原来是这样
刚刚百度“C++ 遍历文件夹”发现并不容易,等有vs的时候就拜托了哦~
顺便刚刚有提到了用这个可以加密?一般来说是怎样的思路呢?




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1