半生半死半疯癫 2022-07-13 15:07
浏览 14
已结题

如何实现while循环显示同一对话框

在mfc中,在实现循环显示同一对话框中的不同内容中,会出现DoModal调用失败的情况。并且线程无法退出,导致线程创建失败,之后在转为非模态对话框后,会出现只显示一次的情况,求如何在多次显示后不崩溃,求解答

平台为VS2008 VC++2008

void CMaintenanceServiceDlg::OnBnClickedIqOqPqCertificationBtn()
{
memset(&theApp.m_IQ_OQ_PQ_Certification, 0, sizeof(theApp.m_IQ_OQ_PQ_Certification));
int ENUM_x = 1;
while(ENUM_x <= NUM) //enum NUM = 58
{
CIqOqPqCertificationDlg IqOqPqCertificationDlg;
INT_PTR Q3Q = IqOqPqCertificationDlg.DoModal(ENUM_x);
if(Q3Q == EXIT_APP)
{
memset(&theApp.m_IQ_OQ_PQ_Certification, 0, sizeof(theApp.m_IQ_OQ_PQ_Certification));
delete(IqOqPqCertificationDlg);
return;
}
else if(Q3Q == RETURN_APP)
{
delete(IqOqPqCertificationDlg);
ENUM_x++;
}
}
memset(&theApp.m_IQ_OQ_PQ_Certification, 0, sizeof(theApp.m_IQ_OQ_PQ_Certification));
return;
}

INT_PTR CIqOqPqCertificationDlg :: DoModal(int setType)
{
m_DlgType = setType;

return CDialog :: DoModal();

}

void CIqOqPqCertificationDlg :: InitDialogControl()//中英文暂时
{
GetDlgItem(IDC_WARNING1_STATIC)->SetFont(&m_Font);
GetDlgItem(IDC_WARNING2_STATIC)->SetFont(&m_Font);

m_WhiteBrush = CreateSolidBrush(WHITE_COLOR);
m_Blackish_GreenBrush = CreateSolidBrush(BLACKISH_GREEN);

wchar_t dialogTitleBuf[_BUFFER_LENGTH_256] = {0};
if(!GetDlgItem(IDC_WARNING1_STATIC))
    theApp.WriteLogToFile("IDC_WARNING1_STATIC", __FILE__, __LINE__, __FUNCTION__);
if(!GetDlgItem(IDC_WARNING2_STATIC))
    theApp.WriteLogToFile("IDC_WARNING2_STATIC", __FILE__, __LINE__, __FUNCTION__);
if(!GetDlgItem(IDC_WARNING3_STATIC))
    theApp.WriteLogToFile("IDC_WARNING3_STATIC", __FILE__, __LINE__, __FUNCTION__);
if(!GetDlgItem(IDC_WARNING4_STATIC))
    theApp.WriteLogToFile("IDC_WARNING4_STATIC", __FILE__, __LINE__, __FUNCTION__);
if(!GetDlgItem(IDC_WARNING5_STATIC))
    theApp.WriteLogToFile("IDC_WARNING5_STATIC", __FILE__, __LINE__, __FUNCTION__);
if(!GetDlgItem(IDC_WARNING6_STATIC))
    theApp.WriteLogToFile("IDC_WARNING6_STATIC", __FILE__, __LINE__, __FUNCTION__);
if(!GetDlgItem(IDC_RECORD_LIST))
    theApp.WriteLogToFile("IDC_RECORD_LIST", __FILE__, __LINE__, __FUNCTION__);
if(!GetDlgItem(IDC_EDIT_STATIC))
    theApp.WriteLogToFile("IDC_EDIT_STATIC", __FILE__, __LINE__, __FUNCTION__);

//标题、中间显示内容,底部按键
if (m_DlgType == IQ_Start)
{...}
else if (m_DlgType == IQ_File)
{
    //显示界面内容
}
else if (m_DlgType == IQ_Goods)
{

}
else if (m_DlgType == IQ_PowerSupply)
{

}
else if (m_DlgType == IQ_Sunshine)
{

}
else if (m_DlgType == IQ_AirConditioner)
{

}
else if (m_DlgType == IQ_HumidityTemperature)
{
...
}
else if (m_DlgType == IQ_ConnectingLine)
{
  ...
}

...

//标题
m_DialogTitle.SetTitle(dialogTitleBuf);

m_TitleStatic.SetTimer(1, 1000, NULL);
m_CompanyIcon.SetBitmap(IDB_COMPANY_LINE);

m_Dummy1Bn.LoadBitmaps(IDB_BUTTON, IDB_BUTTON, IDB_BUTTON);
m_Dummy2Bn.LoadBitmaps(IDB_BUTTON, IDB_BUTTON, IDB_BUTTON);
m_Dummy3Bn.LoadBitmaps(IDB_BUTTON, IDB_BUTTON, IDB_BUTTON);
m_Dummy4Bn.LoadBitmaps(IDB_BUTTON, IDB_BUTTON, IDB_BUTTON);
m_Dummy5Bn.LoadBitmaps(IDB_BUTTON, IDB_BUTTON, IDB_BUTTON);
m_ExitBn.LoadBitmaps(IDB_BUTTON, IDB_BUTTON, IDB_BUTTON);

return;

}

  • 写回答

1条回答 默认 最新

  • 半生半死半疯癫 2022-07-13 15:10
    关注

    Windows 版本为 window7 32 bit

    评论

报告相同问题?

问题事件

  • 系统已结题 7月21日
  • 创建了问题 7月13日

悬赏问题

  • ¥15 电梯与AGV小车,modbus转HTTP ,.
  • ¥100 qt程序使用CEF组件某些网页打开失败的问题
  • ¥15 Google Play Console发布的应用一直在in review状态
  • ¥15 这种小网站播放的音乐文件该如何下载?
  • ¥15 x-tile软件报错
  • ¥15 评论图片存取方案,求方法
  • ¥30 麒麟系统安装设置基础软件仓库时出错
  • ¥15 COMSOL溶质浸出模型构建
  • ¥100 求点云SHOT的C++手写版代码
  • ¥15 无界革命系统无法正常启动