error:no data exchange control with ID 0x03F7

来源:互联网 发布:离线日语翻译软件 编辑:程序博客网 时间:2024/06/09 00:03

=============================================================

标题: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(pDXIDC_COMBO1m_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);

}

汗,慢慢积累经验吧。


  博文出处:http://blog.csdn.net/joyzml/article/details/6417827

0 0