工控编程吧
标题:
392上位机VC MFC编写桌面录像软件
[打印本页]
作者:
qq263946146
时间:
2016-9-15 16:35
标题:
392上位机VC MFC编写桌面录像软件
(, 下载次数: 1)
上传
点击文件名下载附件
编写桌面录像工具
功能展示
很多时候我们都会录制些软件操作教程,第三方的录制软件有很多,那么如何编写桌面录制软件呢?我们当前例程就实现了桌面录制功能,效果如图,设置了视屏的保存路径,视屏名,视频帧数就可以点击<开始录制><停止录制>录制桌面上我们的操作过程;
要点提示
微软提供了一套AVI视频录制库方便我们对AVI视频的操作,在我们对库函数如果AVIFileInit()等进行调用前必须包含函数所在的头文件及库文件,不然无法编译通过;
#include <vfw.h>
#pragma comment (lib,"vfw32.lib")
#include <mmsystem.h>
#pragma comment (lib,"winmm.lib")
实现功能
1.新建基于对话框的应用程序
2.在主对话框头文件添加头文件及一变量
#include <math.h>
#include <vfw.h>
#pragma comment (lib,"vfw32.lib")
#include <mmsystem.h>
#pragma comment (lib,"winmm.lib")
BOOL m_IsStart; //是否为开始录像
在主对话框源文件顶部添加全部变量
PAVIFILE pfile;
int nFrames = 0;
PAVISTREAM ps;
PAVISTREAM pComStream;
3.添加编辑框IDC_EDIT1,IDC_EDIT2,IDC_EDIT3分别用于录制视屏的显示,视屏名的输入及视屏帧的输入,添加复选框IDC_CHECK1,用于选择是否录制鼠标,添加按钮<保存路径><开始录制><停止录制>关联按钮的点击函数
void CGkbc8Dlg::OnPath()
{
CString ReturnPach; //字符串变量
TCHAR szPath[_MAX_PATH]; //保存路径变量
BROWSEINFO bi; // BROWSEINFO结构变量
bi.hwndOwner = NULL; //HWND句柄
bi.pidlRoot = NULL; //默认值为NULL
bi.lpszTitle = _T("文件浏览对话框"); //对话框标题
bi.pszDisplayName = szPath; //选择文件夹路径
bi.ulFlags = BIF_RETURNONLYFSDIRS; //标记
bi.lpfn = NULL; //默认值为NULL
bi.lParam = NULL; //回调消息
LPITEMIDLIST pItemIDList = SHBrowseForFolder(&bi); //显示文件浏览对话框
if(pItemIDList)
{
if(SHGetPathFromIDList(pItemIDList,szPath)) //判断是否获得文件夹路径
ReturnPach = szPath; //获得文件夹路径
}
else
{
ReturnPach = ""; //文件夹路径为空
}
SetDlgItemText(IDC_EDIT1,ReturnPach);
}
void CGkbc8Dlg::OnStart()
{
if(!m_IsStart)
{
CString rate,name,path;
GetDlgItemText(IDC_EDIT1,path);//保存路径
GetDlgItemText(IDC_EDIT2,name);//文件名
GetDlgItemText(IDC_EDIT3,rate);//帧数
if(path.IsEmpty()||name.IsEmpty()||rate.IsEmpty())
{
MessageBox("视频参数填写不完整");
return;
}
AVIFileInit();
SetTimer(1,100,NULL);
}
else
{
KillTimer(1);
AVIStreamClose(pComStream);
AVIStreamClose(ps);
if(pfile != NULL) AVIFileRelease(pfile);
AVIFileExit();
nFrames =0;
}
m_IsStart = !m_IsStart;
}
void CGkbc8Dlg::OnStop()
{
OnStart();
}
4.添加计时器处理函数,函数体过长不复制出,添加在程序初始化时适当初始化变量及控件
SetDlgItemText(IDC_EDIT1,"C:\\");//保存路径
SetDlgItemText(IDC_EDIT2,"工控编程吧");//文件名
SetDlgItemText(IDC_EDIT3,"3");//帧数
m_IsStart = FALSE;
我们来演示下功能实现的整个过程
[iqiyi]http://player.video.qiyi.com/e03e7d6674eabf84958e659649203c38/0/0/w_19rsx0gm6h.swf-albumId=6288252709-tvId=6288252709-isPurchase=0-cnId=12[/iqiyi]
(, 下载次数: 0)
上传
点击文件名下载附件 [weixinlianxi]1[/weixinlianxi]
[note]1[/note]
欢迎光临 工控编程吧 (https://www.gkbc8.com/)
Powered by Discuz! X3.4