您的位置:首页 > 其它

no data exchange control with ID 0x03F7

2011-05-13 17:05 405 查看
=============================================================
标题:no data exchange control with ID 0x03F7
备注:wince + vs2005
日期:2011.5.13
姓名:朱铭雷
=============================================================
今天调试程序,调着调着突然发现某个界面完全没有响应了。里面有几个Button,ComboBox,ListCtrl,Edit Control等控件,全部都不响应了。在OnInitDialog中加个断点,发现这都进不来。



Rebuild All
程序也没错误,根据以往的经验,这类问题有可能是Resource.h和.rc文件有问题,查了一会也没看出有什么问题。这时候瞄了一眼Output窗口。发现了一条错误信息:
Error: no data exchange control with ID 0x03F7.
呃?data exchange出错了,这肯定是问题的原因了。到Resource.h文件中查找ID值为0x03F7的宏定义,找到了IDC_COMBO1。
#define IDC_COMBO1 1015
整个项目搜索,找到了如下代码行:
void CEpidPrevInfoColDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_COMBO1, m_CMBAnitype);
DDX_Control(pDX, IDC_LIST_EAR, m_ListEar);
}
CEpidPrevInfoColDlg,正是出问题的界面。界面上本来有一个ComboBox控件,并且我为之关联了一个控制型变量m_CMBAnitype。但后来我又把这个ComboBox控件的ID修改为IDC_CMB_XUZHONG。但问题来了,上面的DDX_Control部分没有把IDC_COMBO1自动修改为IDC_CMB_XUZHONG。
再看.rc资源文件
COMBOBOX IDC_CMB_XUZHONG,30,31,40,92,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
这已经修改为了IDC_CMB_XUZHONG。
那么DDX_Control(pDX, IDC_COMBO1, m_CMBAnitype);这个信息交换肯定是失效了。所以导致了上面发生的一些列问题。手动把IDC_COMBO1修改为IDC_CMB_XUZHONG,一切恢复正常了。
void CEpidPrevInfoColDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_CMB_XUZHONG, m_CMBAnitype);
DDX_Control(pDX, IDC_LIST_EAR, m_ListEar);
}
汗,慢慢积累经验吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