MFC多线程进行图片的显示
来源:互联网 发布:六爻排盘软件哪个好 编辑:程序博客网 时间:2024/06/03 17:56
在MFC编程中开始学习都是只利用一个主线程,比较蛋疼的是,当你只用一个主线程进行如播放,查询时,MFC的界面会卡死,你无法进行其他的操作,这时需要进行多线程的编程,在操作时生成一个子线程来进行一些如播放,查询等的费时的操作。
多线程,经常会与对实时性要求比较高的并行运算结合,用来隐藏数据传输过程中用到的等待时间。
基于MFC的多线程在上一篇博客的基础上进行改进:
1.简单建立如下的界面:
2给各个控制按键添加消息响应函数:
主要是对播放按钮填加函数使在点击按钮时生成一个子线程来播放图片:
zhanting=0; hThread=CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ThreadFunc, NULL, 0, &ThreadID); GetDlgItem(IDC_BUTTON1)->EnableWindow(TRUE); GetDlgItem(IDC_STOP)->EnableWindow(TRUE); GetDlgItem(IDC_CONTIUN)->EnableWindow(FALSE);
通过调用CreateThread()函数来生成一个子线程;
在Dlg.h中声明句柄:
HANDLE hThread; DWORD ThreadID;
GetDlgItem(IDC_BUTTON1)->EnableWindow(TRUE);
GetDlgItem(IDC_STOP)->EnableWindow(TRUE);
GetDlgItem(IDC_CONTIUN)->EnableWindow(FALSE);
为设置当按键被按下时其他各个框是否可被按下
下面是生成线程函数的代码:
IplImage *image=NULL; //原始图像 char filename[128]; m_bRun=true; if(zhanting==0) i=2; else { i=weizhi; } for(;i<300;i++) { UINT ID; ID=IDC_PICTURE; sprintf(filename,"5//%d.jpg",i); //if(image) // cvReleaseImage(&image); image = cvLoadImage(filename); //显示图片 cvWaitKey(3); //DrawPicToHDC(image, IDC_Picture); // CPicturesDlg.DrawPicToHDC(image, IDC_Picture); CDuoxiancDlg* pMainWnd=(CDuoxiancDlg*)AfxGetMainWnd(); CDC *pDC = (CDC*)pMainWnd->GetDlgItem(ID)->GetDC(); HDC hDC= pDC->GetSafeHdc(); CRect rect; pMainWnd->GetDlgItem(ID)->GetClientRect(&rect); CvvImage cimg; cimg.CopyOf(image); cimg.DrawToHDC(hDC,&rect); pMainWnd->ReleaseDC(pDC); Sleep(30); cvReleaseImage(&image); if(!m_bRun) { weizhi=i; break; } }
由于生成子线程函数不继承Dlg类,所以要用声明一个Dlg类pMainWnd
由于这里还没有与数据库连接,直接在文件夹中放图片进行读取;
线程之间的通信,这里只是简单地定义了全局变量
volatile BOOL m_bRun;volatile int weizhi;volatile int i;volatile int zhanting=0;
其他两个按钮的功能通过改变全局变量来控制播放的暂停继续。
如果你是魔女,我只要化身魔王就可以了…..
0 0
- MFC多线程进行图片的显示
- MFC中多线程显示相机捕获图片
- 【MFC图片显示】MFC的位图显示
- mfc 的图片显示机制
- MFC 显示图片的问题
- MFC菜单栏显示带图片的对话框
- MFC动态显示图片的方法
- OpenCV与Windows MFC的图片显示
- MFC显示图片
- MFC对话框显示图片
- mfc窗口显示图片
- MFC显示jpg图片
- MFC显示灰度图片
- MFC动态显示图片
- MFC对话框显示图片
- MFC显示JPG图片
- 【c++】MFC显示图片
- MFC 显示bmp图片
- android studio如何将多个module统一放在一个目录下
- Unreal 入门-Unreal Engine 4 AI Programming Essentials 书籍下载
- 【MongoDB】在window系统下搭建MongoDB的分片集群(一)
- C++笔试题 String类的实现 三大复制控制函数
- 使用BigDecimal进行精确运算
- MFC多线程进行图片的显示
- Unreal 入门-性能分析
- Oracle数据库的查询之过滤和排序(二)
- HTTP要点概述:一,TCP/IP协议族
- 信息安全
- 8. String to Integer (atoi)
- Unreal 入门-3dmax 从建模到渲染
- Jetty开发指导:Maven和Jetty
- Unreal 入门-Slow down world but not player