MFC界面程序OnSize函数修改控件位置调试出现 mfc80ud.dll未处理的异常
我在做MFC界面调整的时候,以前的东西能运行,换机器后出现调试出现中断,提示为:
MFC.exe 中的 0x7833d38a (mfc80ud.dll) 处未处理的异常: 0xC0000005: 读取位置 0x00000020 时发生访问冲突
代码如下:
void MFC::OnSize(UINT nType, int cx, int cy){ if (Change_Flag) { //!< 调整数据列表以下控件的位置 ControlMove(IDC_BUTTON_ARRANGE); ControlMove(IDC_BUTTON_PATCH); ControlMove(IDC_STATIC_COORDINATE); ControlMove(IDC_EDIT_STAT); ControlMove(IDC_STATIC_STAT); ControlMove(IDC_BUTTON_STAT); m_multiple_Width=float(1)/float(m_multiple_Width); m_multiple_Height=float(1)/float(m_multiple_Height); // GetClientRect(&rectDlg); }}void MFC::ControlMove(int nID){ CRect rect; GetDlgItem(nID)->GetWindowRect(rect); ScreenToClient(rect); CPoint TLPoint,BRPoint; if (nID==1000)//IDC_BUTTON_ARRANGE的ID { TLPoint.x=rectDlg.TopLeft().x+21; TLPoint.y=rectDlg.BottomRight().y-40; BRPoint.x=TLPoint.x+55; BRPoint.y=TLPoint.y+22; } if (nID==1001))//IDC_BUTTON_PATCH的ID { TLPoint.x=rectDlg.TopLeft().x+84; TLPoint.y=rectDlg.BottomRight().y-40; BRPoint.x=TLPoint.x+55; BRPoint.y=TLPoint.y+22; } if (nID==1024)))//IDC_STATIC_COORDINATE的ID { TLPoint.x=rectDlg.TopLeft().x+150; TLPoint.y=rectDlg.BottomRight().y-40; BRPoint.x=TLPoint.x+55; BRPoint.y=TLPoint.y+22; } if (nID==1022)))//IDC_EDIT_STAT的ID { TLPoint.x=rectDlg.TopLeft().x+25; TLPoint.y=rectDlg.BottomRight().y-60; BRPoint.x=TLPoint.x+300; BRPoint.y=TLPoint.y+20; } if (nID==1014)))//IDC_STATIC_STAT的ID { TLPoint.x=rectDlg.TopLeft().x+28; TLPoint.y=rectDlg.BottomRight().y-85; BRPoint.x=TLPoint.x+300; BRPoint.y=TLPoint.y+20; } if (nID==1020)))//IDC_BUTTON_STAT的ID { TLPoint.x=rectDlg.TopLeft().x+21; TLPoint.y=rectDlg.BottomRight().y-110; BRPoint.x=TLPoint.x+300; BRPoint.y=TLPoint.y+20; } rect.SetRect(TLPoint,BRPoint); GetDlgItem(nID)->MoveWindow(rect);}