我现在做多语言版本的软件,英文版资源在当前项目中编辑好,跟一般的开发一样,然后在另外建一个dll的项目,来专门编辑中文版的各对话框资源,对话框ID和各元件ID都一样,程序在启动的时候,会根据不同的语言设置,加载不同的dll,来取得各对话框资源。
现在其它所有的资源显示都可以,但今天在所有资源里加了一个新对话框,ID与英文版里都一样,但就是在中文版里无法显示出这个对话框,DoModal()函数返回值为-1,据MSDN讲,这表示不能生成对话框,想请教一下什么原因会造成这种情况,我保证对话框ID与英文版是一样的,只是#define的值不一样,但如果在resource.h中将此值改一样,却提示“试图执行不支持的动作”。
请问各位是否有遇到过对话框无法显示出来的问题,讨论一下原因何在?

解决方案 »

  1.   

    值必须一样,ID符号没有用的,关键是ID代表的数值。
      

  2.   

    可是如果在resource.h中将#define的值改一样后,却提示“试图运行不支持的功能”,这也奇怪,#define不就是定义一个数值嘛,是什么数值应该都一样吧。
      

  3.   

    一個對話框類,與此對話框資源之間的聯系,就是如下的語句來實現的吧:
    //{{AFX_DATA(CErrMsgInfo)
    enum { IDD = IDD_SHOW_ERR };這是在類的頭文件裡,VC自動生成的,它也只是引用這個名稱IDD_SHOW_ERR而已,與數據值沒有關系。而奇怪的是,如果我在resource.h文件裡將原本的#define IDD_SHOW_ERR  323更改為#define IDD_SHOW_ERR 351 (英文版裡是351),運行後,居然會報“試圖運行不支持的功能”的錯誤。另外,我在資源裡新增加的BMP,ICON等資源,都可以正常使用的,就是這個對話框不行。
      

  4.   

    不得已只得重新做了一個新的資源dll,那麼多要轉成中文啊,我的天,累S了!!我懷疑是不是VC有問題!~~,重新做一個就可以了。