• MFC程序执行后台操作时不允许操作界面的一种方法


    在使用MFC编写界面程序时,有时候会遇到像点击按钮后,后台进行大量操作后才显示处理结果这种情况,在后台处理过程中,界面不应该被允许做任何操作,这里介绍一种方法。

    解决办法

    点击按钮后,弹出一个模态对话框,在对话框中的OnInitDialog中开启线程处理后台操作,在处理完毕后自动关闭窗口。

    步骤

    1.对话框类头文件定义

    HANDLE m_hThread;

    2.在OnInitDialog函数中开启线程

    1 unsigned threadID;
    2 m_hThread = (HANDLE)_beginthreadex(NULL,0,&QueryHisData,(LPVOID)this,0,&threadID);

    3.在QueryHisdata函数中调用实际的处理函数

    1 unsigned __stdcall QueryHisdata(void* pArguments)
    2 {
    3     CQueryWaitDlg* pDlg = (CQueryWaitDlg*)pArguments;
    4     static_cast<CMainFrame*>(AfxGetApp()->m_pMainWnd)->QueryHisData(pDlg->GetBeginTime(),pDlg->GetEndTime());//处理查询操作
    5     pDlg->PostMessage(WM_CLOSE,0,0); //向对话框发送关闭消息  
    6     return 0;
    7 }

    4.在OnDestroy中关闭线程句柄

    1 if(m_hThread != NULL)
    2 {
    3     CloseHandle(m_hThread);
    4     m_hThread = NULL;
    5 }
  • 相关阅读:
    django笔记
    pandas dataframe的合并(append, merge, concat)
    pandas删除行删除列,增加行增加列
    github上值得关注的前端项目
    CSS布局奇淫技巧之--各种居中
    级联菜单
    鼠标移入移出改变透明度
    图片轮播特效
    图片放大镜效果
    css3多列布局
  • 原文地址:https://www.cnblogs.com/huangsitao/p/10298305.html
Copyright © 2020-2023  润新知