qq_38139619 2017-03-31 14:22 采纳率: 0%
浏览 1996

怎么编写 Win32 多语言用户界面应用程序

请问win32项目怎么实现程序的多语言?

我在文件里创建了两组控件,一个是中文,一个是英文。请问怎么编程实现切换?就像下图所示

这是中文程序

这是英文程序

查阅msdn文档后没太看懂,有人帮一下嘛,困住好久了

图片说明

我自己写的.rc代码如下:

// Microsoft Visual C++ generated resource script.
//
#include "resource.h"

#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#ifndef APSTUDIO_INVOKED
#include "targetver.h"
#endif
#define APSTUDIO_HIDDEN_SYMBOLS
#include "windows.h"
#undef APSTUDIO_HIDDEN_SYMBOLS

/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS

/////////////////////////////////////////////////////////////////////////////
// 中文(简体,中国) resources

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED

/////////////////////////////////////////////////////////////////////////////
//
// Icon
//

// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDI_LAB5 ICON "lab5.ico"

IDI_SMALL ICON "small.ico"

/////////////////////////////////////////////////////////////////////////////
//
// Menu
//

IDC_LAB5 MENU
BEGIN
POPUP "文件(&F)"
BEGIN
MENUITEM "退出(&X)", IDM_EXIT
END
POPUP "对话框(&O)"
BEGIN
MENUITEM "模式对话框(&M)...\tCtrl+A", ID_32771
MENUITEM "无模式对话框(&L)...\tCtrl+B", ID_32772
MENUITEM "文件对话框(&F)...\tCtrl+C", ID_Menu
END
POPUP "光标类型(&C)"
BEGIN
MENUITEM "光标&1(箭头)\tCtrl+1", ID_32774
MENUITEM "光标&2(十字)\tCtrl+2", ID_32775
MENUITEM "光标&3(自定义)\tCtrl+3", ID_32776
END
POPUP "语言(&L)"
BEGIN
MENUITEM "中文(&C)\tCtrl+Shift+C", ID_32777
MENUITEM "&English\tCtrl+Shift+D", ID_32778
END
POPUP "关于(&A)"
BEGIN
MENUITEM "程序信息(&I)\tF1", IDM_ABOUT
END
END

/////////////////////////////////////////////////////////////////////////////
//
// Accelerator
//

IDC_LAB5 ACCELERATORS
BEGIN
"?", IDM_ABOUT, ASCII, ALT
"/", IDM_ABOUT, ASCII, ALT
END

/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//
/*

IDD_ABOUTBOX DIALOGEX 0, 0, 170, 62
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Lab5(SDK)"
FONT 9, "MS Shell Dlg", 0, 0, 0x1
BEGIN
ICON IDR_MAINFRAME, IDC_STATIC, 14, 14, 21, 20
LTEXT "第五次上机练习(SDK)\n对话框、光标、位图、字符串\n\n", IDC_STATIC, 42, 14, 114, 8, SS_NOPREFIX
LTEXT

LTEXT "学号:10152130206\n姓名:高吉祥\n", IDC_STATIC, 42, 26, 114, 8
DEFPUSHBUTTON "确定", IDOK, 113, 41, 50, 14, WS_GROUP
END

*/

/////////////////////////////////////////////////////////////////////////////
//
// DESIGNINFO
//

#ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO
BEGIN
IDD_ABOUTBOX, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 163
TOPMARGIN, 7
BOTTOMMARGIN, 55
END
END
#endif // APSTUDIO_INVOKED

#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//

1 TEXTINCLUDE
BEGIN
"resource.h\0"
END

2 TEXTINCLUDE
BEGIN
"#ifndef APSTUDIO_INVOKED\r\n"
"#include ""targetver.h""\r\n"
"#endif\r\n"
"#define APSTUDIO_HIDDEN_SYMBOLS\r\n"
"#include ""windows.h""\r\n"
"#undef APSTUDIO_HIDDEN_SYMBOLS\r\n"
"\0"
END

3 TEXTINCLUDE
BEGIN
"\r\n"
"\0"
END

#endif // APSTUDIO_INVOKED

/////////////////////////////////////////////////////////////////////////////
//
// Cursor
//

IDC_CURSOR1 CURSOR "cursor1.cur"

/////////////////////////////////////////////////////////////////////////////
//
// String Table
//

STRINGTABLE
BEGIN
IDS_APP_TITLE "lab5"
IDS_STRING1 "当前光标是:IDC_ARROW"
IDS_STRING2 "当前光标是:IDC_CROSS"
IDS_STRING3 "当前光标是:我的光标"
IDC_LAB5 "LAB5"
END

