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 }

 

转载于:https://www.cnblogs.com/huangsitao/p/10298305.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值