我不知道说的对不对,即使对,我还是不理解这两个函数的区别。请大家指教。GetACP 判断目前正在生效的ANSI代码页
GetOEMCP 判断在OEM和ANSI字符集间转换的windows代码页
洗干净Wine补丁的尝试,请爱好者和Linux编程高手进
- xrfang
- 帖子: 1116
- 注册时间: 2006-12-08 10:21
Re: 洗干净Wine补丁的尝试,请爱好者和Linux编程高手进
阅读代码的时候看到2个函数:GetACP()和GetOEMCP()。查了半天msdn也没有看出这两个函数的区别。我用google搜索了一下,很少有解释这个的。找到一个博客上面说:
你爱用不用,没人逼你用--这就是Free的定义?
不,请自重,不要玷污Linux文化。
不,请自重,不要玷污Linux文化。
-
- 帖子: 88
- 注册时间: 2007-01-06 10:42
Re: 洗干净Wine补丁的尝试,请爱好者和Linux编程高手进
斯待大师们完成这个通用,可自动识别语种的wine
- xrfang
- 帖子: 1116
- 注册时间: 2006-12-08 10:21
Re: 洗干净Wine补丁的尝试,请爱好者和Linux编程高手进
以上这段话是有一定问题的。当用DEFAULT_CHARSET创建字体,确实应该返回936, 这个好像目前的wine也是对的。就是当用ANSI_CHARSET创建字体的时候,按照MSDN的说法,就是应该返回1252。所以说问题不在为什么codepage返回错误,而是为什么会lfCharset=ANSI_CHARSET的??hzhr 写了:什么脏不脏,这个补丁没有找到问题的所在,肯定不会被接受。
需要修正的函数是 GdiGetCodePage,当用DEFAULT_CHARSET或ANSI_CHARSET创建字体、GDI选择这个字体后,GdiGetCodePage应该返回的codepage是936,而现在的返回codepage是有问题的。
等有时间了我来提交一个补丁吧。
MSDN上说,创建字体的时候尽量不要用DEFAULT_CHARSET,而是要指明,比如英文要用ANSI_CHARSET,中文就用GB2312_CHARSET。如果是这样,而飞狐之类的软件用的是ANSI_CHARSET,那么WINDOWS是怎么知道应该用中文字体来显示的?这个里面有猫腻,可能windows的做法就是把ANSI_CHARSET映射到了GetACP这个页面。
你爱用不用,没人逼你用--这就是Free的定义?
不,请自重,不要玷污Linux文化。
不,请自重,不要玷污Linux文化。
-
- 帖子: 16
- 注册时间: 2006-05-05 2:22
Re: 洗干净Wine补丁的尝试,请爱好者和Linux编程高手进
看清楚点,是 GdiGetCodePage ,这个函数不是用来创建字体的。用ANSI_CHARSET创建字体返回1252是没有问题,问题是此时在中文环境下,GdiGetCodePage应该返回936
xrfang 写了:以上这段话是有一定问题的。当用DEFAULT_CHARSET创建字体,确实应该返回936, 这个好像目前的wine也是对的。就是当用ANSI_CHARSET创建字体的时候,按照MSDN的说法,就是应该返回1252。所以说问题不在为什么codepage返回错误,而是为什么会lfCharset=ANSI_CHARSET的??hzhr 写了:什么脏不脏,这个补丁没有找到问题的所在,肯定不会被接受。
需要修正的函数是 GdiGetCodePage,当用DEFAULT_CHARSET或ANSI_CHARSET创建字体、GDI选择这个字体后,GdiGetCodePage应该返回的codepage是936,而现在的返回codepage是有问题的。
等有时间了我来提交一个补丁吧。
MSDN上说,创建字体的时候尽量不要用DEFAULT_CHARSET,而是要指明,比如英文要用ANSI_CHARSET,中文就用GB2312_CHARSET。如果是这样,而飞狐之类的软件用的是ANSI_CHARSET,那么WINDOWS是怎么知道应该用中文字体来显示的?这个里面有猫腻,可能windows的做法就是把ANSI_CHARSET映射到了GetACP这个页面。
- xrfang
- 帖子: 1116
- 注册时间: 2006-12-08 10:21
Re: 洗干净Wine补丁的尝试,请爱好者和Linux编程高手进
GdiGetCodePage好像不是windows api。
我已经看到hzhr在wine-devel里面的发言了。谢谢大师指点。
我已经看到hzhr在wine-devel里面的发言了。谢谢大师指点。
你爱用不用,没人逼你用--这就是Free的定义?
不,请自重,不要玷污Linux文化。
不,请自重,不要玷污Linux文化。
- gcell
- 帖子: 429
- 注册时间: 2007-04-30 2:25
- 来自: 湖南湘潭
- 联系:
Re: 洗干净Wine补丁的尝试,请爱好者和Linux编程高手进
果然都有这个通病,看到问题就想要解决!
楼主这招“指鹿为马”成功的引出了hzhr高人,期待尽快搞定,呵呵!
楼主这招“指鹿为马”成功的引出了hzhr高人,期待尽快搞定,呵呵!
孰能浊静之以徐清,孰能安动之以馀生!
gcell -- http://gcell.blog.163.com/
gcell -- http://gcell.blog.163.com/
- sfbi
- 帖子: 796
- 注册时间: 2007-09-06 11:41
- 来自: Bergen
Re: 洗干净Wine补丁的尝试,请爱好者和Linux编程高手进
就怕没有下文了哦,那些开发者似乎都不太好沟通的样子。。。
- xrfang
- 帖子: 1116
- 注册时间: 2006-12-08 10:21
Re: 洗干净Wine补丁的尝试,请爱好者和Linux编程高手进
下文有了。由一个韩国老兄发现了这个问题的核心。希望patch能够被官方接受。sfbi 写了:就怕没有下文了哦,那些开发者似乎都不太好沟通的样子。。。
你爱用不用,没人逼你用--这就是Free的定义?
不,请自重,不要玷污Linux文化。
不,请自重,不要玷污Linux文化。
-
- 帖子: 310
- 注册时间: 2008-05-12 16:04
Re: 洗干净Wine补丁的尝试,请爱好者和Linux编程高手进
完整的patch在哪,我们先用。
- xrfang
- 帖子: 1116
- 注册时间: 2006-12-08 10:21
Re: 洗干净Wine补丁的尝试,请爱好者和Linux编程高手进
谢谢你的热心。附件是这个韩国程序员提供的patch。但它是针对GIT的格式。我还不是很清楚如何使用。不过这里高人不少,希望大家实验并反馈。linxyz 写了:完整的patch在哪,我们先用。
- 附件
-
- GdiGetCodepage_and_FontAssoc_and_FontLink.tar.gz
- (5.79 KiB) 已下载 160 次
你爱用不用,没人逼你用--这就是Free的定义?
不,请自重,不要玷污Linux文化。
不,请自重,不要玷污Linux文化。
-
- 帖子: 125
- 注册时间: 2008-11-29 1:20
Re: 洗干净Wine补丁的尝试,请爱好者和Linux编程高手进
高手整理下用法,我负责测试。我对wine还是很关注的。
- xrfang
- 帖子: 1116
- 注册时间: 2006-12-08 10:21
Re: 洗干净Wine补丁的尝试,请爱好者和Linux编程高手进
这样patch:
1)最好是安装git并且下载wine的git仓库,见此:
http://wiki.winehq.org/GitWine
如果看不懂这个git,也可以直接下载wine1.1.10的源代码。但官方要求测试patch在git的最新代码上测试。
2)进入wine的本地目录,比如 ~/wine-git,执行如下命令
patch file 就是我上面贴的包里面的一个个patch文件,对每个patch都执行一次上述命令。
3)编译安装wine
我建议设定一个固定的根目录,上面是/usr/local/wine,这样目录结构有一点类似windows,没有包管理也可以干净的删除。
1)最好是安装git并且下载wine的git仓库,见此:
http://wiki.winehq.org/GitWine
如果看不懂这个git,也可以直接下载wine1.1.10的源代码。但官方要求测试patch在git的最新代码上测试。
2)进入wine的本地目录,比如 ~/wine-git,执行如下命令
代码: 全选
wine-git $ patch -p1 < patch-file
3)编译安装wine
代码: 全选
wine-git $ ./configure --prefix=/usr/local/wine
wine-git $ make depend && make
wine-git $ sudo make install
你爱用不用,没人逼你用--这就是Free的定义?
不,请自重,不要玷污Linux文化。
不,请自重,不要玷污Linux文化。
- Shadow.net
- 帖子: 124
- 注册时间: 2007-03-11 19:17
-
- 帖子: 125
- 注册时间: 2008-11-29 1:20
Re: 洗干净Wine补丁的尝试,请爱好者和Linux编程高手进
呵呵,我很菜,看不太懂。只会安装那种操作。看来只有等1.1.11再测试了。
- xrfang
- 帖子: 1116
- 注册时间: 2006-12-08 10:21
Re: 洗干净Wine补丁的尝试,请爱好者和Linux编程高手进
同意。等这个patch搞定,以后再说font-link的事情。Shadow.net 写了:个人认为最好的解决方法就是在winecfg中增加code的相关选项……
你爱用不用,没人逼你用--这就是Free的定义?
不,请自重,不要玷污Linux文化。
不,请自重,不要玷污Linux文化。