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里遍历控件,从资源/配置文件加载对应语言的字符串)

    评论

报告相同问题?

悬赏问题

  • ¥15 求解 yolo算法问题
  • ¥15 虚拟机打包apk出现错误
  • ¥30 最小化遗憾贪心算法上界
  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 逻辑谓词和消解原理的运用
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。