有70个CEdit控件,所以自行添加了消息映射
ON_CONTROL_RANGE(EN_CHANGE,IDC_EDIT_11,IDC_EDIT_A7,OnRcEditChange);
刚开始添加控件的时候,由于ID不连续,我把ID值修改了下。
不知道是哪个步骤出了问题,问题的症状是:OnRcEditChange(nID)中的nID值跟我在点击控件时看到的ID值不一样。
另外,我想问下,系统能够给OnRcEditChange()传递ID值外,还能传递什么参数?其对应的OnRcEditChange()函数该怎么写?
谢谢各位!

解决方案 »

  1.   

    看看资源文件中ID值是不是重复了,vc有这bug。
      

  2.   

    1、把ID值改成连续的;2、使用记事本打开.rc文件,把那些 EDITTEXT 的先后顺序也按由小到大调整一下。可以试一试。
      

  3.   

    是有很多重复呢.改成不重复就OK了.等下给分。
    我用的是VC6.0 ,VC其他版本也这样吗?
    函数OnRcEditChange()的参数除了控件ID,还可以是什么参数??
      

  4.   

    看来要追加分了.
    又出了个问题了.程序现在不知道怎么回事,debug不了了。
    程序执行到这个函数就报错了,每次nDC都是1084。
    好怪异!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();
    }
    m_hWndLastControl = hWndCtrl;
    m_bEditLastControl = FALSE; // not an edit item by default
    ASSERT(hWndCtrl != NULL);   // never return NULL handle
    return hWndCtrl;
    }