在工程里加入别的工程的对话框,新添的对话框A上有些控件和原有的对话框B上控件名字相同,对话框A加入后,与对话框里B名字相同的控件在其属性页里的ID名不见了,变成了原来工程里recouce.h里定义的数字值(在现在工程的recouce.h里这些值对应的是别的控件),讨厌的是程序编译可以通过,执行时报错,调试时发现错误语句如下:HWND CDataExchange::PrepareCtrl(int nIDC)
{
ASSERT(nIDC != 0);
ASSERT(nIDC != -1); // not allowed
HWND hWndCtrl;
m_pDlgWnd->GetDlgItem(nIDC, &hWndCtrl);
if (hWndCtrl == NULL)
{
TRACE1("Error: no data exchange control with ID 0x%04X.\n", nIDC);
ASSERT(FALSE);----------------报错
AfxThrowNotSupportedException();
          }
反正是控件id的问题,不知道我说清楚没?
现在我不知道怎么改,我想先将对话框A的控件名字改过来,因为A和B都是单独调用的,所以我想控件ID名相同没问题,可是改有的控件就说这个id已经存在了,要求换一个id,有的控件就可以改过来,明明都是已经存在的,不知是怎么回事,明白人告诉我吧,为什么?该怎么做?

解决方案 »

  1.   

    自已根据以前的控件ID,重新在新工程中加入,或者把对话的资源里的相应定义拷贝过来,ID号相同可以用VC环境中的view菜单中的ID=Resource Symbols生成新资源ID号(这样不会与也有的ID重号)
      

  2.   

    to zxyjyzxyjy(星星),由于控件带有响应函数,改名后函数就不能用了,所以打算沿用原来的id,这些id在头文件里已经有定义了,是另一个对话框的
      

  3.   

    现在我把A对话框里控件名字都改成原来的了,但有两个控件改不了,还是说这个id已经存在了,要求换一个id,现在程序能运行了,但没改id的两个控件无法工作了,对应的回调函数也不响应了
      

  4.   

    已经改了,好在就2个改不了,我已经改成别的名字了,不过没改响应函数名,就在那个cpp文件里把所有id替换了一下,但还是奇怪为啥有的能改有的不允许改,谢谢大家了