#endif // 中文(简体,中国) resources
/////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////////

// Englisch (GB) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENG)
#ifdef _WIN32
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_UK
#pragma code_page(1252)
#endif //_WIN32

/////////////////////////////////////////////////////////////////////////////
//
// Icon
//

// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDI_LAB5 ICON "lab5.ico"

IDI_SMALL ICON "small.ico"

/////////////////////////////////////////////////////////////////////////////
//
// Menu
//

IDC_LAB5 MENU
BEGIN
POPUP "&File"
BEGIN
MENUITEM "E&xit", IDM_EXIT
END
POPUP "&Dialog"
BEGIN
MENUITEM "&Modal Dialog...\tCtrl+A", ID_32771
MENUITEM "Modal&Less Dialog(L)...\tCtrl+B", ID_32772
MENUITEM "&File Dialog...\tCtrl+C", ID_Menu
END
POPUP "&Cursor"
BEGIN
MENUITEM "Cursor&1(ARROW)\tCtrl+1", ID_32774
MENUITEM "Cursor&2(CROSS)\tCtrl+2", ID_32775
MENUITEM "Cursor&3(UserDefined)\tCtrl+3", ID_32776
END
POPUP "&Language"
BEGIN
MENUITEM "中文(&C)\tCtrl+Shift+C", ID_32777
MENUITEM "&English\tCtrl+Shift+D", ID_32778
END
POPUP "&About"
BEGIN
MENUITEM "Program &Information\tF1", IDM_ABOUT
END
END

/////////////////////////////////////////////////////////////////////////////
//
// Accelerator
//

IDC_LAB5 ACCELERATORS
BEGIN
"?", IDM_ABOUT, ASCII, ALT
"/", IDM_ABOUT, ASCII, ALT
END

/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//

/*

IDD_ABOUTBOX DIALOGEX 0, 0, 170, 62
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Lab5(SDK)"
FONT 9, "MS Shell Dlg", 0, 0, 0x1
BEGIN
ICON IDR_MAINFRAME, IDC_STATIC, 14, 14, 21, 20
LTEXT "第五次上机练习(SDK)\n对话框、光标、位图、字符串\n\n", IDC_STATIC, 42, 14, 114, 8, SS_NOPREFIX
LTEXT
LTEXT "学号:10152130206\n姓名:高吉祥\n", IDC_STATIC, 42, 26, 114, 8
DEFPUSHBUTTON "确定", IDOK, 113, 41, 50, 14, WS_GROUP
END

*/
/////////////////////////////////////////////////////////////////////////////
//
// DESIGNINFO
//

#ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO
BEGIN
IDD_ABOUTBOX, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 163
TOPMARGIN, 7
BOTTOMMARGIN, 55
END
END
#endif // APSTUDIO_INVOKED

#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//

1 TEXTINCLUDE
BEGIN
"resource.h\0"
END

2 TEXTINCLUDE
BEGIN
"#ifndef APSTUDIO_INVOKED\r\n"
"#include ""targetver.h""\r\n"
"#endif\r\n"
"#define APSTUDIO_HIDDEN_SYMBOLS\r\n"
"#include ""windows.h""\r\n"
"#undef APSTUDIO_HIDDEN_SYMBOLS\r\n"
"\0"
END

3 TEXTINCLUDE
BEGIN
"\r\n"
"\0"
END

#endif // APSTUDIO_INVOKED

/////////////////////////////////////////////////////////////////////////////
//
// Cursor
//

IDC_CURSOR1 CURSOR "cursor1.cur"

/////////////////////////////////////////////////////////////////////////////
//
// String Table
//

STRINGTABLE
BEGIN
IDS_APP_TITLE "lab5"
IDS_STRING1 "The current cusor is:IDC_ARROW"
IDS_STRING2 "The current cusor is:IDC_CROSS"
IDS_STRING3 "The current cusor is:My Cursor"
IDC_LAB5 "LAB5"
END

#endif // 中文(简体,中国) resources
/////////////////////////////////////////////////////////////////////////////

#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//

/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED

  • 写回答

2条回答 默认 最新

  • threenewbee 2017-03-31 16:04
    关注

    一般的做法是做多语言配置文件或者资源dll,界面上每个控件的id对应不同语言的文字,在界面的初始化(比如wm initdialog里遍历控件,从资源/配置文件加载对应语言的字符串)

    评论

报告相同问题?

悬赏问题

  • ¥35 平滑拟合曲线该如何生成
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站