铁血丹心

 找回密码
 我要成为铁血侠客
搜索
查看: 5500|回复: 8

[lua复刻] 关于窗口位置,窗口标题中文和图标显示

[复制链接]
发表于 2011-12-7 11:36 | 显示全部楼层 |阅读模式
本帖最后由 蓝烟清 于 2011-12-7 11:52 编辑

前段时间玩苍炎,还有最近玩龙的传人,最郁闷的地方就是开始游戏时窗口总会在很角落的地方出现,有时候窗口还会落到屏幕之外,总是得手工拖到中间,很纠结。拿游泳的鱼提供的0.66版C语言源码做实验
打开sdlfun.c源文件,找到InitGame函数,增加代码:
putenv ("SDL_VIDEO_WINDOW_POS");
putenv ("SDL_VIDEO_CENTERED=1");

就这么简单,最好放在SDL_SetVideoMode调用之前。重新编译,这下窗口不会乱跑了


再来中文标题显示
还是sdlfun.c源文件,先添加一个函数
  1. //把字符转为UTF-8格式
  2. void localeToUTF8(char *src, char *dest){
  3.         wchar_t *unicode_buf;
  4.         int len = MultiByteToWideChar(CP_ACP,0,src,-1,NULL,0);
  5.         unicode_buf = (wchar_t*)malloc((len+1)*sizeof(wchar_t));
  6.         MultiByteToWideChar(CP_ACP,0,src,-1,unicode_buf,len);
  7.         len = WideCharToMultiByte(CP_UTF8,0,unicode_buf,-1,NULL,0,NULL,NULL);
  8.         WideCharToMultiByte(CP_UTF8,0,unicode_buf,-1,dest,len,NULL,NULL);
  9.         free(unicode_buf);
  10. }
复制代码

上面的代码一定要 #include <windows.h> ,依赖windows。等哪天考虑移植再写写不依赖的吧

还是找到InitGame函数,输入代码:
  1. //蓝烟清:设置游戏标题
  2. char dest[255];
  3. char* g_Title = "龙的传人";
  4. localeToUTF8(g_Title, dest);
  5. SDL_WM_SetCaption(dest,"");
复制代码
dest至少得原来的两倍,保险点就定义长一点呗




最后是图标


很让人纠结,因为SDL貌似不支持ICO格式,sdl_image的API翻了个遍,也没找着,而且使用IMG_Load确实也加载不到,先用PNG代替吧还是sdlfun.c源文件,还是InitGame函数,加两个函数就可以了
SDL_WM_SetCaption(dest,g_Icon);         //这是显示窗口的
SDL_WM_SetIcon(IMG_Load(g_Icon), NULL);   //这是显示任务栏的

dest就是上面提到的了,g_Icon是图标的路径,一般都是32*32啦










本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要成为铁血侠客

x

评分

参与人数 1声望 +15 收起 理由
winson7891 + 15 好贴奖励

查看全部评分

【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2011-12-7 12:15 | 显示全部楼层
回复 winson7891 的帖子

可惜我加不了分

哇,delphi加图标确实容易哦

谁来救救鱼的C+lua,真找不到方法了,每次都得做两个同样的图标,一个ICO,一个PNG




【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2011-12-7 11:56 | 显示全部楼层
本帖最后由 winson7891 于 2011-12-7 12:06 编辑

全面一点,补充一下Pascal版吧~
另外提一下,窗口位置的功能同样的功能在Pascal版也适用哦~
代码如下(Pascal):
在kys_main.pas的函数 run 的最前面加入:
  1.   SDL_putenv(PChar('SDL_VIDEO_WINDOW_POS'));
  2.   SDL_putenv(PChar('SDL_VIDEO_CENTERED=1'));
复制代码
游戏窗口即可自动屏幕居中,当然,如果是全屏游戏,游戏会自动全屏,就看不到窗口了

另外,那个换图标的功能也是一样有效的,看蓝烟清的贴子吧~

不过对于delphi来说,图标是不需要像Lua版这么纠结的东西
查看上面的菜单,找到object,


然后找到Options,点击打开

得到以下面板,切换到Application的tab

看到可爱的Icon了吗?要换ICO就换吧~顺便连文件的大图标也一块换了~

标准格式是32*32,不过更大更小都可以哦~

就这样吧~

PS: 谁来给我加分~

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要成为铁血侠客

x
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2011-12-7 17:56 | 显示全部楼层
回复 winson7891 的帖子

win神,我错了今天闲来无事,网上转了转,意外发现SDL_Image 1.2.8版本的更新说明 Added support for ICO and CUR image files






下下来更新,果断可以使用ICO,不用做两图标了


http://www.libsdl.org/projects/SDL_image/
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-2-4 03:57 | 显示全部楼层
SDL视频窗口左上角的图标好像只能用png,什么版本都一样。
delphi的载入图标对控制台窗口有效,但是对sdl窗口好像无效。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-8-20 11:28 | 显示全部楼层
呼叫蓝大~

龙人版窗口确实有这个问题
有解决方法吗?
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-8-20 11:28 | 显示全部楼层
回复 蓝烟清 的帖子

难道只有改exe了?
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-9-27 09:49 | 显示全部楼层
非常感谢,还有一个问题。怎么样才能让程序图标做到256色?
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-9-27 11:04 | 显示全部楼层
回复 蓝烟清 的帖子

我的意思是在文件夹中显示的图标。VC只能导入16色的。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要成为铁血侠客

x
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。

本版积分规则

小黑屋|手机版|铁血丹心

GMT+8, 2024-11-15 11:50

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表