我修改了一个外国的代码,可是我不知道怎么叫他显示中文?
望高手指点

解决方案 »

  1.   

    自己做个用中文的资源的dll,动态加载,我记得好象见过是这么弄的,不过应该只需要改个资源文件就成
      

  2.   

    多国语言编程之资源转换问题 
     
    湖 南 公 安 高 等 专 科 学 校 
    杨 霞  
    1 . 多 国 语 言 编 程 之 资 源 转 换 问 题 ---- 不 同 国 家 的 人 使 用 着 不 同 语 言 的 操 作 系 统。 在Microsoft Windows 下, 语 言 用 代 码 页 来 识 别, 不 同 语 言 用 不 同 代 码 页 来 表 示, 如" 简 体 中 文" 用 代 码 页936 表 示, 而" 美 国 英 语" 则 用 代 码 页1252 表 示。 
    ---- 在 用Visual C++ 开 发 应 用 程 序 时, 与 语 种 相 关 信 息 一 般 存 储 在 资 源 文 件(*.RC 文 件) 中。 因 此, 要 编 制 不 同 语 种 应 用 程 序( 如 中 文 应 用 程 序、 英 文 应 用 程 序), 实 质 上 是 要 求 编 写 出 不 同 语 种 的 资 源 文 件。 在 实 际 编 程 中, 我 们 可 将 不 同 语 种 的 资 源 文 件 编 译 成 相 应 的 动 态 连 接 库。 这 样, 在 实 际 使 用 时, 可 根 据 操 作 系 统 所 使 用 代 码 页 异 同, 选 用 由 相 应 语 种 的 资 源 文 件 编 译 而 成 的 动 态 连 接 库, 即 可 使 应 用 程 序 正 常 运 行。 这 就 是 所 谓 的 多 国 语 言 编 程 问 题。 ---- 在 开 发 中 文 应 用 程 序 时, 常 要 求 应 用 程 序 在 中 文 操 作 系 统 和 英 文 操 作 系 统+ 外 挂 汉 字 平 台 这 两 种 环 境 中 都 能 正 常 运 行。 但 由 于 工 作 环 境 不 同, 往 往 导 致 同 一 应 用 程 序, 在 某 种 环 境 下 能 正 常 工 作, 但 在 另 一 种 环 境 下 则 不 能 正 常 工 作。 如 中 文 版 的Microsoft Word 软 件, 在 中 文 操 作 系 统 下 能 正 常 运 行, 但 在 英 文 操 作 系 统+ 外 挂 汉 字 平 台 这 种 环 境 下, 显 示 的 就 是 一 堆 乱 码。 ---- 要 解 决 这 一 问 题, 需 为 不 同 语 种 操 作 系 统 编 制 不 同 语 种 资 源 文 件, 实 际 上 这 也 是 多 国 语 言 编 程 问 题。 所 不 同 的 是, 由 于 此 时 所 显 示 信 息 并 不 需 随 语 种 而 变( 无 论 在 哪 种 环 境 下 都 只 显 示 中 文 信 息), 因 此, 编 制 多 个 语 种 资 源 文 件 可 以 有 很 简 单 的 方 法, 此 即 本 文 所 要 讨 论 的 资 源 转 换 问 题。 该 问 题 可 简 单 地 描 述 为: 如 果 已 有 了 某 一 语 种 的 资 源 文 件, 在 资 源 内 容 不 变 的 情 况 下, 如 何 将 其 转 换 为 另 一 语 种 的 资 源 文 件。 例 如, 已 有 了 简 体 中 文( 代 码 页 为936) 的 资 源 文 件, 在 资 源 内 容 不 变 的 情 况 下, 如 何 将 其 转 换 为 美 国 英 语( 代 码 页 为1252) 的 资 源 文 件, 就 是 一 资 源 转 换 问 题。 ---- 下 文 讨 论 如 何 进 行 资 源 转 换。 2 . 如 何 进 行 资 源 转 换 ---- 下 面 以 将 资 源 文 件 从 代 码 页936( 简 体 中 文) 转 换 到 代 码 页1252( 美 国 英 语) 为 例 进 行 说 明。 即 已 有 了 一 代 码 页 为936 的 资 源 文 件, 在 资 源 内 容 不 变 的 情 况 下, 如 何 将 其 转 换 为 代 码 页 为1252 的 资 源 文 件。 
    ---- 容 易 想 到 但 会 带 来 灾 难 性 后 果 的 方 法 是, 直 接 修 改 资 源 属 性。 这 种 方 法 过 程 是, 将Visual C++ 的Workspace 窗 口 切 换 到Resource View, 选 中 某 项 资 源, 单 击 右 键, 从 弹 出 菜 单 中 选 择"Properties" 命 令, 此 时 系 统 将 会 弹 出 一 对 话 框。 在 弹 出 的 对 话 框 中, 修 改Language 项 的 值, 将 其 由" 简 体 中 文" 改 为" 美 国 英 语"。 如 此 对Resource View 中 其 他 各 项 资 源 进 行 修 改, 将 所 有 资 源 项 的Language 属 性 都 改 为" 美 国 英 语"。 但 是, 经 此 种 修 改 后, 再 打 开 资 源, 会 发 现 资 源 里 的 内 容 变 成 了 一 堆 不 可 读 的 乱 码。 更 致 命 的 是, 我 们 即 使 将 资 源 的Language 项 的 属 性 重 新 设 为" 简 体 中 文", 资 源 内 容 仍 是 不 可 读 的 一 堆 乱 码。 也 就 是 说, 我 们 根 本 无 法 恢 复 资 源 原 来 内 容。 因 此, 如 果 在 修 改 前 没 有 将 资 源 备 份, 此 种 修 改 带 来 的 后 果 将 是 灾 难 性 的。 ---- 正 确 的 方 法 是, 以 某 文 本 编 辑 器( 如EDIT、NOTEPAD) 打 开 资 源 文 件, 在 其 中 查 找 词"LANGUAGE", 找 到 后 可 看 到 如 下 内 容: //////////////////////////////////////////////////
    // Chinese (P. R. C.) resources#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
    #ifdef _WIN32
    LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
    #pragma code_page(936)
    #endif //_WIN32---- 这 段 代 码 表 示 当 前 使 用 的 代 码 页 为936, 所 代 表 的 语 种 为 简 体 中 文。 将 以 上 代 码 段 用 如 下 代 码 段 替 换 
    /////////////////////////////////////////////////
    // English (U.S.) resources#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
    #ifdef _WIN32
    LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
    #pragma code_page(1252)
    #endif //_WIN32---- 以 上 代 码 说 明 资 源 使 用 代 码 页 为1252, 所 代 表 语 种 为 美 国 英 语。 
    ---- 经 过 上 面 简 单 修 改, 即 可 将 代 码 页 为936 资 源 文 件 转 换 为 代 码 页 为1252 的 资 源 文 件, 而 资 源 内 容 不 变。 
     
     
     
     
     
      

  3.   

    对"多国语言编程之资源转换"的补充 
     
    电 子 部 第54 研 究 所 
    田 嵘 
     
    ---- 我 看 了 贵 报1999.03.15 版 的< 电 脑 与 生 活>--< 编 程 技 巧> 中 的" 多 国 语 言 编 程 之 资 源 转 换" 一 文, 结 合 我 在 工 作 中 的 实 际 体 验, 感 觉 该 文 讲 述 的 方 法 确 实 可 行 但 也 发 现 该 文 的 作 者 并 未 对 资 源 文 件 中 与 语 言 的 相 关 项 进 行 彻 底 的 转 换。 在 此 补 充 如 下。 
    ---- 例 如, 已 有 日 文( 代 码 页932) 的 资 源 文 件, 将 其 转 换 为 美 国 英 语( 代 码 页1252) 的 资 源 文 件。 以 任 意 的 文 本 编 辑 器 打 开 资 源 文 件, 在 其 中 进 行 如 下 的 修 改: ---- ① 查 找 语 言 资 源 定 义 段, 如 下: ///////////////////////////
    //日本语 resources
    #if !defined(AFX_RESOURCE_DLL) 
      || defined(AFX_TARG_JPN)
    #ifdef _WIN32
    LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT
    #pragma code_page(932)
    #endif //_WIN32
    更改日本语资源段为英语资源定义。
    ///////////////////////////
    //English resources
    #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
    #ifdef _WIN32
    LANGUAGE  LANG_ENGLISH,SUBLANG_ENGLISH_US
    #pragma code_page(1252)
    #endif //_WIN32②查找TEXTINCLUDE资源定义段,如下:
    ////////////////////////
    //TEXTINCLUDE
    "#if !defined(AFX_RESOURCE_DLL)
     || defined(AFX_TARG_JPN)\r\n"
    "#ifdef _WIN32\r\n"
    "LANGUAGE 17, 1\r\n"
    "#pragma code_page(932)\r\n"
    "#endif\r\n"
    "#include ""1.jpn\\afxres.rc""
    "#endif\0"
    更改日本语TEXTINCLUDE资源段为英语
        TEXTINCLUDE资源定义。
    ////////////////////////
    //TEXTINCLUDE
    "#if !defined(AFX_RESOURCE_DLL)
     || defined(AFX_TARG_ENU)\r\n"
    "#ifdef _WIN32\r\n"
    "LANGUAGE 9, 1\r\n"
    "#pragma code_page(1252)\r\n"
    "#endif\r\n"
    "#include ""afxres.rc""
    "#endif\0"③查找VERSION资源定义段,如下:
    ////////////////////////
    //VERSION
    BLOCK "041104b0"
    ………
    VALUE "Translation",0x411,1200
    更改日本语TEXTINCLUDE资源段为英语
     TEXTINCLUDE资源定义。
    ////////////////////////
    //VERSION
    BLOCK "040904b0"
    ………
    VALUE "Translation",0x409,1200---- ④ 查 找DIALOG 资 源 定 义 段, 将"CAPTION" 和"FONT" 行 定 义 的 标 题 和 字 体 更 改 成 相 应 的 英 语 环 境 下 的 标 题 和 字 体 设 置。 
    ---- ⑤ 查 找MENU 和STRING TABLE 资 源 定 义 段, 将 这 两 段 中 用 双 引 号 定 义 的 日 语 字 符 串 更 改 成 相 应 的 英 文 字 符 串。 ---- 经 过 以 上5 步 修 改, 原 日 语 版 的 资 源 文 件 就 完 全 更 改 成 英 语 环 境 下 可 用 的 资 源 文 件 了。 在 此 建 议 各 位 在 转 换 之 前 最 好 能 生 成 一 个 最 简 的Visual C++ 工 程, 参 考 新 生 成 的 英 语 资 源 文 件 来 修 改 原 日 语 资 源 文 件 中 的 相 应 的 串, 这 样 即 节 约 了 时 间 又 提 高 了 转 换 时 的 准 确 性。