继续记录,第二步开发摄像头拍照功能.

使用vfw.h开发摄像头拍照功能,关于vfw网上有很多文章,很多代码可以参考

参考:http://blog.163.com/huangqiao_8/blog/static/33900492008017111847364/

Vedio for Windows 是WIN32 SDK 中多媒体编程SDK 的视频开发工具。在微软的Visual C ++中提供了Vedio for Windows 的头文件vfw.h 和库文件vfw32.lib。

在ActiveX中显示的Dialog中增加一个picture控件,设置ID为IDC_VIDEO,加入按钮,打开摄像头,拍照等,下面会贴入关键代码:

1.引入vfw.h

#include <vfw.h>
#pragma comment(lib,"vfw32.lib")
//如果没有引入afxcmn.h,在stdafx.h中添加:
//#include <afxcmn.h> 

2.在对话框的头文件中加入如下变量

public:
friend UINT vproc(LPVOID pParam);
friend LRESULT CALLBACK backproc(HWND hwnd,LPVIDEOHDR lpVHDR);
private:
HWND videohwnd;
CEvent e;
CStatic CAPVIDEO;
BITMAPINFO *mapinfo;
PBITMAPINFO tran;
//补充下 在对话框的DoDataExchange方法中添加如下代码:
DDX_Control(pDX, IDC_CAPVIDEO, CAPVIDEO);//绑定控件IDC_CAPVIDEO和变量

3.打开摄像头按钮内的代码

    CRect rc;
CAPVIDEO.GetWindowRect(&rc);
ScreenToClient(rc); CAPDRIVERCAPS capd;
CAPSTATUS caps;
tran=NULL;
e.ResetEvent();
AfxBeginThread(vproc,(void*)this);
::WaitForSingleObject(e,INFINITE); if(capDriverConnect(videohwnd,)==TRUE)
{
capDriverGetCaps(videohwnd,sizeof(CAPDRIVERCAPS),&capd);
capGetStatus(videohwnd,&caps,sizeof(CAPSTATUS));
::SetParent(videohwnd,*this); ::SetWindowLong(videohwnd,GWL_STYLE,WS_CHILD);
::SetWindowPos(videohwnd,NULL,rc.left,rc.top,
rc.Width(),rc.Height(),SWP_NOZORDER);
::ShowWindow(videohwnd,SW_SHOW);
//capPreviewScale(videohwnd, 1);
capPreviewRate(videohwnd,);
capPreview(videohwnd,true);
} else
{
AfxMessageBox("创建失败");
}

4.vproc方法

static UINT vproc(LPVOID pParam)
{

CViewDialog *p=(CViewDialog*)pParam;

HWND hwnd=capCreateCaptureWindow(NULL,WS_POPUP,0,0,10,10,0,0);
if(hwnd)
{
p->videohwnd=hwnd;
p->e.SetEvent();
}
MSG Msg;
while(GetMessage(&Msg,NULL,0,0))
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
return Msg.wParam;

}

5.拍照按钮内的代码

LPWSTR picUrl=_T("d:/123.bmp");
capFileSaveDIB(videohwnd,picUrl);

现在可以存出图了,但是bmp格式不常用,下次记录裁剪bmp和转换bmp为jpg.

有一段弯路,图片控件ID默认是IDC_STATIC,开始没有修改初始化时报错因为ID重复,修改后就好了...

