在VC中,新建了一个空的win32程序,然后手动的给它添加菜单资源如下:2Hour.RC#include “resource.h”IDR_MENU MENU DISCARDABLE
  BEGIN
    POPUP “&File”
      BEGIN
        MENUITEM “E&xit”, IDM_EXIT
      END
ENDRESOURCE.H #define IDR_MENU 102
#define IDM_EXIT 40001
然后分别添加到项目中然后在注册窗体类的时候
wc.lpszMenuName = MAKEINTRESOURCE(IDR_MENU);//窗口的菜单资源名称到这里一切正常
运行可以看到菜单但是当我用VC将IDR_MENU 改为中文时 (文件\退出)
在编译出错  error RC2144 : PRIMARY LANGUAGE ID not a number然后再看2Hour.RC 变成了如下//Microsoft Developer Studio generated resource script.
//
#include "resrc1.h"#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "resource.h"/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS/////////////////////////////////////////////////////////////////////////////
// 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/////////////////////////////////////////////////////////////////////////////
//
// Menu
//IDR_MENU MENU DISCARDABLE 
BEGIN
    POPUP "&文件"
    BEGIN
        MENUITEM "退出",IDM_EXIT
    END
END
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//1 TEXTINCLUDE DISCARDABLE 
BEGIN
    "resrc1.h\0"
END2 TEXTINCLUDE DISCARDABLE 
BEGIN
    "#include ""resource.h""\r\n"
    "\0"
END3 TEXTINCLUDE DISCARDABLE 
BEGIN
    "\r\n"
    "\0"
END#endif    // APSTUDIO_INVOKED#endif    // Chinese (P.R.C.) resources
/////////////////////////////////////////////////////////////////////////////#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
/////////////////////////////////////////////////////////////////////////////
#endif    // not APSTUDIO_INVOKED
VC会自动修改资源文件吗
怎么才能解决呢?第一次在VC版发贴,希望大家多多帮忙,兄弟先谢过了:D

解决方案 »

  1.   

    补充:将上述乱78糟的玩意删掉,只留原来的,将中文再改成英文,就没事了RC文件也不会被改变呵呵,对VC真是有点摸不着头脑:(用的VC6.0英文版,跟这个有关系吗?可能性不大,因为我用向导建的EXE,菜单显示中文一点都没有问题
      

  2.   

    http://search.csdn.net/Expert/topic/1105/1105535.xml?temp=.8509638
      

  3.   

    楼上,不是那样的我这菜单不是用AppWizard创建的:(而是我手工编辑然后添加进去的并且出错以后看RC里VC给加的那堆代码里到处都是这个 Chinese (P.R.C.) resources
      

  4.   

    恩……刚才试了一下,我将自动生成的那堆代码全部去掉,中文也能显示#include “resource.h”IDR_MENU MENU DISCARDABLE 
    BEGIN
        POPUP "&文件"
        BEGIN
            MENUITEM "退出",IDM_EXIT
        END
    END
    这样也可以,只是用VC在图形界面下编辑后,就坏掉了:(
      

  5.   

    你干吗要手动生成啊?VC IDE不有资源编辑器吗?直接在那里编辑好了,比手工添加方便多了.
      

  6.   

    感觉就是对于手动创建的res,
    然后通过VC的界面来编辑,
    VC没法加入正确的信息?比较郁闷的说……
      

  7.   

    vc每次修改保存,自己添加的部分都不会被保存,可能是vc没有认可的缘故吧2种办法来解决:1.你可以使用vc菜单中的资源处理项,在这里填写的东西,vc会纪录并保存,不过一般来说都是自己#include的东西2.在res\xxx.rc2中添加你的资源。这2种办法的缺点都是无法在使用vc的资源编辑器来编辑了,没办法想自由总要付出点代价的
      

  8.   

    在res\xxx.rc2中添加你的资源。
      

  9.   

    你用中文的资源,相应的
    #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
    #ifdef _WIN32
    LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
    #pragma code_page(936)
    #endif //_WIN32
    这几句系统会你加上,不如你自己的rc文件中就直接写上这几句。