今天运行程序的时候发现在CDialog::OnInitDialog()中的第一行程序就挂了,然后找网上的方法,都说是控件的ID有重复或者删除了控件,但是在CDataExchange函数中的声明还存在导致的。具体的原因我还没有找到,只是把前一步做的工作删除了,重新做了一遍,就好了。下面是别人的说法,记录下来给大家做参考。
HWND CDataExchange::PrepareCtrl(int nIDC) { ASSERT(nIDC != 0); ASSERT(nIDC != -1); // not allowed HWND hWndCtrl; COleControlSite* pSite = NULL; m_pDlgWnd->GetDlgItem(nIDC, &hWndCtrl); if (hWndCtrl == NULL) { // Could be a windowless OCX pSite = m_pDlgWnd->GetOleControlSite(nIDC); if (pSite == NULL) { TRACE(traceAppMsg, 0, _T("Error: no data exchange control with ID 0x%04X./n"), nIDC); ASSERT(FALSE); AfxThrowNotSupportedException(); } } m_idLastControl = nIDC; m_bEditLastControl = FALSE; // not an edit item by default return hWndCtrl; }
调试运行的时候在TRACE(traceAppMsg, 0, _T("Error: no data exchange control with ID 0x%04X./n"), nIDC);这个地方出现了错误,nIDC未1035,但是查询全解决方案,发现1035对应的ID只有一个,而且也没有出现上面说的ID重复或者删除了声明还在的问题,很是奇怪。