VS2010开发MFC ActiveX,摄像头拍照上传Webservice(2)的更多相关文章

  1. VS2010开发MFC ActiveX,摄像头拍照上传Webservice(1)

    最近工作项目,BS中需要用到摄像头拍照,需要存储本地,同时上传到服务器,尝试使用vc++做ActiveX来实现. 完全没有使用过vc,上网搜索各种知识,初步完成.在这里记录下有帮助的资料. 第一步:编 ...

  2. 【VS开发】使用VS2010创建MFC ActiveX工程项目

    1.ActiveX的基本概念 ActiveX控件可以看作是一个极小的服务器应用程序,它不能独立运行,必须嵌入到某个容器程序中,与该容器一起运行.这个容器包括WEB网页,应用程序窗体等... Activ ...

  3. html5调用手机摄像头,实现拍照上传功能

    今天做手机网站,想实现手机扫描二维码功能.首先实现在浏览器中调用手机摄像头,实现拍照功能并且把拍下的照片显示在页面并上传到服务器上,然后再在服务器端进行分析. 首先实现在浏览器中调用摄像头,当然用现在 ...

  4. [ActiveX]使用VS2010创建MFC ActiveX工程项目

    ActiveX的基本概念 ActiveX控件可以看作是一个极小的服务器应用程序,它不能队列运行,必须嵌入到某个容器程序中,与该容器一起运行.这个容器包括web网页,应用程序窗体等等. ActiveX控 ...

  5. webAPP如何实现移动端拍照上传(Vue组件示例)?

    摘要:使用HTML5编写移动Web应用,主要是为了尝试一下“一套代码多处运行”,一个webapp几乎可以不加修改的运行在PC/Android/iOS等上面运行.但是写到现在觉得虽然这种方式弊大于利,不 ...

  6. C++ 使用VS2010创建MFC ActiveX工程项目

    1.ActiveX的基本概念 ActiveX控件可以看作是一个极小的服务器应用程序,它不能独立运行,必须嵌入到某个容器程序中,与该容器一起运行.这个容器包括WEB网页,应用程序窗体等... Activ ...

  7. c++ ActiveX基础1:使用VS2010创建MFC ActiveX工程项目

    1.ActiveX的基本概念 ActiveX控件可以看作是一个极小的服务器应用程序,它不能独立运行,必须嵌入到某个容器程序中,与该容器一起运行.这个容器包括WEB网页,应用程序窗体等... Activ ...

  8. 【Demo】HTML5 拍照上传

    本文主要讲解 手机浏览器 如何拍照 为什么会有这个需求 最近做一个项目要用到拍照然后上传照片,但是网页拍照一般都是用Flash做的,而我们主要是H5页面,如果在微信里面有权限就可以通过JSSDK调起摄 ...

  9. android 拍照上传文件 原生定位

    最近公司需要一个android拍照上传和定位功能的的单一功能页面,一开始选择ionic cordova angular的一套H5框架,但是遇到和上传文件报错的问题,bug找了一天没找到原因,怀疑是io ...

随机推荐

  1. java中如何使用Junit测试

    java中如何使用Junit测试 一.总结 一句话总结:a.单元测试的测试代码在test文件夹下,和源码不在同一个文件夹下 b.测试的类方法都以test开头,后面接要测试的类或者方法的名字 1.JUn ...

  2. CPU上下文切换详解

    CPU上下文切换详解 原文地址,译文地址,译者: 董明鑫,校对:郑旭东 上下文切换(有时也称做进程切换或任务切换)是指CPU 从一个进程或线程切换到另一个进程或线程.进程(有时候也称做任务)是指一个程 ...

  3. 雷林鹏分享:Ruby 数组(Array)

    Ruby 数组(Array) Ruby 数组是任何对象的有序的.整数索引的集合.数组中的每个元素都与一个索引相关,并可通过索引进行获取. 数组的索引从 0 开始,这与 C 或 Java 中一样.一个负 ...

  4. maven 工程mybatis自动生成实体类

    generatorConfig.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE ge ...

  5. 牛客网——A找一找

    链接:https://www.nowcoder.net/acm/contest/71/A来源:牛客网 题目描述 给定n个正整数,请找出其中有多少个数x满足:在这n个数中存在数y=kx,其中k为大于1的 ...

  6. Kubernetes实践--hello world 示例

    本文所说的Hello world是一个web留言板应用,并且是基于PHP+Redis的两层分布式架构的web应用,前端PHP web网站通过访问后端Redis数据库完成用户留言的查询和添加功能,具备读 ...

  7. Holt-Winters模型原理分析

    Holt-Winters模型原理分析及代码实现(python) from:https://blog.csdn.net/u010665216/article/details/78051192 引言 最近 ...

  8. poj3680

    题解: 相邻的建边 每一段建边 然后见一个原点,汇点 代码: #include<cstdio> #include<cmath> #include<cstring> ...

  9. Linux jdk环境配置模板

    export JAVA_HOME=/opt/JAVA/jdk1.8.0_191export JRE_HOME=${JAVA_HOME}/jreexport CLASSPATH=.:${JAVA_HOM ...

  10. <NET CLR via c# 第4版>笔记 第5章 基元类型、引用类型和值类型

    5.1 编程语言的基元类型 c#不管在什么操作系统上运行,int始终映射到System.Int32; long始终映射到System.Int64 可以通过checked/unchecked操作符/语句 ...