我做个多语言,用insert copy 插入多个界面做的,功能我已经实现了。
问题1:我不知道是什么原理,我不知道MFC是怎么判断使用哪个语言的界面的,是根据这个吗:#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU),如果是,能解释一下吗?
问题2:我现在想在代码里判断当前使用了哪中语言,应该怎么判断?
谢谢,我是菜鸟,请大哥们用通俗一点的语言解释一下。

解决方案 »

  1.   

    Windows程序加载资源的时候是根据当前操作系统的语言选择的,所以只要资源中有符合的就会加载,否则找其他替代。FindResourceEx函数就可以指定加载的资源语言。GetSystemDefaultLCID函数获取系统默认区域代码;GetSystemDefaultLangID函数获取系统默认语言代码。
      

  2.   

    1. rc编译器会自动添加#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
    LANGUAGE 4, 2
    #pragma code_page(936)这样指定了字符集等2. GetSystemDefaultLCID 获得系统的locale id,然后来知道语言 Kernel32.dll LCIDToLocaleName()
      

  3.   

    楼主如果想自己指定程序加载的语言,可以这样做。
    将每种语言的资源做成DLL。加载资源代码:
    m_hResDLL = AfxLoadLibrary( m_ResourcePath ); // DLL的路径
    if( !m_hResDLL )
    return FALSE; // Set 
    ::AfxSetResourceHandle( m_hResDLL );