VC:
======================================
typedef struct tagBITMAPINFO {
BITMAPINFOHEADER bmiHeader;
RGBQUAD bmiColors[1];
} BITMAPINFO, FAR *LPBITMAPINFO, *PBITMAPINFO;typedef struct tagBITMAPCOREINFO {
BITMAPCOREHEADER bmciHeader;
RGBTRIPLE bmciColors[1];
} BITMAPCOREINFO, FAR *LPBITMAPCOREINFO, *PBITMAPCOREINFO;__declspec(dllexport) BOOL __stdcall MV_AVIFileOpen(int index,LPCTSTR lpszFileName, LPBITMAPINFO alpb, WORD wSkipRate);---------------------------------------------------------------
m_pImageInfo = (BITMAPINFO *) new BYTE[sizeof( BITMAPINFO ) +
(256 * sizeof( RGBQUAD )) ];
if ( m_pImageInfo == NULL ) return ;
m_pImageInfo->bmiHeader.biSize = sizeof( BITMAPINFOHEADER );
m_pImageInfo->bmiHeader.biWidth = info.Width;
m_pImageInfo->bmiHeader.biHeight = info.Heigth;
m_pImageInfo->bmiHeader.biPlanes = 1;
m_pImageInfo->bmiHeader.biBitCount = info.nColor;
m_pImageInfo->bmiHeader.biCompression = BI_RGB;
m_pImageInfo->bmiHeader.biSizeImage = info.Length;
m_pImageInfo->bmiHeader.biXPelsPerMeter = 0;
m_pImageInfo->bmiHeader.biYPelsPerMeter = 0;
m_pImageInfo->bmiHeader.biClrUsed = (info.nColor <= 8) ? 256 : 0;
m_pImageInfo->bmiHeader.biClrImportant = (info.nColor <= 8) ? 256 : 0;
if(info.nColor==8)
{
for (UINT i = 0; i < 256; i++ )
{
m_pImageInfo->bmiColors[i].rgbBlue = (BYTE) 0;
m_pImageInfo->bmiColors[i].rgbGreen = (BYTE) 0;
m_pImageInfo->bmiColors[i].rgbRed = (BYTE) i;
m_pImageInfo->bmiColors[i].rgbReserved = 0;
}
}
char AviFileName[256];
sprintf(AviFileName,"cap%d.avi",FileIndex);
BOOL bOpen=MV_AVIFileOpen(0, AviFileName, m_pImageInfo, 1);
======================================
VB:
Public Type RGBQUAD
rgbBlue As Byte
rgbGreen As Byte
rgbRed As Byte
rgbReserved As Byte
End TypePublic Type BITMAPINFO
bmiHeader As BITMAPINFOHEADER
bmiColors(0 To 256) As RGBQUAD
End TypePublic Const BI_RGB = &H0Public Declare Function MV_AVIFileOpen Lib "MVAVI.dll" (ByVal Index As Integer, ByVal lpszFileName As String, alpb As BITMAPINFO, wSkipRate As Integer) As Boolean
Dim ImageInfo As BITMAPINFO
'MsgBox LenB(ImageInfo)
ImageInfo.bmiHeader.biSize = 40
......
Dim bOpen As Boolean
Dim fname As String
fname = "tmp1.avi"
bOpen = MV_AVIFileOpen(0, fname, ImageInfo, 1)或者是:
Public Declare Function MV_AVIFileOpen Lib "MVAVI.dll" (ByVal Index As Integer, ByVal lpszFileName As String,ByVal alpb As Long, wSkipRate As Integer) As BooleanLong改成Any也不行bOpen = MV_AVIFileOpen(0, fname,byval VarPtr(ImageInfo), 1)
======================================
typedef struct tagBITMAPINFO {
BITMAPINFOHEADER bmiHeader;
RGBQUAD bmiColors[1];
} BITMAPINFO, FAR *LPBITMAPINFO, *PBITMAPINFO;typedef struct tagBITMAPCOREINFO {
BITMAPCOREHEADER bmciHeader;
RGBTRIPLE bmciColors[1];
} BITMAPCOREINFO, FAR *LPBITMAPCOREINFO, *PBITMAPCOREINFO;__declspec(dllexport) BOOL __stdcall MV_AVIFileOpen(int index,LPCTSTR lpszFileName, LPBITMAPINFO alpb, WORD wSkipRate);---------------------------------------------------------------
m_pImageInfo = (BITMAPINFO *) new BYTE[sizeof( BITMAPINFO ) +
(256 * sizeof( RGBQUAD )) ];
if ( m_pImageInfo == NULL ) return ;
m_pImageInfo->bmiHeader.biSize = sizeof( BITMAPINFOHEADER );
m_pImageInfo->bmiHeader.biWidth = info.Width;
m_pImageInfo->bmiHeader.biHeight = info.Heigth;
m_pImageInfo->bmiHeader.biPlanes = 1;
m_pImageInfo->bmiHeader.biBitCount = info.nColor;
m_pImageInfo->bmiHeader.biCompression = BI_RGB;
m_pImageInfo->bmiHeader.biSizeImage = info.Length;
m_pImageInfo->bmiHeader.biXPelsPerMeter = 0;
m_pImageInfo->bmiHeader.biYPelsPerMeter = 0;
m_pImageInfo->bmiHeader.biClrUsed = (info.nColor <= 8) ? 256 : 0;
m_pImageInfo->bmiHeader.biClrImportant = (info.nColor <= 8) ? 256 : 0;
if(info.nColor==8)
{
for (UINT i = 0; i < 256; i++ )
{
m_pImageInfo->bmiColors[i].rgbBlue = (BYTE) 0;
m_pImageInfo->bmiColors[i].rgbGreen = (BYTE) 0;
m_pImageInfo->bmiColors[i].rgbRed = (BYTE) i;
m_pImageInfo->bmiColors[i].rgbReserved = 0;
}
}
char AviFileName[256];
sprintf(AviFileName,"cap%d.avi",FileIndex);
BOOL bOpen=MV_AVIFileOpen(0, AviFileName, m_pImageInfo, 1);
======================================
VB:
Public Type RGBQUAD
rgbBlue As Byte
rgbGreen As Byte
rgbRed As Byte
rgbReserved As Byte
End TypePublic Type BITMAPINFO
bmiHeader As BITMAPINFOHEADER
bmiColors(0 To 256) As RGBQUAD
End TypePublic Const BI_RGB = &H0Public Declare Function MV_AVIFileOpen Lib "MVAVI.dll" (ByVal Index As Integer, ByVal lpszFileName As String, alpb As BITMAPINFO, wSkipRate As Integer) As Boolean
Dim ImageInfo As BITMAPINFO
'MsgBox LenB(ImageInfo)
ImageInfo.bmiHeader.biSize = 40
......
Dim bOpen As Boolean
Dim fname As String
fname = "tmp1.avi"
bOpen = MV_AVIFileOpen(0, fname, ImageInfo, 1)或者是:
Public Declare Function MV_AVIFileOpen Lib "MVAVI.dll" (ByVal Index As Integer, ByVal lpszFileName As String,ByVal alpb As Long, wSkipRate As Integer) As BooleanLong改成Any也不行bOpen = MV_AVIFileOpen(0, fname,byval VarPtr(ImageInfo), 1)
解决方案 »
- 谁有台湾王国荣先生写的书(20分求解)?
- msxml的问题
- 编译错误:错误的参数号或者无效的属性赋值
- ◢ 整体解决方案 (分不多,没有分了.....)◣
- 如何调用网页
- ado 的locktype属性有什么用?
- 急~~~!!为什么会用不了ADO访问了?
- 初学者的问题:vb+sql2000远程连接。急急急
- 请问目前有多少人在使用VB6.0,VB.net,何时用VB.net?
- 大家一起来为csdn",说声祝福的话吧!
- 求救!!!
- web控件打开网页2.htm(有个frame的src是3.htm),3.htm使用document.write画出一个 ID="sourceEditor"的编辑框,怎么填写?
但哪里有问题我也说不出,最好向V130开发商要一个VB的进程调用MV_AVIFileOpen的例程。
类型的指针最好也用long
rgbBlue As Byte
rgbGreen As Byte
rgbRed As Byte
rgbReserved As Byte
End TypePrivate Type BITMAPINFOHEADER
biSize As Long
biWidth As Long
biHeight As Long
biPlanes As Integer
biBitCount As Integer
biCompression As Long
biSizeImage As Long
biXPelsPerMeter As Long
biYPelsPerMeter As Long
biClrUsed As Long
biClrImportant As Long
End TypePrivate Type BITMAPINFO
bmiHeader As BITMAPINFOHEADER
bmiColors(0 To 256) As RGBQUAD
End TypePrivate Const BI_RGB = &H0
Private Declare Function MV_AVIFileOpen Lib "D:\Smart\vc\test8\Debug\test8.dll" (ByVal Index As Long, ByVal lpszFileName As String, ByVal alpb As Long, ByVal wSkipRate As Integer) As LongPrivate Sub Command1_Click()
Dim ImageInfo As BITMAPINFO
With ImageInfo
.bmiHeader.biSize = 40
.bmiHeader.biBitCount = 88
.bmiHeader.biHeight = 99
End With
Dim bOpen As Boolean
Dim fname As String
fname = "testfdsafdsafdsatmp1.avi"
bOpen = MV_AVIFileOpen(&H1234, fname, VarPtr(ImageInfo), &H1122)
End Sub俺写了个测试,在vc下debug跟踪没问题,传进来的都正确。
With aviSI
.fccType = mmioStringToFOURCC("vids", 0&) '// stream type video
.fccHandler = 0& '// default AVI handler
.dwScale = 1
.dwRate = 25 '// fps(1-30)
.dwSuggestedBufferSize = bInfo.bmiHeader.biSizeImage '// size of one frame pixels
Call SetRect(.rcFrame, 0, 0, bInfo.bmiHeader.biWidth, bInfo.bmiHeader.biHeight) '// rectangle for stream
End With
' create the stream
r = AVIFileCreateStream(pFile, ps, aviSI)怎样在回调函数中进行处理呢,不会每次在回调函数中销毁流再重建吧?
由于图像大小变化了,会引起指针越界的非法操作
http://topic.csdn.net/u/20080326/21/de484afd-ad90-48a0-938c-e3f8d6d8484d.html?seed=581811851