关于 用户回调期间遇到未经处理的异常(0xC000041D) 的错误

情形一:错误的原因在“声明了一个类的指针时没有让这个指针指向一个类的实例”,要让这个指针实例化,,就不会报错了.

环境为vs2010

原来只是忘记给类指针new一个实例了

WINDOW编程会有的错误

这个错误出现的原因是因为回调函数当中有某些错误,而且情况比较复杂,错误的可能性有很多,比如数组越界,引用了空指针等。

我出现这个错误的原因在声明了一个类的指针时没有让这个指针指向一个类的实例,在回调函数中通过这个指针去调用这个类的函数,就了发生这种错误,并且会伴有“读取位置 0xxxxxxx 时发生访问冲突”的错误
————————————————
版权声明:本文为CSDN博主「alickr」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/alickr/article/details/49703125

-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

情形二:

MFC 0xC000041D 回调期间遇到未处理的异常
如果错误发生在OnInitDialog()时,可以尝试检查下DoDataExchange(CDataExchange* pDX)函数中的资源和对应关系是不是重复了。 
比如:

...
    DDX_Control(pDX, IDC_CHECK_IB_SIGNAL, m_checkIbSignal);
    DDX_Control(pDX, IDC_CHECK_IB_SIGNAL, m_checkIcSignal);
...

还有包括栈溢出之类的问题也有可能是这个原因,少年,要细心啊!
————————————————
版权声明:本文为CSDN博主「少年磊」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/sssaaaannnddd/article/details/72723575

-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

 

 

 

 

已标记关键词 清除标记
请大神指教一下,调试时****围着部分提示0x010020FF 处有未经处理异常(在 MFC.exe 中): 0xC000041D: 用户回调期间遇到未经处理异常。。 MFCDlg.cpp : 实现文件 // #include "stdafx.h" #include "MFC.h" #include "MFCDlg.h" #include "afxdialogex.h" #ifdef _DEBUG #define new DEBUG_NEW #endif // 用于应用程序&ldquo;关于&rdquo;菜单项的 CAboutDlg 对话框 class CAboutDlg : public CDialogEx { public: CAboutDlg(); // 对话框数据 #ifdef AFX_DESIGN_TIME enum { IDD = IDD_ABOUTBOX }; #endif protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 // 实现 protected: DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialogEx(IDD_ABOUTBOX) { } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx) END_MESSAGE_MAP() // CMFCDlg 对话框 CMFCDlg::CMFCDlg(CWnd* pParent /*=NULL*/) : CDialogEx(IDD_MFC_DIALOG, pParent) , n(0) { m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CMFCDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CMFCDlg, CDialogEx) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_BUTTON_Open, &CMFCDlg::OnBnClickedButtonOpen) END_MESSAGE_MAP() // CMFCDlg 消息处理程序 BOOL CMFCDlg::OnInitDialog() { CDialogEx::OnInitDialog(); // 将&ldquo;关于...&rdquo;菜单项添加到系统菜单中。 // IDM_ABOUTBOX 必须在系统命令范围内。 ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { BOOL bNameValid; CString strAboutMenu; bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX); ASSERT(bNameValid); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } // 设置此对话框的图标。 当应用程序主窗口不是对话框时,框架将自动 // 执行此操作 SetIcon(m_hIcon, TRUE); // 设置大图标 SetIcon(m_hIcon, FALSE); // 设置小图标 // TODO: 在此添加额外的初始化代码 return TRUE; // 除非将焦点设置到控件,否则返回 TRUE } void CMFCDlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else { CDialogEx::OnSysCommand(nID, lParam); } } // 如果向对话框添加最小化按钮,则需要下面的代码 // 来绘制该图标。 对于使用文档/视图模型的 MFC 应用程序, // 这将由框架自动完成。 void CMFCDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // 用于绘制的设备上下文 SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0); // 使图标在工作区矩形中居中 int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // 绘制图标 dc.DrawIcon(x, y, m_hIcon); } else { CDialogEx::OnPaint(); HDC hdc; hdc = ::GetDC(m_hWnd); EntityData *pointer; pointer = entity; int i = 0; if (pointer != NULL) { do { ************** ************************************************ MoveToEx(hdc,pointer->data.line.x1, pointer->data.line.y1,NULL); LineTo(hdc,pointer->data.line.x2, pointer->data.line.y2); pointer = pointer->next; ****************************************************************** i++; } while (pointer != NULL); } } } //当用户拖动最小化窗口时系统调用此函数取得光标 //显示。 HCURSOR CMFCDlg::OnQueryDragIcon() { return static_cast<HCURSOR>(m_hIcon); } void CMFCDlg::OnBnClickedButtonOpen() { CStdioFile file; // TODO: 在此添加控件通知处理程序代码 // 设置过滤器 TCHAR szFilter[] = _T("DXF文件(*.dxf)|*.dxf|所有文件(*.*)|*.*||"); // 构造打开文件对话框 CFileDialog fileDlg(TRUE, _T("dxf"), NULL, 0, szFilter, this); CString strFilePath; // 显示打开文件对话框 if (IDOK == fileDlg.DoModal()) { // 得到我们的选择文件的地址,用于之后的打开文件的操作 strFilePath = fileDlg.GetPathName(); //添加读取这个文件内容的代码,CFile::modeRead是说以只读文件的模式打开 file.Open(strFilePath, CFile::modeRead); /*逐行读取字符串*/ CString szLine; CString strText; while (file.ReadString(szLine)) { strText += szLine; } sscanf(strText, "%d", &code); sscanf(strText, "%s", codevalue); if (code == 2 && strcmp(codevalue, "ENTITIES") == 0) { while (strcmp(codevalue, "ENDSEC")) { sscanf(strText, "%d", &code); sscanf(strText, "%s", codevalue); if (code == 0 && strcmp(codevalue, "LINE") == 0) { entity1 = (EntityData *)malloc(DATASIZE); strcpy(entity1->id, codevalue); sscanf(strText, "%d", &code); while (code) { switch (code) { case 8: sscanf(strText, "%s", codevalue); sscanf(strText, "%d", &code); strcpy(entity1->layer, codevalue); break; case 10: sscanf(strText, "%f", &value); sscanf(strText, "%d", &code); entity1->data.line.x1 = value; break; case 20: sscanf(strText, "%f", &value); sscanf(strText, "%d", &code); entity1->data.line.y1 = value; break; case 30: sscanf(strText, "%f", &value); sscanf(strText, "%d", &code); entity1->data.line.z1 = value; break; case 11: sscanf(strText, "%f", &value); sscanf(strText, "%d", &code); entity1->data.line.x2 = value; break; case 21: sscanf(strText, "%f", &value); sscanf(strText, "%d", &code); entity1->data.line.y2 = value; break; case 31: sscanf(strText, "%f", &value); sscanf(strText, "%d", &code); entity1->data.line.z2 = value; break; default: { sscanf(strText, "%s", codevalue); sscanf(strText, "%d", &code); } } } entity2->next = entity1; entity2 = entity1; } } entity2->next = NULL; } entity = entity->next; } //关闭文件 file.Close(); }
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页