MFC程序执行后台操作时不允许操作界面的一种方法
在使用MFC编写界面程序时,有时候会遇到像点击按钮后,后台进行大量操作后才显示处理结果这种情况,在后台处理过程中,界面不应该被允许做任何操作,这里介绍一种方法。
解决办法
点击按钮后,弹出一个模态对话框,在对话框中的OnInitDialog中开启线程处理后台操作,在处理完毕后自动关闭窗口。
步骤
1.对话框类头文件定义
HANDLE m_hThread;
2.在OnInitDialog函数中开启线程
unsigned threadID;
m_hThread = (HANDLE)_beginthreadex(NULL,,&QueryHisData,(LPVOID)this,,&threadID);
3.在QueryHisdata函数中调用实际的处理函数
unsigned __stdcall QueryHisdata(void* pArguments)
{
CQueryWaitDlg* pDlg = (CQueryWaitDlg*)pArguments;
static_cast<CMainFrame*>(AfxGetApp()->m_pMainWnd)->QueryHisData(pDlg->GetBeginTime(),pDlg->GetEndTime());//处理查询操作
pDlg->PostMessage(WM_CLOSE,,); //向对话框发送关闭消息
return ;
}
4.在OnDestroy中关闭线程句柄
if(m_hThread != NULL)
{
CloseHandle(m_hThread);
m_hThread = NULL;
}
MFC程序执行后台操作时不允许操作界面的一种方法的更多相关文章
- MFC程序执行过程剖析
一 MFC程序执行过程剖析 1)我们知道在WIN32API程序当中,程序的入口为WinMain函数,在这个函数当中我们完成注册窗口类,创建窗口,进入消息循环,最后由操作系统根据发送到程序窗口的消息调用 ...
- MFC程序执行过程剖析(转)
一 MFC程序执行过程剖析 1)我们知道在WIN32API程序当中,程序的入口为WinMain函数,在这个函数当中我们完成注册窗口类,创建窗口,进入消息循环,最后由操作系统根据发送到程序窗口的消息调用 ...
- .Net 程序在自定义位置查找托管/非托管 dll 的几种方法
原文:.Net 程序在自定义位置查找托管/非托管 dll 的几种方法 一.自定义托管 dll 程序集的查找位置 目前(.Net4.7)能用的有2种: #define DEFAULT_IMPLEMENT ...
- html中如何实现表格移入移出时背景颜色改变?(两种方法)
html中如何实现表格移入移出时背景颜色改变?(两种方法) 一.总结 1.通过css的table标签的hover属性: 10 #tab:hover{ 11 background: green 12 } ...
- MFC程序执行顺序 .
1.创建Application object对象theApp 程序一开始生产一个(且只有一个)Application object对象theApp,也即一个CWinApp对象,这个全局对象一产生,便执 ...
- 代码操作Word时,目录自动更新的两种方法
最近的项目中有一个功能点为:根据分析数据库并生成报告.不过不是大数据.数据挖掘之类,报告的内容.组织方式都是事先固定下来的.实现的方式为,在普通word文档中插入书签制成模板,然后程序使用OpenXM ...
- vue自定义指令,比onerror更优雅的方式实现当图片加载失败时使用默认图,提供三种方法
首先,来看下效果图(演示一下图片正常加载与加载失败时的效果) 在线体验地址:https://hxkj.vip/demo/vueImgOnerror/ 一.常规方法解决 我们都知道,img标签支持one ...
- Ubuntu下codeblocks编译器程序执行对话框内能进行粘贴编辑操作的指令
如这个: gnome-terminal -t $TITLE -x
- Backbone中的model和collection在做save或者create操作时, 如何选择用POST还是PUT方法 ?
Model和Collection和后台的WEB server进行数据同步非常方便, 都只需要在实行里面添加一url就可以了,backbone会在model进行save或者collection进行cre ...
随机推荐
- Bootstrap关闭当前页
function doBack() { var index = parent.layer.getFrameIndex(window.name); parent.lay ...
- xlrd 和xlwt 对Excel的操作
xlrd与xlwt库的异同点对比 相同点 都支持对Excel文件格式为xls的文件进行操作 不同点 xlrd只支持对Excel文件格式为xls文件的读取 xlwt只支持对Excel文件格式为xls文件 ...
- junit 基础使用
junit百度百科: JUnit是一个Java语言的单元测试框架.它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的sUnit的xUnit家族中最为成功的一个. JU ...
- easy ui 关闭选项卡
var tab = window.parent.getCurrentTab(); var tabs = window.parent.getTabs(); var index = tabs.tabs(& ...
- [解决]CXF wsdl2java 生成代码存在的一些问题
1.环境 CXF版本:3.2.4 JDK版本:1.8.0_112 2.问题 2.1.问题种类1 属性 "Value" 已定义.请使用 <jaxb:property> 解 ...
- Swift get和set方法以及只读属性(计算型属性,本身不保存数据,都是通过计算获得结果)
import UIKit class Person: NSObject { private var _name: String? var name: String? { get { return _n ...
- RocketMQ入门(Filter)_5
RocketMQ中存储的消息对于消费者来说,并不完全都是他们需要的,因此需要对消息进行过滤. 订阅Topic主题 ,选择Tags都是我们简单的过滤.Topic是大分类,Tags是二级分类. Rocke ...
- xadmin 常见错误
版本: Django==2.0.5 xadmin==0.6.1 djangorestframework==3.9.0 1.No module named 'django.core.urlresolve ...
- vue初体验
作为一个前端的小菜鸟,在平时的开发与学习中,除了要深入了解javascript 及 css 的各种特性,熟悉一门框架也是必不可少的.vue以其小巧,轻便,学习平滑等各种特性深受欢迎. 这里总结一下小菜 ...
- Pushlet实现后台信息推送(一)
Pushlet是使用较多的后台向前台推送信息的工具.前台订阅某个感兴趣的事件joinListen,触发后台的Pushlet的servlet,为该请求会话建立session,默认这个sessionID是 ...