RT,我为了使用VC6下的ACTIVE控件接口,于是在VC6下建立了工程,并插入了控件和类。然后转入VC2005下编辑。由于工程中使用到了串口通信,于是我在VC2005下插入了MSCOMN控件,工程BUILD成功,但是在DEBUG下用COMBOBOX选择串口的时候报错,RELEASE下选择的时候根本就所有串口都提示我是无效的,但是我已经连接上了串口用串口助手看是正常的。
DEBUG下的错误是:DEBUG ASSERTION FAILED
               Program :e:\程序路径\*.exe
               File:f:\rtm\vctools\vc7libs\ship\atlmfc\include\afxwin2.inl
               Line:767
然后我点RETRY,于是程序触发了一个断点:
                _AFXWIN_INLINE int CComboBox::GetCurSel() const
{ ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_GETCURSEL, 0, 0); }//断点指在这里
P.s.:我在VC6下插入的那个ACTIVEX控件在本工程中使用正常。
希望哪位大大能给点意见。

解决方案 »

  1.   

    应该是ASSERT(::IsWindow(m_hWnd))触发的。
    combobox不是窗口?
    怎样创建和插入数据的?
      

  2.   

    问题出在你的 CComboBox未正确初始化,如果是用可视化编辑的看看程序里的控件ID和编辑属性的ID是否匹配。
    ASSERT(::IsWindow(m_hWnd)//未通过
      

  3.   

    COMBOBOX不是窗口,是我使用的数据,用来切换串口的,就是一个简单的切换功能
      

  4.   

    刚说错了,
    COMBOBOX不是窗口,是我使用的界面上的控件,用来切换串口的,就是一个简单的切换功能
    另:TO yxz_lp:你说的正确初始化是指的什么?我的控件ID为IDC_COMBO3。程序中的是
    ON_CBN_SELCHANGE(IDC_COMBO3, &CDlbView::OnCbnSelchangeCombo1)
    应该是正确的吧
      

  5.   

    呵呵,控件也属于窗口。
    单对这个控件做测试,并搜索变量相关的东西,特别注意初始化是否正确,如id、DoDataExchange等
      

  6.   

    从异常信息来看,一定是ASSERT(::IsWindow(m_hWnd))这个断言有问题,未通过,看样子,是在进行断言的时候,你的窗口还没有创建完成(句柄都不存在).你自己好好调一下,这个问题应该很好解决的(在下愚见)。