问题描述
如何Twain编程(VC++)实现数字摄像头的实时显示(camerapreview)?现在只能实现单帧采图的功能,代码简单如下所示:1、获取DSM_Entry函数指针m_hDSMDLL=LoadLibrary("TWAIN_32.DLL");m_lpDSMEntry=(DSMENTRYPROC)GetProcAddress(m_hDSMDLL,MAKEINTRESOURCE(1));2、打开数据源管理器SourceManagerrc=(*m_lpDSMEntry)(&m_AppId,NULL,DG_CONTROL,DAT_PARENT,MSG_OPENDSM,(TW_MEMREF)&m_hWnd/*指定数据源Source的父窗口的句柄*/);3、选择数据源Sourcerc=(*m_lpDSMEntry)(&m_AppId,NULL,DG_CONTROL,DAT_IDENTITY,MSG_USERSELECT,(TW_MEMREF)&m_SourceId);4、打开数据源Sourcerc=(*m_lpDSMEntry)(&m_AppId,NULL,DG_CONTROL,DAT_IDENTITY,MSG_OPENDS,(TW_MEMREF)&m_SourceId);5、启动数据源SourceTW_USERINTERFACEtwUserInterface;twUserInterface.ShowUI=FALSE;//不显示用户界面twUserInterface.ModalUI=TRUE;twUserInterface.hParent=(TW_HANDLE)m_hWnd;rc=(*m_lpDSMEntry)(&m_AppId,&m_SourceId,DG_CONTROL,DAT_USERINTERFACE,MSG_ENABLEDS,(TW_MEMREF)&twUserInterface);6、传输图像数据HANDLEhBitmap=NULL;rc=(*m_lpDSMEntry)(&m_AppId,&m_SourceId,DG_IMAGE,DAT_IMAGENATIVEXFER,MSG_GET,(TW_MEMREF)&hBitmap);//利用Native模式传输图像7、告知数据源Source已经成功接收图像TW_PENDINGXFERStwPendingXfer;rc=(*m_lpDSMEntry)(&m_AppId,&m_SourceId,DG_CONTROL,DAT_PENDINGXFERS,MSG_ENDXFER,&twPendingXfer);8、DisableSourcerc=(*m_lpDSMEntry)(&m_AppId,&m_SourceId,DG_CONTROL,DAT_USERINTERFACE,MSG_DISABLEDS,(TW_MEMREF)&twUserInterface);为了实时显示,我现在暂时用了不是办法的办法:就是在不断的循环5~8的流程,但是实时性是很差的。不知道真正的Twain实时显示应该怎么写??
解决方案
解决方案二:
请问楼主找到了吗?求教