会做网站怎么赚钱,wordpress移动端显示,网站开发制作的流程有哪些,南昌网站建设模板总部本Windows应用解析AVI视频文件#xff0c;以表格的方式显示AVI文件结构。并可以将结果保存到bmp图片。下面是#xff0c;使用该应用解析一部AVI电影获得的图片。
应用开发信息
定义一个INFO结构#xff0c;包含两个字符串对象#xff0c;一个ULONGLONG变量#xff0c;和…本Windows应用解析AVI视频文件以表格的方式显示AVI文件结构。并可以将结果保存到bmp图片。下面是使用该应用解析一部AVI电影获得的图片。
应用开发信息
定义一个INFO结构包含两个字符串对象一个ULONGLONG变量和一个UINT变量一个CRect对象一个颜色值变量。根据解析结果创建一系列矩形由CRect对象指定矩形的大小和位置颜色值变量指定矩形的背景色其中一个字符串对象用于指定矩形的文本当另一个字符串对象包含“可读取”字符串时ULONGLONG变量记录文件要读取的起始位置UINT变量记录读取的长度。为每个矩形创建一个INFO结构对象并加入指针数组。在绘制时使用for循环绘制每个矩形。 程序为MFC对话框应用程序。
应用的全部代码 // 解析AVIDlg.h : 头文件
//#pragma once
#include Dlg1.h
#include Dlg2.h
#include Dlg3.h
#include afxwin.h
#include COp.h
#include afxcmn.h
#include MyEdit.hstruct INFO
{CString ID;CString item;ULONGLONG STAR;UINT LEN;CRect* pRect NULL;COLORREF color;
};struct LINE
{CPoint star;CPoint end;CString pos;
};typedef struct _avimainheader {DWORD dwMicroSecPerFrame;DWORD dwMaxBytesPerSec;DWORD dwPaddingGranularity;DWORD dwFlags;DWORD dwTotalFrames;DWORD dwInitialFrames;DWORD dwStreams;DWORD dwSuggestedBufferSize;DWORD dwWidth;DWORD dwHeight;DWORD dwReserved[4];
} AVIMAINHEADER;struct strh_struct {char fccType[4];char fccHandler[4];DWORD dwFlags;WORD wPriority;WORD wLanguage;DWORD dwInitialFrames;DWORD dwScale;DWORD dwRate;DWORD dwStart;DWORD dwLength;DWORD dwSuggestedBufferSize;DWORD dwQuality;DWORD dwSampleSize;struct {short int left;short int top;short int right;short int bottom;} rcFrame;
};class C解析AVIDlg : public CDialogEx
{
// 构造
public:C解析AVIDlg(CWnd* pParent NULL); // 标准构造函数// 对话框数据
#ifdef AFX_DESIGN_TIMEenum { IDD IDD_AVI_DIALOG };
#endifprotected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持// 实现
protected:HICON m_hIcon;virtual BOOL OnInitDialog();afx_msg void OnPaint();afx_msg HCURSOR OnQueryDragIcon();DECLARE_MESSAGE_MAP()
public:CDlg1 dlg1;CDlg2 dlg2;CDlg3 dlg3;CBrush brush1;CFont font1;CStatic sta1;CStatic sta2;CStatic sta3;CMyEdit richedit1;CMyEdit richedit2;afx_msg void OnBnClickedOk();afx_msg BOOL OnEraseBkgnd(CDC* pDC);afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);int HEIGHT, WIDTH;void MySetPos();//定位控件CObArray ar;CObArray arLine;CFile F;CString Path;//打开的AVI文件路径CString Name;COLORREF BkColor RGB(255, 193, 132);//背景色void SetDlg2Size(int w, int h);CString FormatString(ULONGLONG ull);void AryDeleteAll();afx_msg void On32771();//打开AVI文件afx_msg void On32772();//退出程序afx_msg void On32773();//最小化窗口afx_msg void On32774();//保存到bmp图片afx_msg void On32776();//黄色背景afx_msg void On32777();//白色背景afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);afx_msg BOOL OnMouseWheel(UINT nFlags, short zDelta, CPoint pt);afx_msg void OnDestroy();BOOL ParsingIx(ULONGLONG star, UINT len);BOOL ParsingIdx1(ULONGLONG star, UINT len);BOOL ParsingX(ULONGLONG star, UINT len);afx_msg void On32778();afx_msg void On32783();afx_msg void On32784();afx_msg void On32785();afx_msg void On32786();
}; // 解析AVIDlg.cpp : 实现文件
//#include stdafx.h
#include 解析AVI.h
#include 解析AVIDlg.h
#include afxdialogex.h#ifdef _DEBUG
#define new DEBUG_NEW
#endifC解析AVIDlg::C解析AVIDlg(CWnd* pParent /*NULL*/): CDialogEx(IDD_AVI_DIALOG, pParent)
{m_hIcon AfxGetApp()-LoadIcon(IDI_ICON1);brush1.CreateSolidBrush(RGB(49, 49, 49));font1.CreatePointFont(100, L微软雅黑);
}void C解析AVIDlg::DoDataExchange(CDataExchange* pDX)
{CDialogEx::DoDataExchange(pDX);DDX_Control(pDX, IDC_STA1, sta1);DDX_Control(pDX, IDC_STA2, sta2);DDX_Control(pDX, IDC_STA3, sta3);DDX_Control(pDX, IDC_RICHEDIT21, richedit1);DDX_Control(pDX, IDC_RICHEDIT22, richedit2);
}BEGIN_MESSAGE_MAP(C解析AVIDlg, CDialogEx)ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDOK, C解析AVIDlg::OnBnClickedOk)ON_WM_ERASEBKGND()ON_WM_CREATE()ON_COMMAND(ID_32771, C解析AVIDlg::On32771)ON_COMMAND(ID_32772, C解析AVIDlg::On32772)ON_COMMAND(ID_32773, C解析AVIDlg::On32773)ON_WM_CTLCOLOR()ON_WM_MOUSEWHEEL()ON_COMMAND(ID_32774, C解析AVIDlg::On32774)ON_WM_DESTROY()ON_COMMAND(ID_32776, C解析AVIDlg::On32776)ON_COMMAND(ID_32777, C解析AVIDlg::On32777)ON_COMMAND(ID_32778, C解析AVIDlg::On32778)ON_COMMAND(ID_32783, C解析AVIDlg::On32783)ON_COMMAND(ID_32784, C解析AVIDlg::On32784)ON_COMMAND(ID_32785, C解析AVIDlg::On32785)ON_COMMAND(ID_32786, C解析AVIDlg::On32786)
END_MESSAGE_MAP()BOOL C解析AVIDlg::OnInitDialog()
{CDialogEx::OnInitDialog();SetIcon(m_hIcon, TRUE); SetIcon(m_hIcon, FALSE); CRect rect;SystemParametersInfo(SPI_GETWORKAREA, 0, (PVOID)rect, 0);//获取工作区大小DWORD style GetExStyle();//获取对话框扩展样式if (style WS_EX_CLIENTEDGE)//如果对话框包含WS_EX_CLIENTEDGE样式{CalcWindowRect(rect, CWnd::adjustOutside);//计算带边框的对话框窗口大小}else//如果对话框不包含WS_EX_CLIENTEDGE样式{CalcWindowRect(rect, CWnd::adjustBorder);//计算带边框的对话框窗口大小}MoveWindow(rect);//设置对话框的大小SetWindowText(L解析AVI);MySetPos();//定位控件sta1.SetFont(font1); sta2.SetFont(font1); sta3.SetFont(font1); sta1.SetWindowText(LAVI文件名);CRect RichRect;richedit1.GetRect(RichRect); RichRect.DeflateRect(10, 2, 2, 2); richedit1.SetRect(RichRect);richedit2.GetRect(RichRect); RichRect.DeflateRect(10, 2, 2, 2); richedit2.SetRect(RichRect);richedit1.SetBackgroundColor(FALSE, RGB(100, 100, 100));richedit2.SetBackgroundColor(FALSE, RGB(100, 100, 100));CHARFORMAT2 cf;cf.cbSize sizeof(CHARFORMAT2);cf.dwMask CFM_FACE | CFM_SIZE | CFM_COLOR | CFM_WEIGHT | CFM_CHARSET;wcsncpy_s(cf.szFaceName, LF_FACESIZE, _T(微软雅黑), LF_FACESIZE);//设置字体名称为微软雅黑cf.yHeight 9 * 20;//设置字体大小cf.crTextColor RGB(240, 240, 240);//设置字体颜色cf.bCharSet GB2312_CHARSET;//设置中文字符集cf.wWeight 400;//设置字体粗细为正常cf.dwEffects 0;richedit1.SetDefaultCharFormat(cf);//设置RichEdit编辑控件默认字符格式CHARFORMAT2 cf2;cf2.cbSize sizeof(CHARFORMAT2);cf2.dwMask CFM_FACE | CFM_SIZE | CFM_COLOR | CFM_WEIGHT | CFM_CHARSET;wcsncpy_s(cf2.szFaceName, LF_FACESIZE, _T(宋体), LF_FACESIZE);//设置字体名称cf2.yHeight 9 * 20;//设置字体大小cf2.crTextColor RGB(240, 240, 240);//设置字体颜色cf2.bCharSet GB2312_CHARSET;//设置中文字符集cf2.wWeight 400;//设置字体粗细为正常cf2.dwEffects 0;richedit2.SetDefaultCharFormat(cf2);return TRUE;
}void C解析AVIDlg::OnPaint()
{if (IsIconic()){CPaintDC dc(this); SendMessage(WM_ICONERASEBKGND, reinterpret_castWPARAM(dc.GetSafeHdc()), 0);int cxIcon GetSystemMetrics(SM_CXICON);int cyIcon GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(rect);int x (rect.Width() - cxIcon 1) / 2;int y (rect.Height() - cyIcon 1) / 2;dc.DrawIcon(x, y, m_hIcon);}else{CDialogEx::OnPaint();}
}HCURSOR C解析AVIDlg::OnQueryDragIcon()
{return static_castHCURSOR(m_hIcon);
}void C解析AVIDlg::OnBnClickedOk()
{
}BOOL C解析AVIDlg::OnEraseBkgnd(CDC* pDC)
{CRect rect;GetClientRect(rect);pDC-FillSolidRect(rect, RGB(49,49,49));CRect r1, r2, r3;dlg1.GetWindowRect(r1); ScreenToClient(r1); r1.InflateRect(1, 1);richedit1.GetWindowRect(r2); ScreenToClient(r2); r2.InflateRect(1, 1);richedit2.GetWindowRect(r3); ScreenToClient(r3); r3.InflateRect(1, 1);pDC-FrameRect(r1, CBrush(RGB(130, 130, 130)));pDC-FrameRect(r2, CBrush(RGB(130, 130, 130)));pDC-FrameRect(r3, CBrush(RGB(130, 130, 130)));return TRUE;
// return CDialogEx::OnEraseBkgnd(pDC);
}int C解析AVIDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{if (CDialogEx::OnCreate(lpCreateStruct) -1)return -1;dlg1.Create(IDD_DIALOG1);dlg2.Create(IDD_DIALOG2, dlg1);return 0;
}void C解析AVIDlg::MySetPos()//定位控件
{CRect client;GetClientRect(client);dlg1.MoveWindow(10, 10, client.Width() * 6 / 10, client.Height()-20);CRect dlg1_rect;dlg1.GetWindowRect(dlg1_rect); ScreenToClient(dlg1_rect);HEIGHT dlg1_rect.Height(); WIDTH dlg1_rect.Width();sta1.MoveWindow(dlg1_rect.right 10, 10, client.Width() - dlg1_rect.right - 20, 20);sta2.MoveWindow(dlg1_rect.right 10, 40, client.Width() - dlg1_rect.right - 20, 20);int h client.Height() / 2;richedit1.MoveWindow(dlg1_rect.right 10, 70, client.Width() - dlg1_rect.right - 20, h-70);sta3.MoveWindow(dlg1_rect.right 10, h10, client.Width() - dlg1_rect.right - 20, 20);richedit2.MoveWindow(dlg1_rect.right 10, h40, client.Width() - dlg1_rect.right - 20, h - 50);CRect rect;dlg1.GetClientRect(rect);dlg2.MoveWindow(rect);dlg2.GetClientRect(dlg2.dlg2_rect);dlg1.SetScrollRange(SB_VERT, 0, 0, TRUE);//设置垂直滚动条的滚动范围0dlg1.SetScrollRange(SB_HORZ, 0, 0, TRUE);//设置水平滚动条的滚动范围0
}void C解析AVIDlg::On32771()//打开AVI文件
{AryDeleteAll();//删除信息数组中所有项CFileDialog FD(TRUE, NULL, NULL, OFN_FILEMUSTEXIST | OFN_HIDEREADONLY, LAVI文件|*.avi|所有文件|*.*||);if (FD.DoModal() ! IDOK)return;Path FD.GetPathName();Name FD.GetFileTitle();SetWindowText(Path); sta1.SetWindowText(Path);if (!F.Open(Path, CFile::modeRead)){MessageBox(L打开文件失败); F.Close(); return;}ULONGLONG LEN F.GetLength();//文件的大小CPoint point Read_RIFF_Chunk(CPoint(36,10));
Agan:char ch[5]; ch[4] 0; DWORD mSize; F.Read(ch, 4);F.Read(mSize, 4);if ((CString)ch LLIST){F.Read(ch, 4);if ((CString)ch Lhdrl){point Read_hdrl_LIST(point);}else{point Read_X_LIST(point);}}else{if ((CString)ch LRIFF){point Read_RIFF_AVIX(point);}else{point Read_X(point);}}if (F.GetPosition() LEN)goto Agan;LINE* pLine new LINE();pLine-star CPoint(point.x, point.y-1);pLine-end CPoint(970, point.y - 1);pLine-pos FormatString(LEN) L字节;arLine.Add((CObArray*)pLine);SetDlg2Size(1070, point.y 40);dlg2.RedrawWindow();F.Close();
}CString C解析AVIDlg::FormatString(ULONGLONG ull)//加入分隔符,
{CString out;out.Format(L%I64u, ull);int len out.GetLength();int nu (len - 1) / 3;for (int i 0; i nu; i){out.Insert(len - (i 1) * 3, L,);}return out;
}void C解析AVIDlg::AryDeleteAll()//删除信息数组中所有项
{int Count ar.GetCount();for (int i 0; i Count; i){INFO* pInfo (INFO*)ar.GetAt(i);delete pInfo-pRect;delete pInfo;}ar.RemoveAll();int LineCount arLine.GetCount();for (int i 0; i LineCount; i){LINE* pLine (LINE*)arLine.GetAt(i);delete pLine;}arLine.RemoveAll();
}void C解析AVIDlg::On32772()//退出程序
{EndDialog(1);
}void C解析AVIDlg::On32773()//最小化窗口
{ShowWindow(SW_MINIMIZE);
}HBRUSH C解析AVIDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{HBRUSH hbr CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);if (pWnd-GetDlgCtrlID() IDC_STA1 || pWnd-GetDlgCtrlID() IDC_STA2 || pWnd-GetDlgCtrlID() IDC_STA3){pDC-SetBkColor(RGB(49, 49, 49)); pDC-SetTextColor(RGB(190, 190, 190));return brush1;}return hbr;
}BOOL C解析AVIDlg::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt)
{int Min, Max;dlg1.GetScrollRange(SB_VERT, Min, Max);int pos dlg1.GetScrollPos(SB_VERT);pos pos - zDelta;if (pos Min)pos Min;if (pos Max)pos Max;dlg1.SetScrollPos(SB_VERT, pos);dlg2.MoveWindow(0, - pos, dlg2.dlg2_rect.Width(), dlg2.dlg2_rect.Height());return CDialogEx::OnMouseWheel(nFlags, zDelta, pt);
}void C解析AVIDlg::SetDlg2Size(int w, int h)
{CRect rect;dlg1.GetClientRect(rect);HEIGHT rect.Height(); WIDTH rect.Width();if (w WIDTH)WIDTH w;if (h HEIGHT)HEIGHT h;dlg2.MoveWindow(0, 0, WIDTH, HEIGHT);int wdlg1 rect.Width(); int hdlg1 rect.Height();dlg1.SetScrollRange(SB_VERT, 0, HEIGHT - hdlg1, TRUE);//设置垂直滚动条的滚动范围dlg1.SetScrollRange(SB_HORZ, 0, WIDTH - wdlg1, TRUE);//设置水平滚动条的滚动范围dlg2.GetClientRect(dlg2.dlg2_rect);
}void C解析AVIDlg::On32774()//保存到bmp图片
{if (Name.IsEmpty())return;CRect rc;dlg2.GetClientRect(rc);CDC MemDC;MemDC.CreateCompatibleDC(NULL);CBitmap bmp;bmp.CreateBitmap(rc.Width(), rc.Height(), 1, 32, NULL);MemDC.SelectObject(bmp);MemDC.SelectObject(dlg2.font1);MemDC.FillSolidRect(rc, BkColor);int Count ar.GetCount();for (int i 0; i Count; i){INFO* pInfo (INFO*)ar.GetAt(i);MemDC.FillSolidRect(pInfo-pRect, pInfo-color);MemDC.DrawText(pInfo-item, pInfo-pRect, DT_CENTER);MemDC.FrameRect(pInfo-pRect, CBrush(RGB(0, 0, 0)));}MemDC.SetBkMode(TRANSPARENT);int LineCount arLine.GetCount();for (int i 0; i LineCount; i){LINE* pLine (LINE*)arLine.GetAt(i);MemDC.MoveTo(pLine-star);MemDC.LineTo(pLine-end);MemDC.TextOut(pLine-end.x 2, pLine-end.y - 7, pLine-pos);}BITMAPINFOHEADER Hdr;Hdr.biSize sizeof(BITMAPINFOHEADER);Hdr.biWidth rc.Width();Hdr.biHeight rc.Height();Hdr.biPlanes 1;Hdr.biBitCount 32;Hdr.biCompression BI_RGB;Hdr.biSizeImage rc.Width() * rc.Height() * 4;Hdr.biXPelsPerMeter 0;Hdr.biYPelsPerMeter 0;Hdr.biClrUsed 0;Hdr.biClrImportant 0;BYTE* lpData (BYTE*)(LPVOID)GlobalAlloc(GMEM_FIXED | GMEM_ZEROINIT, rc.Width() * rc.Height() * 4);GetDIBits(MemDC.m_hDC, (HBITMAP)bmp, 0, rc.Height(), lpData, (BITMAPINFO*)Hdr, DIB_RGB_COLORS);BITMAPFILEHEADER Fhdr;Fhdr.bfType ((WORD)(M 8) | B);Fhdr.bfSize sizeof(BITMAPFILEHEADER) sizeof(BITMAPINFOHEADER) rc.Width() * rc.Height() * 4;//整个文件的大小Fhdr.bfReserved1 0;Fhdr.bfReserved2 0;Fhdr.bfOffBits sizeof(BITMAPFILEHEADER) sizeof(BITMAPINFOHEADER);//从文件开头到图像数据的偏移量CFile F;F.Open(NameL.bmp, CFile::modeCreate | CFile::modeWrite);F.Write(Fhdr, sizeof(Fhdr));//写位图文件头F.Write(Hdr, sizeof(Hdr));//写位图信息F.Write(lpData, rc.Width() * rc.Height() * 4);//写图像数据F.Close();GlobalFree(lpData);
}void C解析AVIDlg::OnDestroy()
{CDialogEx::OnDestroy();AryDeleteAll();
}void C解析AVIDlg::On32776()//黄色背景
{BkColor RGB(255, 193, 132); dlg2.RedrawWindow();
}void C解析AVIDlg::On32777()//白色背景
{BkColor RGB(255, 255, 255); dlg2.RedrawWindow();
}BOOL C解析AVIDlg::ParsingIx(ULONGLONG star, UINT len)
{F.Open(Path, CFile::modeRead);F.Seek(star, CFile::begin);CString item;char fcc[5]; fcc[4] 0;F.Read(fcc, 4);DWORD cb;F.Read(cb, 4);WORD wLongsPerEntry;F.Read(wLongsPerEntry, 2);BYTE bIndexSubType;F.Read(bIndexSubType, 1);BYTE bIndexType;F.Read(bIndexType, 1);DWORD nEntriesInUse;F.Read(nEntriesInUse, 4);char dwChunkId[5]; dwChunkId[4] 0;F.Read(dwChunkId, 4);LONGLONG qwBaseOffset;F.Read(qwBaseOffset, 8);DWORD dwReserved;F.Read(dwReserved, 4);if (bIndexSubType ! 0){F.Close(); return FALSE;}item.Format(L标准索引块\r\nFOURCC \t%s//块标识\r\nDWORD \t%u//块大小\r\nWORD \t\t%d//条目的DWORD大小\r\nBYTE \t\t%d//必须为0\r\nBYTE \t\t%d//必须为AVI_INDEX_OF_CHUNKS\r\nDWORD \t%u//条目数\r\nDWORD \t%s//流标识\r\nLONGLONG \t%I64d//基本偏移量\r\nDWORD \t%u//保留\r\n共%u条目\r\n序号\t\t偏移量\t\t大小\r\n,(CString)fcc, cb, wLongsPerEntry, bIndexSubType, bIndexType, nEntriesInUse,(CString)dwChunkId, qwBaseOffset, dwReserved, nEntriesInUse);for (DWORD i 0; i nEntriesInUse; i){DWORD dwOffset; DWORD dwSize;F.Read(dwOffset, 4); F.Read(dwSize, 4);dwSize 0x7fffffff;CString Nu, Offset_str, Size_str;Nu.Format(L%u\t\t, i 1); Offset_str.Format(L%u, dwOffset); Size_str.Format(L\t\t%u, dwSize);item Nu Offset_str Size_str L\r\n;}richedit1.SetWindowText(item);F.Seek(star, CFile::begin);CString ss, item2;BYTE pB[32];UINT L len; int i 0;while (L 32){F.Read(pB, 32);ss.Format(L%0*d %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X\r\n, 8, i * 32, 2, pB[0], 2, pB[1], 2, pB[2], 2, pB[3], 2, pB[4], 2, pB[5], 2, pB[6], 2, pB[7], 2, pB[8], 2, pB[9], 2, pB[10], 2, pB[11], 2, pB[12], 2, pB[13], 2, pB[14], 2, pB[15], 2, pB[16], 2, pB[17], 2, pB[18], 2, pB[19], 2, pB[20], 2, pB[21], 2, pB[22], 2, pB[23], 2, pB[24], 2, pB[25], 2, pB[26], 2, pB[27], 2, pB[28], 2, pB[29], 2, pB[30], 2, pB[31]);item2 ss;L - 32; i;}F.Read(pB, L);ss.Format(L%0*d , 8, i * 32);item2 ss;for (UINT i 0; i L; i){if ((i 1) % 8){ss.Format(L%0*X , 2, pB[i]);}else{ss.Format(L%0*X , 2, pB[i]);}item2 ss;}richedit2.SetWindowText(item2);F.Close();return TRUE;
}BOOL C解析AVIDlg::ParsingIdx1(ULONGLONG star, UINT len)
{F.Open(Path, CFile::modeRead);F.Seek(star, CFile::begin);CString item;char fcc[5]; fcc[4] 0; DWORD flags, offset, size;for (UINT i 0; i len / 16; i){F.Read(fcc, 4); F.Read(flags, 4); F.Read(offset, 4); F.Read(size, 4); CString ss;ss.Format(L%s flags%u offset%u size%u\r\n,(CString)fcc,flags,offset,size);item ss;}richedit1.SetWindowText(item);F.Seek(star, CFile::begin);CString item2;BYTE pB[32];UINT L len; int i 0;while (L 32){F.Read(pB, 32);CString ss;ss.Format(L%0*d %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X\r\n, 8, i * 32, 2, pB[0], 2, pB[1], 2, pB[2], 2, pB[3], 2, pB[4], 2, pB[5], 2, pB[6], 2, pB[7], 2, pB[8], 2, pB[9], 2, pB[10], 2, pB[11], 2, pB[12], 2, pB[13], 2, pB[14], 2, pB[15], 2, pB[16], 2, pB[17], 2, pB[18], 2, pB[19], 2, pB[20], 2, pB[21], 2, pB[22], 2, pB[23], 2, pB[24], 2, pB[25], 2, pB[26], 2, pB[27], 2, pB[28], 2, pB[29], 2, pB[30], 2, pB[31]);item2 ss;L - 32; i;}F.Read(pB, L);for (UINT i 0; i L; i){CString ss;if ((i 1) % 8){ss.Format(L%0*X , 2, pB[i]);}else{ss.Format(L%0*X , 2, pB[i]);}item2 ss;}richedit2.SetWindowText(item2);F.Close();return TRUE;
}BOOL C解析AVIDlg::ParsingX(ULONGLONG star, UINT len)
{F.Open(Path, CFile::modeRead);CString ss, item2;BYTE pB[32];UINT L len; int i 0;while (L 32){F.Read(pB, 32);ss.Format(L%0*d %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X %0*X\r\n, 8, i * 32, 2, pB[0], 2, pB[1], 2, pB[2], 2, pB[3], 2, pB[4], 2, pB[5], 2, pB[6], 2, pB[7], 2, pB[8], 2, pB[9], 2, pB[10], 2, pB[11], 2, pB[12], 2, pB[13], 2, pB[14], 2, pB[15], 2, pB[16], 2, pB[17], 2, pB[18], 2, pB[19], 2, pB[20], 2, pB[21], 2, pB[22], 2, pB[23], 2, pB[24], 2, pB[25], 2, pB[26], 2, pB[27], 2, pB[28], 2, pB[29], 2, pB[30], 2, pB[31]);item2 ss;L - 32; i;}F.Read(pB, L);ss.Format(L%0*d , 8, i * 32);item2 ss;for (UINT i 0; i L; i){if ((i 1) % 8){ss.Format(L%0*X , 2, pB[i]);}else{ss.Format(L%0*X , 2, pB[i]);}item2 ss;}richedit2.SetWindowText(item2);F.Close();return TRUE;
}void C解析AVIDlg::On32778()//帮助
{if (dlg3.GetSafeHwnd() NULL){dlg3.Create(IDD_DIALOG3);}else{dlg3.ShowWindow(SW_SHOWNORMAL);}
}void C解析AVIDlg::On32783()//解析结果编辑框右键菜单-复制
{richedit1.Copy();
}void C解析AVIDlg::On32784()//解析结果编辑框右键菜单-全选
{richedit1.SetSel(0, -1);
}void C解析AVIDlg::On32785()//原始数据编辑框右键菜单-复制
{richedit2.Copy();
}void C解析AVIDlg::On32786()//原始数据编辑框右键菜单-全选
{richedit2.SetSel(0, -1);
}
#pragma onceCPoint Read_RIFF_Chunk(CPoint pt);CPoint Read_indx(CPoint pt);CPoint Read_hdrl_LIST(CPoint pt);CPoint Read_avih(CPoint pt);CPoint Read_strl_LIST(CPoint pt);CPoint Read_strh(CPoint pt, CString Format);CPoint Read_strf(CPoint pt, CString Format);CPoint Read_X(CPoint pt);CPoint Read_X_LIST(CPoint pt);CPoint Read_RIFF_AVIX(CPoint pt);#include stdafx.h
#include COp.h
#include 解析AVI.h
#include 解析AVIDlg.hCPoint Read_RIFF_Chunk(CPoint pt)
{C解析AVIDlg* pDlg (C解析AVIDlg*)theApp.m_pMainWnd;COLORREF ChunkColor RGB(255, 146, 101), Color RGB(220, 180, 180);LINE* pLine new LINE();pLine-star CPoint(pt.x, pt.y);pLine-end CPoint(970, pt.y);pLine-pos L0字节;pDlg-arLine.Add((CObArray*)pLine);char chRIFF[5]; chRIFF[4] 0;pDlg-F.Read(chRIFF, 4);//读取文件规范标识DWORD mSize;pDlg-F.Read(mSize, 4);//读取文件大小char chAVI[5]; chAVI[4] 0;pDlg-F.Read(chAVI, 4);//读取文件类型CRect rect(pt.x, pt.y, pt.x121, pt.y14);INFO* pChunk new INFO();pChunk-item LRIFF\r\n12字节;pChunk-pRect new CRect(); pChunk-pRect-CopyRect(rect);pChunk-color ChunkColor;pDlg-ar.Add((CObArray*)pChunk);INFO* pSize1 new INFO();pSize1-item L4字节;pSize1-pRect new CRect(); pSize1-pRect-CopyRect(rect); pSize1-pRect-OffsetRect(rect.Width() - 1, 0);pSize1-color Color;pDlg-ar.Add((CObArray*)pSize1);INFO* pSize2 new INFO();pSize2-item L4字节;pSize2-pRect new CRect(); pSize2-pRect-CopyRect(pSize1-pRect); pSize2-pRect-OffsetRect(0, rect.Height()-1);pSize2-color Color;pDlg-ar.Add((CObArray*)pSize2);INFO* pSize3 new INFO();pSize3-item L4字节;pSize3-pRect new CRect(); pSize3-pRect-CopyRect(pSize2-pRect); pSize3-pRect-OffsetRect(0, rect.Height() - 1);pSize3-color Color;pDlg-ar.Add((CObArray*)pSize3);INFO* pD1 new INFO();pD1-item (CString)chRIFF;pD1-pRect new CRect(); pD1-pRect-CopyRect(pSize1-pRect); pD1-pRect-OffsetRect(rect.Width() - 1, 0);pD1-color Color;pDlg-ar.Add((CObArray*)pD1);INFO* pD2 new INFO();pD2-item pDlg-FormatString(mSize);pD2-pRect new CRect(); pD2-pRect-CopyRect(pD1-pRect); pD2-pRect-OffsetRect(0, rect.Height() - 1);pD2-color Color;pDlg-ar.Add((CObArray*)pD2);INFO* pD3 new INFO();pD3-item (CString)chAVI;pD3-pRect new CRect(); pD3-pRect-CopyRect(pD2-pRect); pD3-pRect-OffsetRect(0, rect.Height() - 1);pD3-color Color;pDlg-ar.Add((CObArray*)pD3);pChunk-pRect-bottom pD3-pRect-bottom;return CPoint(pt.x, pChunk-pRect-bottom);
}CPoint Read_indx(CPoint pt)
{C解析AVIDlg* pDlg (C解析AVIDlg*)theApp.m_pMainWnd;COLORREF ChunkColor RGB(114, 141, 203), Color RGB(171, 184, 214);pDlg-F.Seek(-8, CFile::current);ULONGLONG uPos pDlg-F.GetPosition();LINE* pLine new LINE();pLine-star CPoint(pt.x, pt.y - 1);pLine-end CPoint(970, pt.y - 1);pLine-pos pDlg-FormatString(uPos) L字节;pDlg-arLine.Add((CObArray*)pLine);char ch[5]; ch[4] 0; DWORD mSize;pDlg-F.Read(ch, 4); pDlg-F.Read(mSize, 4);ULONGLONG End pDlg-F.GetPosition() mSize;WORD wLongsPerEntry;//每个条目所占DWORD个数pDlg-F.Read(wLongsPerEntry, 2);BYTE bIndexSubType;//索引类型0指向索引块1指向数据块8条目是真实数据pDlg-F.Read(bIndexSubType, 1);BYTE bIndexType;//索引类型0标准索引1场索引pDlg-F.Read(bIndexType, 1);DWORD nEntriesInUse;//条目数量pDlg-F.Read(nEntriesInUse, 4);char dwChunkId[5];//流的FOURCCdwChunkId[4] 0;pDlg-F.Read(dwChunkId, 4);DWORD Reserved[3];//保留pDlg-F.Read(Reserved, 12);CRect rect(pt.x, pt.y-1, pt.x 121, pt.y 14), rect2(pt.x 120*3, pt.y-1, pt.x 120*3 201, pt.y 14);INFO* pChunk new INFO();pChunk-item (CString)ch L\r\n pDlg-FormatString(8 mSize) L字节;pChunk-pRect new CRect(); pChunk-pRect-CopyRect(rect); pChunk-color ChunkColor;pDlg-ar.Add((CObArray*)pChunk);INFO* pXSize1 new INFO();pXSize1-item L4字节;pXSize1-pRect new CRect(); pXSize1-pRect-CopyRect(rect); pXSize1-pRect-OffsetRect(rect.Width() - 1, 0);pXSize1-color Color;pDlg-ar.Add((CObArray*)pXSize1);INFO* pXSize2 new INFO();pXSize2-item L4字节;pXSize2-pRect new CRect(); pXSize2-pRect-CopyRect(pXSize1-pRect); pXSize2-pRect-OffsetRect(0, rect.Height()-1);pXSize2-color Color;pDlg-ar.Add((CObArray*)pXSize2);INFO* pXSize3 new INFO();pXSize3-item L2字节;pXSize3-pRect new CRect(); pXSize3-pRect-CopyRect(pXSize2-pRect); pXSize3-pRect-OffsetRect(0, rect.Height() - 1);pXSize3-color Color;pDlg-ar.Add((CObArray*)pXSize3);INFO* pXSize4 new INFO();pXSize4-item L1字节;pXSize4-pRect new CRect(); pXSize4-pRect-CopyRect(pXSize3-pRect); pXSize4-pRect-OffsetRect(0, rect.Height() - 1);pXSize4-color Color;pDlg-ar.Add((CObArray*)pXSize4);INFO* pXSize5 new INFO();pXSize5-item L1字节;pXSize5-pRect new CRect(); pXSize5-pRect-CopyRect(pXSize4-pRect); pXSize5-pRect-OffsetRect(0, rect.Height() - 1);pXSize5-color Color;pDlg-ar.Add((CObArray*)pXSize5);INFO* pXSize6 new INFO();pXSize6-item L4字节;pXSize6-pRect new CRect(); pXSize6-pRect-CopyRect(pXSize5-pRect); pXSize6-pRect-OffsetRect(0, rect.Height() - 1);pXSize6-color Color;pDlg-ar.Add((CObArray*)pXSize6);INFO* pXSize7 new INFO();pXSize7-item L4字节;pXSize7-pRect new CRect(); pXSize7-pRect-CopyRect(pXSize6-pRect); pXSize7-pRect-OffsetRect(0, rect.Height() - 1);pXSize7-color Color;pDlg-ar.Add((CObArray*)pXSize7);INFO* pXSize8 new INFO();pXSize8-item L12字节;pXSize8-pRect new CRect(); pXSize8-pRect-CopyRect(pXSize7-pRect); pXSize8-pRect-OffsetRect(0, rect.Height() - 1);pXSize8-color Color;pDlg-ar.Add((CObArray*)pXSize8);INFO* pXDS1 new INFO();pXDS1-item (CString)ch;pXDS1-pRect new CRect(); pXDS1-pRect-CopyRect(pXSize1-pRect); pXDS1-pRect-OffsetRect(pXSize1-pRect-Width() - 1, 0);pXDS1-color Color;pDlg-ar.Add((CObArray*)pXDS1);INFO* pXDS2 new INFO();pXDS2-item pDlg-FormatString(mSize);pXDS2-pRect new CRect(); pXDS2-pRect-CopyRect(pXDS1-pRect); pXDS2-pRect-OffsetRect(0, rect.Height()-1);pXDS2-color Color;pDlg-ar.Add((CObArray*)pXDS2);INFO* pXDS3 new INFO();pXDS3-item pDlg-FormatString(wLongsPerEntry);pXDS3-pRect new CRect(); pXDS3-pRect-CopyRect(pXDS2-pRect); pXDS3-pRect-OffsetRect(0, rect.Height() - 1);pXDS3-color Color;pDlg-ar.Add((CObArray*)pXDS3);INFO* pXDS4 new INFO();pXDS4-item pDlg-FormatString(bIndexSubType);pXDS4-pRect new CRect(); pXDS4-pRect-CopyRect(pXDS3-pRect); pXDS4-pRect-OffsetRect(0, rect.Height() - 1);pXDS4-color Color;pDlg-ar.Add((CObArray*)pXDS4);INFO* pXDS5 new INFO();pXDS5-item pDlg-FormatString(bIndexType);pXDS5-pRect new CRect(); pXDS5-pRect-CopyRect(pXDS4-pRect); pXDS5-pRect-OffsetRect(0, rect.Height() - 1);pXDS5-color Color;pDlg-ar.Add((CObArray*)pXDS5);INFO* pXDS6 new INFO();pXDS6-item pDlg-FormatString(nEntriesInUse);pXDS6-pRect new CRect(); pXDS6-pRect-CopyRect(pXDS5-pRect); pXDS6-pRect-OffsetRect(0, rect.Height() - 1);pXDS6-color Color;pDlg-ar.Add((CObArray*)pXDS6);INFO* pXDS7 new INFO();pXDS7-item (CString)dwChunkId;pXDS7-pRect new CRect(); pXDS7-pRect-CopyRect(pXDS6-pRect); pXDS7-pRect-OffsetRect(0, rect.Height() - 1);pXDS7-color Color;pDlg-ar.Add((CObArray*)pXDS7);INFO* pXDS8 new INFO();CString ss; ss.Format(L{%u,%u,%u}, Reserved[0], Reserved[1], Reserved[2]);pXDS8-item ss;pXDS8-pRect new CRect(); pXDS8-pRect-CopyRect(pXDS7-pRect); pXDS8-pRect-OffsetRect(0, rect.Height() - 1);pXDS8-color Color;pDlg-ar.Add((CObArray*)pXDS8);INFO* pXM1 new INFO();pXM1-item L每个条目DWORD个数;pXM1-pRect new CRect(); pXM1-pRect-CopyRect(rect2); pXM1-pRect-OffsetRect(0, (rect2.Height() - 1) * 2);pXM1-color Color;pDlg-ar.Add((CObArray*)pXM1);INFO* pXM2 new INFO();if (bIndexSubType 0)pXM2-item L索引子类型指向索引块;if (bIndexSubType 1)pXM2-item L索引子类型指向数据块;if (bIndexSubType 8)pXM2-item L索引子类型条目是真实数据;pXM2-pRect new CRect(); pXM2-pRect-CopyRect(pXM1-pRect); pXM2-pRect-OffsetRect(0, rect2.Height() - 1);pXM2-color Color;pDlg-ar.Add((CObArray*)pXM2);INFO* pXM3 new INFO();if (bIndexType 0)pXM3-item L索引类型标准索引;if (bIndexType 1)pXM3-item L索引类型场索引类型;pXM3-pRect new CRect(); pXM3-pRect-CopyRect(pXM2-pRect); pXM3-pRect-OffsetRect(0, rect2.Height() - 1);pXM3-color Color;pDlg-ar.Add((CObArray*)pXM3);INFO* pXM4 new INFO();pXM4-item L条目数量;pXM4-pRect new CRect(); pXM4-pRect-CopyRect(pXM3-pRect); pXM4-pRect-OffsetRect(0, rect2.Height() - 1);pXM4-color Color;pDlg-ar.Add((CObArray*)pXM4);INFO* pXM5 new INFO();pXM5-item L流的FOURCC;pXM5-pRect new CRect(); pXM5-pRect-CopyRect(pXM4-pRect); pXM5-pRect-OffsetRect(0, rect2.Height() - 1);pXM5-color Color;pDlg-ar.Add((CObArray*)pXM5);INFO* pXM6 new INFO();pXM6-item LDWORD[3]保留;pXM6-pRect new CRect(); pXM6-pRect-CopyRect(pXM5-pRect); pXM6-pRect-OffsetRect(0, rect2.Height() - 1);pXM6-color Color;pDlg-ar.Add((CObArray*)pXM6);pChunk-pRect-bottom pXSize8-pRect-bottom;for (DWORD i 0; i nEntriesInUse; i){LONGLONG offset; DWORD size, dur; pDlg-F.Read(offset, 8); pDlg-F.Read(size, 4); pDlg-F.Read(dur, 4); CString item, offset_str, size_str, dur_str;offset_str pDlg-FormatString((ULONGLONG)offset); size_str pDlg-FormatString((ULONGLONG)size);dur_str pDlg-FormatString((ULONGLONG)dur);item.Format(L偏移量%s 大小%s 长度%s, offset_str, size_str, dur_str);INFO* pXSizeX new INFO();pXSizeX-item pDlg-FormatString(wLongsPerEntry*4) L字节;pXSizeX-pRect new CRect(); pXSizeX-pRect-CopyRect(pXSize8-pRect); pXSizeX-pRect-OffsetRect(0, (rect.Height() - 1)*(i1));pXSizeX-color Color;pDlg-ar.Add((CObArray*)pXSizeX);INFO* pXDSX new INFO();if (bIndexSubType 0)pXDSX-ID L可读取-指向索引块;if (bIndexSubType 1)pXDSX-ID L可读取-指向数据块; if (bIndexSubType 8)pXDSX-ID L可读取-条目是真实数据; pXDSX-item item;pXDSX-STAR offset;pXDSX-LEN size;pXDSX-pRect new CRect(); pXDSX-pRect-CopyRect(pXDS8-pRect); pXDSX-pRect-right pXM6-pRect-right; pXDSX-pRect-OffsetRect(0, (rect.Height() - 1)*(i1));pXDSX-color RGB(255, 150, 150);pDlg-ar.Add((CObArray*)pXDSX);pChunk-pRect-bottom pXSizeX-pRect-bottom;}ULONGLONG Last End - pDlg-F.GetPosition();if (Last 0){pDlg-F.Seek(End, CFile::begin);INFO* pX new INFO();pX-item pDlg-FormatString(Last) L字节;pX-pRect new CRect(); pX-pRect-CopyRect(rect); pX-pRect-OffsetRect(rect.Width() - 1, 0); pX-pRect-MoveToY(pChunk-pRect-bottom-1); pX-color Color;pDlg-ar.Add((CObArray*)pX);INFO* pXM new INFO();pXM-pRect new CRect(); pXM-pRect-CopyRect(pX-pRect); pXM-pRect-OffsetRect(pX-pRect-Width() - 1, 0);pXM-color Color;pDlg-ar.Add((CObArray*)pXM);pChunk-pRect-bottom pXM-pRect-bottom;}return CPoint(pt.x, pChunk-pRect-bottom);}CPoint Read_hdrl_LIST(CPoint pt)
{C解析AVIDlg* pDlg (C解析AVIDlg*)theApp.m_pMainWnd;COLORREF ChunkColor RGB(240, 121, 50),Color RGB(200, 200, 200);pDlg-F.Seek(-12, CFile::current);ULONGLONG uPos pDlg-F.GetPosition();LINE* pLine new LINE();pLine-star CPoint(pt.x, pt.y - 1);pLine-end CPoint(970, pt.y - 1);pLine-pos pDlg-FormatString(uPos) L字节;pDlg-arLine.Add((CObArray*)pLine);char ch[5]; ch[4] 0; DWORD mSize; char ch2[5]; ch2[4] 0;pDlg-F.Read(ch, 4); pDlg-F.Read(mSize, 4);ULONGLONG End pDlg-F.GetPosition() mSize;pDlg-F.Read(ch2, 4);CRect rect(pt.x, pt.y-1, pt.x 121, pt.y 14), rect1(pt.x 121 - 1, pt.y-1, pt.x 121 - 1 121, pt.y 14);INFO* phdrlListChunk new INFO();phdrlListChunk-item Lhdrl_LIST\r\n pDlg-FormatString(8 mSize) L字节;phdrlListChunk-pRect new CRect(); phdrlListChunk-pRect-CopyRect(rect); phdrlListChunk-color ChunkColor;pDlg-ar.Add((CObArray*)phdrlListChunk);INFO* pSize1 new INFO();pSize1-item L4字节;pSize1-pRect new CRect(); pSize1-pRect-CopyRect(rect1); pSize1-color Color;pDlg-ar.Add((CObArray*)pSize1);INFO* pSize2 new INFO();pSize2-item L4字节;pSize2-pRect new CRect(); pSize2-pRect-CopyRect(pSize1-pRect); pSize2-pRect-OffsetRect(0, rect1.Height()-1);pSize2-color Color;pDlg-ar.Add((CObArray*)pSize2);INFO* pSize3 new INFO();pSize3-item L4字节;pSize3-pRect new CRect(); pSize3-pRect-CopyRect(pSize2-pRect); pSize3-pRect-OffsetRect(0, rect1.Height() - 1);pSize3-color Color;pDlg-ar.Add((CObArray*)pSize3);INFO* pComment1 new INFO();pComment1-item LLIST;pComment1-pRect new CRect; pComment1-pRect-CopyRect(rect1); pComment1-pRect-OffsetRect(rect1.Width() - 1, 0);pComment1-color Color;pDlg-ar.Add((CObArray*)pComment1);INFO* pComment2 new INFO();pComment2-item pDlg-FormatString(mSize);pComment2-pRect new CRect; pComment2-pRect-CopyRect(pComment1-pRect); pComment2-pRect-OffsetRect(0, rect1.Height() - 1);pComment2-color Color;pDlg-ar.Add((CObArray*)pComment2);INFO* pComment3 new INFO();pComment3-item Lhdrl;pComment3-pRect new CRect(); pComment3-pRect-CopyRect(pComment2-pRect); pComment3-pRect-OffsetRect(0, rect1.Height() - 1);pComment3-color Color;pDlg-ar.Add((CObArray*)pComment3);CPoint point Read_avih(CPoint(pSize3-pRect-left, pSize3-pRect-bottom));Agan:pDlg-F.Read(ch, 4); pDlg-F.Read(mSize, 4);if ((CString)ch LLIST){pDlg-F.Read(ch, 4);if ((CString)ch Lstrl){point Read_strl_LIST(point);}else{point Read_X_LIST(point);}}else{point Read_X(point);}if (pDlg-F.GetPosition() End)goto Agan;if (pDlg-F.GetPosition() ! End){AfxMessageBox(L读取hdrl_LIST未能正确到末尾);pDlg-F.Seek(End, CFile::begin);}phdrlListChunk-pRect-bottom point.y;return CPoint(pt.x, point.y);
}CPoint Read_avih(CPoint pt)
{C解析AVIDlg* pDlg (C解析AVIDlg*)theApp.m_pMainWnd;COLORREF ChunkColor RGB(199, 167, 116), Color RGB(246, 225, 192);ULONGLONG uPos pDlg-F.GetPosition();CString pos_str; pos_str.Format(L%u字节, uPos);LINE* pLine new LINE();pLine-star CPoint(pt.x, pt.y-1);pLine-end CPoint(970, pt.y - 1);pLine-pos pos_str;pDlg-arLine.Add((CObArray*)pLine);char ch[5]; ch[4] 0; DWORD mSize; AVIMAINHEADER AviHeader;pDlg-F.Read(ch, 4);pDlg-F.Read(mSize, 4);pDlg-F.Read(AviHeader, mSize);CRect rect(pt.x, pt.y - 1, pt.x 121, pt.y 14), rectW(pt.x, pt.y - 1, pt.x 201 , pt.y 14);INFO* pavihCHUNK new INFO();pavihCHUNK-item Lavih\r\n pDlg-FormatString(8 mSize) L字节;pavihCHUNK-pRect new CRect(); pavihCHUNK-pRect-CopyRect(rect); pavihCHUNK-color ChunkColor;pDlg-ar.Add((CObArray*)pavihCHUNK);INFO* pavihSize1 new INFO();pavihSize1-item L4字节;pavihSize1-pRect new CRect(); pavihSize1-pRect-CopyRect(rect); pavihSize1-pRect-OffsetRect(rect.Width() - 1, 0);pavihSize1-color Color;pDlg-ar.Add((CObArray*)pavihSize1);INFO* pavihSize2 new INFO();pavihSize2-item L4字节;pavihSize2-pRect new CRect(); pavihSize2-pRect-CopyRect(pavihSize1-pRect); pavihSize2-pRect-OffsetRect(0, rect.Height() - 1);pavihSize2-color Color;pDlg-ar.Add((CObArray*)pavihSize2);INFO* pavihSize3 new INFO();pavihSize3-item L4字节;pavihSize3-pRect new CRect(); pavihSize3-pRect-CopyRect(pavihSize2-pRect); pavihSize3-pRect-OffsetRect(0, rect.Height() - 1);pavihSize3-color Color;pDlg-ar.Add((CObArray*)pavihSize3);INFO* pavihSize4 new INFO();pavihSize4-item L4字节;pavihSize4-pRect new CRect(); pavihSize4-pRect-CopyRect(pavihSize3-pRect); pavihSize4-pRect-OffsetRect(0, rect.Height() - 1);pavihSize4-color Color;pDlg-ar.Add((CObArray*)pavihSize4);INFO* pavihSize5 new INFO();pavihSize5-item L4字节;pavihSize5-pRect new CRect(); pavihSize5-pRect-CopyRect(pavihSize4-pRect); pavihSize5-pRect-OffsetRect(0, rect.Height() - 1);pavihSize5-color Color;pDlg-ar.Add((CObArray*)pavihSize5);INFO* pavihSize6 new INFO();pavihSize6-item L4字节;pavihSize6-pRect new CRect(); pavihSize6-pRect-CopyRect(pavihSize5-pRect); pavihSize6-pRect-OffsetRect(0, rect.Height() - 1);pavihSize6-color Color;pDlg-ar.Add((CObArray*)pavihSize6);INFO* pavihSize7 new INFO();pavihSize7-item L4字节;pavihSize7-pRect new CRect(); pavihSize7-pRect-CopyRect(pavihSize6-pRect); pavihSize7-pRect-OffsetRect(0, rect.Height() - 1);pavihSize7-color Color;pDlg-ar.Add((CObArray*)pavihSize7);INFO* pavihSize8 new INFO();pavihSize8-item L4字节;pavihSize8-pRect new CRect(); pavihSize8-pRect-CopyRect(pavihSize7-pRect); pavihSize8-pRect-OffsetRect(0, rect.Height() - 1);pavihSize8-color Color;pDlg-ar.Add((CObArray*)pavihSize8);INFO* pavihSize9 new INFO();pavihSize9-item L4字节;pavihSize9-pRect new CRect(); pavihSize9-pRect-CopyRect(pavihSize8-pRect); pavihSize9-pRect-OffsetRect(0, rect.Height() - 1);pavihSize9-color Color;pDlg-ar.Add((CObArray*)pavihSize9);INFO* pavihSize10 new INFO();pavihSize10-item L4字节;pavihSize10-pRect new CRect(); pavihSize10-pRect-CopyRect(pavihSize9-pRect); pavihSize10-pRect-OffsetRect(0, rect.Height() - 1);pavihSize10-color Color;pDlg-ar.Add((CObArray*)pavihSize10);INFO* pavihSize11 new INFO();pavihSize11-item L4字节;pavihSize11-pRect new CRect(); pavihSize11-pRect-CopyRect(pavihSize10-pRect); pavihSize11-pRect-OffsetRect(0, rect.Height() - 1);pavihSize11-color Color;pDlg-ar.Add((CObArray*)pavihSize11);INFO* pavihSize12 new INFO();pavihSize12-item L4字节;pavihSize12-pRect new CRect(); pavihSize12-pRect-CopyRect(pavihSize11-pRect); pavihSize12-pRect-OffsetRect(0, rect.Height() - 1);pavihSize12-color Color;pDlg-ar.Add((CObArray*)pavihSize12);INFO* pavihSize13 new INFO();pavihSize13-item L16字节;pavihSize13-pRect new CRect(); pavihSize13-pRect-CopyRect(pavihSize12-pRect); pavihSize13-pRect-OffsetRect(0, rect.Height() - 1);pavihSize13-color Color;pDlg-ar.Add((CObArray*)pavihSize13);INFO* pavihDes1 new INFO();pavihDes1-item Lavih;pavihDes1-pRect new CRect(); pavihDes1-pRect-CopyRect(rect); pavihDes1-pRect-OffsetRect((rect.Width() - 1)*2, 0);pavihDes1-color Color;pDlg-ar.Add((CObArray*)pavihDes1);INFO* pavihDes2 new INFO();pavihDes2-item pDlg-FormatString(mSize);pavihDes2-pRect new CRect(); pavihDes2-pRect-CopyRect(pavihDes1-pRect); pavihDes2-pRect-OffsetRect(0, rect.Height()-1);pavihDes2-color Color;pDlg-ar.Add((CObArray*)pavihDes2);INFO* pavihDes3 new INFO();pavihDes3-item pDlg-FormatString(AviHeader.dwMicroSecPerFrame);pavihDes3-pRect new CRect(); pavihDes3-pRect-CopyRect(pavihDes2-pRect); pavihDes3-pRect-OffsetRect(0, rect.Height() - 1);pavihDes3-color Color;pDlg-ar.Add((CObArray*)pavihDes3);INFO* pavihDes4 new INFO();pavihDes4-item pDlg-FormatString(AviHeader.dwMaxBytesPerSec);pavihDes4-pRect new CRect(); pavihDes4-pRect-CopyRect(pavihDes3-pRect); pavihDes4-pRect-OffsetRect(0, rect.Height() - 1);pavihDes4-color Color;pDlg-ar.Add((CObArray*)pavihDes4);INFO* pavihDes5 new INFO();pavihDes5-item pDlg-FormatString(AviHeader.dwPaddingGranularity);pavihDes5-pRect new CRect(); pavihDes5-pRect-CopyRect(pavihDes4-pRect); pavihDes5-pRect-OffsetRect(0, rect.Height() - 1);pavihDes5-color Color;pDlg-ar.Add((CObArray*)pavihDes5);INFO* pavihDes6 new INFO();pavihDes6-item pDlg-FormatString(AviHeader.dwFlags);pavihDes6-pRect new CRect(); pavihDes6-pRect-CopyRect(pavihDes5-pRect); pavihDes6-pRect-OffsetRect(0, rect.Height() - 1);pavihDes6-color Color;pDlg-ar.Add((CObArray*)pavihDes6);INFO* pavihDes7 new INFO();pavihDes7-item pDlg-FormatString(AviHeader.dwTotalFrames);pavihDes7-pRect new CRect(); pavihDes7-pRect-CopyRect(pavihDes6-pRect); pavihDes7-pRect-OffsetRect(0, rect.Height() - 1);pavihDes7-color Color;pDlg-ar.Add((CObArray*)pavihDes7);INFO* pavihDes8 new INFO();pavihDes8-item pDlg-FormatString(AviHeader.dwInitialFrames);pavihDes8-pRect new CRect(); pavihDes8-pRect-CopyRect(pavihDes7-pRect); pavihDes8-pRect-OffsetRect(0, rect.Height() - 1);pavihDes8-color Color;pDlg-ar.Add((CObArray*)pavihDes8);INFO* pavihDes9 new INFO();pavihDes9-item pDlg-FormatString(AviHeader.dwStreams);pavihDes9-pRect new CRect(); pavihDes9-pRect-CopyRect(pavihDes8-pRect); pavihDes9-pRect-OffsetRect(0, rect.Height() - 1);pavihDes9-color Color;pDlg-ar.Add((CObArray*)pavihDes9);INFO* pavihDes10 new INFO();pavihDes10-item pDlg-FormatString(AviHeader.dwSuggestedBufferSize);pavihDes10-pRect new CRect(); pavihDes10-pRect-CopyRect(pavihDes9-pRect); pavihDes10-pRect-OffsetRect(0, rect.Height() - 1);pavihDes10-color Color;pDlg-ar.Add((CObArray*)pavihDes10);INFO* pavihDes11 new INFO();pavihDes11-item pDlg-FormatString(AviHeader.dwWidth);pavihDes11-pRect new CRect(); pavihDes11-pRect-CopyRect(pavihDes10-pRect); pavihDes11-pRect-OffsetRect(0, rect.Height() - 1);pavihDes11-color Color;pDlg-ar.Add((CObArray*)pavihDes11);INFO* pavihDes12 new INFO();pavihDes12-item pDlg-FormatString(AviHeader.dwHeight);pavihDes12-pRect new CRect(); pavihDes12-pRect-CopyRect(pavihDes11-pRect); pavihDes12-pRect-OffsetRect(0, rect.Height() - 1);pavihDes12-color Color;pDlg-ar.Add((CObArray*)pavihDes12);INFO* pavihDes13 new INFO();pavihDes13-item.Format(L{%u,%u,%u,%u}, AviHeader.dwReserved[0], AviHeader.dwReserved[1], AviHeader.dwReserved[2], AviHeader.dwReserved[3]);pavihDes13-pRect new CRect(); pavihDes13-pRect-CopyRect(pavihDes12-pRect); pavihDes13-pRect-OffsetRect(0, rect.Height() - 1);pavihDes13-color Color;pDlg-ar.Add((CObArray*)pavihDes13);INFO* pavihSm1 new INFO();pavihSm1-item L帧持续时间单位微秒;pavihSm1-pRect new CRect(); pavihSm1-pRect-CopyRect(rectW); pavihSm1-pRect-OffsetRect((rect.Width() - 1)*3, (rect.Height()-1)*2);pavihSm1-color Color;pDlg-ar.Add((CObArray*)pavihSm1);INFO* pavihSm2 new INFO();pavihSm2-item L传输率;pavihSm2-pRect new CRect(); pavihSm2-pRect-CopyRect(pavihSm1-pRect); pavihSm2-pRect-OffsetRect(0, rect.Height() - 1);pavihSm2-color Color;pDlg-ar.Add((CObArray*)pavihSm2);INFO* pavihSm3 new INFO();pavihSm3-item L块对齐;pavihSm3-pRect new CRect(); pavihSm3-pRect-CopyRect(pavihSm2-pRect); pavihSm3-pRect-OffsetRect(0, rect.Height() - 1);pavihSm3-color Color;pDlg-ar.Add((CObArray*)pavihSm3);INFO* pavihSm4 new INFO();pavihSm4-item L文件属性;pavihSm4-pRect new CRect(); pavihSm4-pRect-CopyRect(pavihSm3-pRect); pavihSm4-pRect-OffsetRect(0, rect.Height() - 1);pavihSm4-color Color;pDlg-ar.Add((CObArray*)pavihSm4);INFO* pavihSm5 new INFO();pavihSm5-item L帧总数;pavihSm5-pRect new CRect(); pavihSm5-pRect-CopyRect(pavihSm4-pRect); pavihSm5-pRect-OffsetRect(0, rect.Height() - 1);pavihSm5-color Color;pDlg-ar.Add((CObArray*)pavihSm5);INFO* pavihSm6 new INFO();pavihSm6-item L开始播放前需要多少帧;pavihSm6-pRect new CRect(); pavihSm6-pRect-CopyRect(pavihSm5-pRect); pavihSm6-pRect-OffsetRect(0, rect.Height() - 1);pavihSm6-color Color;pDlg-ar.Add((CObArray*)pavihSm6);INFO* pavihSm7 new INFO();pavihSm7-item L流数量;pavihSm7-pRect new CRect(); pavihSm7-pRect-CopyRect(pavihSm6-pRect); pavihSm7-pRect-OffsetRect(0, rect.Height() - 1);pavihSm7-color Color;pDlg-ar.Add((CObArray*)pavihSm7);INFO* pavihSm8 new INFO();pavihSm8-item L建议的缓冲区的大小;pavihSm8-pRect new CRect(); pavihSm8-pRect-CopyRect(pavihSm7-pRect); pavihSm8-pRect-OffsetRect(0, rect.Height() - 1);pavihSm8-color Color;pDlg-ar.Add((CObArray*)pavihSm8);INFO* pavihSm9 new INFO();pavihSm9-item L图像的宽度;pavihSm9-pRect new CRect(); pavihSm9-pRect-CopyRect(pavihSm8-pRect); pavihSm9-pRect-OffsetRect(0, rect.Height() - 1);pavihSm9-color Color;pDlg-ar.Add((CObArray*)pavihSm9);INFO* pavihSm10 new INFO();pavihSm10-item L图像的高度;pavihSm10-pRect new CRect(); pavihSm10-pRect-CopyRect(pavihSm9-pRect); pavihSm10-pRect-OffsetRect(0, rect.Height() - 1);pavihSm10-color Color;pDlg-ar.Add((CObArray*)pavihSm10);INFO* pavihSm11 new INFO();pavihSm11-item LDWORD[4]保留;pavihSm11-pRect new CRect(); pavihSm11-pRect-CopyRect(pavihSm10-pRect); pavihSm11-pRect-OffsetRect(0, rect.Height() - 1);pavihSm11-color Color;pDlg-ar.Add((CObArray*)pavihSm11);CPoint point;point.x pt.x; point.y pavihSize13-pRect-bottom; pavihCHUNK-pRect-bottom pavihSize13-pRect-bottom;return point;
}CPoint Read_strl_LIST(CPoint pt)
{C解析AVIDlg* pDlg (C解析AVIDlg*)theApp.m_pMainWnd;COLORREF ChunkColor RGB(143, 172, 138), Color RGB(200, 200, 200);pDlg-F.Seek(-12, CFile::current);ULONGLONG uPos pDlg-F.GetPosition();LINE* pLine new LINE();pLine-star CPoint(pt.x, pt.y - 1);pLine-end CPoint(970, pt.y - 1);pLine-pos pDlg-FormatString(uPos) L字节;pDlg-arLine.Add((CObArray*)pLine);char ch[5]; ch[4] 0; DWORD mSize; char ch2[5]; ch2[4] 0;pDlg-F.Read(ch, 4); pDlg-F.Read(mSize, 4); ULONGLONG End pDlg-F.GetPosition() mSize;pDlg-F.Read(ch2, 4);CRect rect(pt.x, pt.y-1, pt.x 121, pt.y 14), rect1(pt.x 121 - 1, pt.y-1, pt.x 121 - 1 121, pt.y 14);INFO* pstrl_LISTCHUNK new INFO();pstrl_LISTCHUNK-item Lstrl_LIST\r\n pDlg-FormatString(8 mSize) L字节;pstrl_LISTCHUNK-pRect new CRect(); pstrl_LISTCHUNK-pRect-CopyRect(rect); pstrl_LISTCHUNK-color ChunkColor;pDlg-ar.Add((CObArray*)pstrl_LISTCHUNK);INFO* pMSize1 new INFO();pMSize1-item L4字节;pMSize1-pRect new CRect(); pMSize1-pRect-CopyRect(rect1); pMSize1-color Color;pDlg-ar.Add((CObArray*)pMSize1);INFO* pMSize2 new INFO();pMSize2-item L4字节;pMSize2-pRect new CRect(); pMSize2-pRect-CopyRect(pMSize1-pRect); pMSize2-pRect-OffsetRect(0, rect1.Height()-1);pMSize2-color Color;pDlg-ar.Add((CObArray*)pMSize2);INFO* pMSize3 new INFO();pMSize3-item L4字节;pMSize3-pRect new CRect(); pMSize3-pRect-CopyRect(pMSize2-pRect); pMSize3-pRect-OffsetRect(0, rect1.Height() - 1);pMSize3-color Color;pDlg-ar.Add((CObArray*)pMSize3);INFO* pSM1 new INFO();pSM1-item LLIST;pSM1-pRect new CRect(); pSM1-pRect-CopyRect(pMSize1-pRect); pSM1-pRect-OffsetRect(rect1.Width() - 1, 0);pSM1-color Color;pDlg-ar.Add((CObArray*)pSM1);INFO* pSM2 new INFO();pSM2-item pDlg-FormatString(mSize);pSM2-pRect new CRect(); pSM2-pRect-CopyRect(pSM1-pRect); pSM2-pRect-OffsetRect(0, 14);pSM2-color Color;pDlg-ar.Add((CObArray*)pSM2);INFO* pSM3 new INFO();pSM3-item Lstrl;pSM3-pRect new CRect(); pSM3-pRect-CopyRect(pSM2-pRect); pSM3-pRect-OffsetRect(0, 14);pSM3-color Color;pDlg-ar.Add((CObArray*)pSM3);CString Format;CPoint point Read_strh(CPoint(pt.x, pSM3-pRect-bottom), Format);point Read_strf(point, Format);if(pDlg-F.GetPosition() End)goto END;Agan:pDlg-F.Read(ch, 4);pDlg-F.Read(mSize, 4);if ((CString)ch Lindx){point Read_indx(point); }else{point Read_X(point);}if (pDlg-F.GetPosition() End)goto Agan;pstrl_LISTCHUNK-pRect-bottom point.y;if (End ! pDlg-F.GetPosition()){MessageBox(0, L读取strl_LIST出错, L解析AVI, MB_OK);pDlg-F.Seek(End, CFile::begin);}
END:pstrl_LISTCHUNK-pRect-bottom point.y; point.x pt.x;return point;
}CPoint Read_strh(CPoint pt, CString Format)
{C解析AVIDlg* pDlg (C解析AVIDlg*)theApp.m_pMainWnd;COLORREF ChunkColor RGB(138, 144, 172), Color RGB(209, 213, 227);ULONGLONG uPos pDlg-F.GetPosition();LINE* pLine new LINE();pLine-star CPoint(pt.x 120, pt.y - 1);pLine-end CPoint(970, pt.y - 1);pLine-pos pDlg-FormatString(uPos) L字节;pDlg-arLine.Add((CObArray*)pLine);char ch[5]; ch[4] 0; DWORD mSize;pDlg-F.Read(ch, 4); pDlg-F.Read(mSize, 4);strh_struct strh;pDlg-F.Read(strh, mSize);CRect rect(pt.x 121 - 1, pt.y - 1, pt.x 121 - 1 121, pt.y 14), rectW(pt.x 121 - 1, pt.y - 1, pt.x 121 - 1 201, pt.y 14);INFO* pstrhCHUNK new INFO();pstrhCHUNK-item Lstrh\r\n pDlg-FormatString(8 mSize) L字节;pstrhCHUNK-pRect new CRect(); pstrhCHUNK-pRect-CopyRect(rect); pstrhCHUNK-color ChunkColor;pDlg-ar.Add((CObArray*)pstrhCHUNK);INFO* pstrhSize1 new INFO();pstrhSize1-item L4字节;pstrhSize1-pRect new CRect(); pstrhSize1-pRect-CopyRect(rect); pstrhSize1-pRect-OffsetRect(rect.Width()-1, 0);pstrhSize1-color Color;pDlg-ar.Add((CObArray*)pstrhSize1);INFO* pstrhSize2 new INFO();pstrhSize2-item L4字节;pstrhSize2-pRect new CRect(); pstrhSize2-pRect-CopyRect(pstrhSize1-pRect); pstrhSize2-pRect-OffsetRect(0, rect.Height()-1);pstrhSize2-color Color;pDlg-ar.Add((CObArray*)pstrhSize2);INFO* pstrhSize3 new INFO();pstrhSize3-item L4字节;pstrhSize3-pRect new CRect(); pstrhSize3-pRect-CopyRect(pstrhSize2-pRect); pstrhSize3-pRect-OffsetRect(0, rect.Height() - 1);pstrhSize3-color Color;pDlg-ar.Add((CObArray*)pstrhSize3);INFO* pstrhSize4 new INFO();pstrhSize4-item L4字节;pstrhSize4-pRect new CRect(); pstrhSize4-pRect-CopyRect(pstrhSize3-pRect); pstrhSize4-pRect-OffsetRect(0, rect.Height() - 1);pstrhSize4-color Color;pDlg-ar.Add((CObArray*)pstrhSize4);INFO* pstrhSize5 new INFO();pstrhSize5-item L4字节;pstrhSize5-pRect new CRect(); pstrhSize5-pRect-CopyRect(pstrhSize4-pRect); pstrhSize5-pRect-OffsetRect(0, rect.Height() - 1);pstrhSize5-color Color;pDlg-ar.Add((CObArray*)pstrhSize5);INFO* pstrhSize6 new INFO();pstrhSize6-item L2字节;pstrhSize6-pRect new CRect(); pstrhSize6-pRect-CopyRect(pstrhSize5-pRect); pstrhSize6-pRect-OffsetRect(0, rect.Height() - 1);pstrhSize6-color Color;pDlg-ar.Add((CObArray*)pstrhSize6);INFO* pstrhSize7 new INFO();pstrhSize7-item L2字节;pstrhSize7-pRect new CRect(); pstrhSize7-pRect-CopyRect(pstrhSize6-pRect); pstrhSize7-pRect-OffsetRect(0, rect.Height() - 1);pstrhSize7-color Color;pDlg-ar.Add((CObArray*)pstrhSize7);INFO* pstrhSize8 new INFO();pstrhSize8-item L4字节;pstrhSize8-pRect new CRect(); pstrhSize8-pRect-CopyRect(pstrhSize7-pRect); pstrhSize8-pRect-OffsetRect(0, rect.Height() - 1);pstrhSize8-color Color;pDlg-ar.Add((CObArray*)pstrhSize8);INFO* pstrhSize9 new INFO();pstrhSize9-item L4字节;pstrhSize9-pRect new CRect(); pstrhSize9-pRect-CopyRect(pstrhSize8-pRect); pstrhSize9-pRect-OffsetRect(0, rect.Height() - 1);pstrhSize9-color Color;pDlg-ar.Add((CObArray*)pstrhSize9);INFO* pstrhSize10 new INFO();pstrhSize10-item L4字节;pstrhSize10-pRect new CRect(); pstrhSize10-pRect-CopyRect(pstrhSize9-pRect); pstrhSize10-pRect-OffsetRect(0, rect.Height() - 1);pstrhSize10-color Color;pDlg-ar.Add((CObArray*)pstrhSize10);INFO* pstrhSize11 new INFO();pstrhSize11-item L4字节;pstrhSize11-pRect new CRect(); pstrhSize11-pRect-CopyRect(pstrhSize10-pRect); pstrhSize11-pRect-OffsetRect(0, rect.Height() - 1);pstrhSize11-color Color;pDlg-ar.Add((CObArray*)pstrhSize11);INFO* pstrhSize12 new INFO();pstrhSize12-item L4字节;pstrhSize12-pRect new CRect(); pstrhSize12-pRect-CopyRect(pstrhSize11-pRect); pstrhSize12-pRect-OffsetRect(0, rect.Height() - 1);pstrhSize12-color Color;pDlg-ar.Add((CObArray*)pstrhSize12);INFO* pstrhSize13 new INFO();pstrhSize13-item L4字节;pstrhSize13-pRect new CRect(); pstrhSize13-pRect-CopyRect(pstrhSize12-pRect); pstrhSize13-pRect-OffsetRect(0, rect.Height() - 1);pstrhSize13-color Color;pDlg-ar.Add((CObArray*)pstrhSize13);INFO* pstrhSize14 new INFO();pstrhSize14-item L4字节;pstrhSize14-pRect new CRect(); pstrhSize14-pRect-CopyRect(pstrhSize13-pRect); pstrhSize14-pRect-OffsetRect(0, rect.Height() - 1);pstrhSize14-color Color;pDlg-ar.Add((CObArray*)pstrhSize14);INFO* pstrhSize15 new INFO();pstrhSize15-item L4字节;pstrhSize15-pRect new CRect(); pstrhSize15-pRect-CopyRect(pstrhSize14-pRect); pstrhSize15-pRect-OffsetRect(0, rect.Height() - 1);pstrhSize15-color Color;pDlg-ar.Add((CObArray*)pstrhSize15);INFO* pstrhSize16 new INFO();pstrhSize16-item L8字节;pstrhSize16-pRect new CRect(); pstrhSize16-pRect-CopyRect(pstrhSize15-pRect); pstrhSize16-pRect-OffsetRect(0, rect.Height() - 1);pstrhSize16-color Color;pDlg-ar.Add((CObArray*)pstrhSize16);INFO* pstrhSM1 new INFO();pstrhSM1-item (CString)ch;pstrhSM1-pRect new CRect(); pstrhSM1-pRect-CopyRect(pstrhSize1-pRect); pstrhSM1-pRect-OffsetRect(rect.Width() - 1, 0);pstrhSM1-color Color;pDlg-ar.Add((CObArray*)pstrhSM1);INFO* pstrhSM2 new INFO();pstrhSM2-item pDlg-FormatString(mSize);pstrhSM2-pRect new CRect(); pstrhSM2-pRect-CopyRect(pstrhSM1-pRect); pstrhSM2-pRect-OffsetRect(0, rect.Height()-1);pstrhSM2-color Color;pDlg-ar.Add((CObArray*)pstrhSM2);INFO* pstrhSM3 new INFO();char ch2[5]; ch2[4] 0;CopyMemory(ch2, strh.fccType, 4);pstrhSM3-item Format (CString)ch2;pstrhSM3-pRect new CRect(); pstrhSM3-pRect-CopyRect(pstrhSM2-pRect); pstrhSM3-pRect-OffsetRect(0, rect.Height() - 1);pstrhSM3-color Color;pDlg-ar.Add((CObArray*)pstrhSM3);INFO* pstrhSM4 new INFO();if ((CString)ch2 Lvids){char ch3[5]; ch3[4] 0;CopyMemory(ch3, strh.fccHandler, 4);pstrhSM4-item (CString)ch3;}else {pstrhSM4-item.Format(L%u, (DWORD)strh.fccHandler);}pstrhSM4-pRect new CRect(); pstrhSM4-pRect-CopyRect(pstrhSM3-pRect); pstrhSM4-pRect-OffsetRect(0, rect.Height() - 1);pstrhSM4-color Color;pDlg-ar.Add((CObArray*)pstrhSM4);INFO* pstrhSM5 new INFO();pstrhSM5-item pDlg-FormatString(strh.dwFlags);pstrhSM5-pRect new CRect(); pstrhSM5-pRect-CopyRect(pstrhSM4-pRect); pstrhSM5-pRect-OffsetRect(0, rect.Height() - 1);pstrhSM5-color Color;pDlg-ar.Add((CObArray*)pstrhSM5);INFO* pstrhSM6 new INFO();pstrhSM6-item pDlg-FormatString(strh.wPriority);pstrhSM6-pRect new CRect(); pstrhSM6-pRect-CopyRect(pstrhSM5-pRect); pstrhSM6-pRect-OffsetRect(0, rect.Height() - 1);pstrhSM6-color Color;pDlg-ar.Add((CObArray*)pstrhSM6);INFO* pstrhSM7 new INFO();pstrhSM7-item pDlg-FormatString(strh.wLanguage);pstrhSM7-pRect new CRect(); pstrhSM7-pRect-CopyRect(pstrhSM6-pRect); pstrhSM7-pRect-OffsetRect(0, rect.Height() - 1);pstrhSM7-color Color;pDlg-ar.Add((CObArray*)pstrhSM7);INFO* pstrhSM8 new INFO();pstrhSM8-item pDlg-FormatString(strh.dwInitialFrames);pstrhSM8-pRect new CRect(); pstrhSM8-pRect-CopyRect(pstrhSM7-pRect); pstrhSM8-pRect-OffsetRect(0, rect.Height() - 1);pstrhSM8-color Color;pDlg-ar.Add((CObArray*)pstrhSM8);INFO* pstrhSM9 new INFO();pstrhSM9-item pDlg-FormatString(strh.dwScale);pstrhSM9-pRect new CRect(); pstrhSM9-pRect-CopyRect(pstrhSM8-pRect); pstrhSM9-pRect-OffsetRect(0, rect.Height() - 1);pstrhSM9-color Color;pDlg-ar.Add((CObArray*)pstrhSM9);INFO* pstrhSM10 new INFO();pstrhSM10-item pDlg-FormatString(strh.dwRate);pstrhSM10-pRect new CRect(); pstrhSM10-pRect-CopyRect(pstrhSM9-pRect); pstrhSM10-pRect-OffsetRect(0, rect.Height() - 1);pstrhSM10-color Color;pDlg-ar.Add((CObArray*)pstrhSM10);INFO* pstrhSM11 new INFO();pstrhSM11-item pDlg-FormatString(strh.dwStart);pstrhSM11-pRect new CRect(); pstrhSM11-pRect-CopyRect(pstrhSM10-pRect); pstrhSM11-pRect-OffsetRect(0, rect.Height() - 1);pstrhSM11-color Color;pDlg-ar.Add((CObArray*)pstrhSM11);INFO* pstrhSM12 new INFO();pstrhSM12-item pDlg-FormatString(strh.dwLength);pstrhSM12-pRect new CRect(); pstrhSM12-pRect-CopyRect(pstrhSM11-pRect); pstrhSM12-pRect-OffsetRect(0, rect.Height() - 1);pstrhSM12-color Color;pDlg-ar.Add((CObArray*)pstrhSM12);INFO* pstrhSM13 new INFO();pstrhSM13-item pDlg-FormatString(strh.dwSuggestedBufferSize);pstrhSM13-pRect new CRect(); pstrhSM13-pRect-CopyRect(pstrhSM12-pRect); pstrhSM13-pRect-OffsetRect(0, rect.Height() - 1);pstrhSM13-color Color;pDlg-ar.Add((CObArray*)pstrhSM13);INFO* pstrhSM14 new INFO();if (strh.dwQuality 4294967295)pstrhSM14-item L-1;elsepstrhSM14-item pDlg-FormatString(strh.dwQuality);pstrhSM14-pRect new CRect(); pstrhSM14-pRect-CopyRect(pstrhSM13-pRect); pstrhSM14-pRect-OffsetRect(0, rect.Height() - 1);pstrhSM14-color Color;pDlg-ar.Add((CObArray*)pstrhSM14);INFO* pstrhSM15 new INFO();pstrhSM15-item pDlg-FormatString(strh.dwSampleSize);pstrhSM15-pRect new CRect(); pstrhSM15-pRect-CopyRect(pstrhSM14-pRect); pstrhSM15-pRect-OffsetRect(0, rect.Height() - 1);pstrhSM15-color Color;pDlg-ar.Add((CObArray*)pstrhSM15);INFO* pstrhSM16 new INFO();pstrhSM16-item.Format(L{%d,%d,%d,%d}, strh.rcFrame.left, strh.rcFrame.top, strh.rcFrame.right, strh.rcFrame.bottom);pstrhSM16-pRect new CRect(); pstrhSM16-pRect-CopyRect(pstrhSM15-pRect); pstrhSM16-pRect-OffsetRect(0, rect.Height() - 1);pstrhSM16-color Color;pDlg-ar.Add((CObArray*)pstrhSM16);INFO* pstrhZS1 new INFO();if ((CString)ch2 Lvids)pstrhZS1-item L视频;else if ((CString)ch2 Lauds)pstrhZS1-item L音频;elsepstrhZS1-item (CString)ch2;pstrhZS1-pRect new CRect(); pstrhZS1-pRect-CopyRect(rectW); pstrhZS1-pRect-OffsetRect((rect.Width() - 1)*3, (rect.Height()-1)*2);pstrhZS1-color Color;pDlg-ar.Add((CObArray*)pstrhZS1);INFO* pstrhZS2 new INFO();pstrhZS2-item L处理器;pstrhZS2-pRect new CRect(); pstrhZS2-pRect-CopyRect(pstrhZS1-pRect); pstrhZS2-pRect-OffsetRect(0, rectW.Height()-1);pstrhZS2-color Color;pDlg-ar.Add((CObArray*)pstrhZS2);INFO* pstrhZS3 new INFO();pstrhZS3-item L标志;pstrhZS3-pRect new CRect(); pstrhZS3-pRect-CopyRect(pstrhZS2-pRect); pstrhZS3-pRect-OffsetRect(0, rectW.Height() - 1);pstrhZS3-color Color;pDlg-ar.Add((CObArray*)pstrhZS3);INFO* pstrhZS4 new INFO();pstrhZS4-item L流的优先级;pstrhZS4-pRect new CRect(); pstrhZS4-pRect-CopyRect(pstrhZS3-pRect); pstrhZS4-pRect-OffsetRect(0, rectW.Height() - 1);pstrhZS4-color Color;pDlg-ar.Add((CObArray*)pstrhZS4);INFO* pstrhZS5 new INFO();pstrhZS5-item L语言;pstrhZS5-pRect new CRect(); pstrhZS5-pRect-CopyRect(pstrhZS4-pRect); pstrhZS5-pRect-OffsetRect(0, rectW.Height() - 1);pstrhZS5-color Color;pDlg-ar.Add((CObArray*)pstrhZS5);INFO* pstrhZS6 new INFO();pstrhZS6-item L初始帧;pstrhZS6-pRect new CRect(); pstrhZS6-pRect-CopyRect(pstrhZS5-pRect); pstrhZS6-pRect-OffsetRect(0, rectW.Height() - 1);pstrhZS6-color Color;pDlg-ar.Add((CObArray*)pstrhZS6);INFO* pstrhZS7 new INFO();pstrhZS7-item L采样率分母;pstrhZS7-pRect new CRect(); pstrhZS7-pRect-CopyRect(pstrhZS6-pRect); pstrhZS7-pRect-OffsetRect(0, rectW.Height() - 1);pstrhZS7-color Color;pDlg-ar.Add((CObArray*)pstrhZS7);INFO* pstrhZS8 new INFO();pstrhZS8-item L采样率分子;pstrhZS8-pRect new CRect(); pstrhZS8-pRect-CopyRect(pstrhZS7-pRect); pstrhZS8-pRect-OffsetRect(0, rectW.Height() - 1);pstrhZS8-color Color;pDlg-ar.Add((CObArray*)pstrhZS8);INFO* pstrhZS9 new INFO();pstrhZS9-item L流的开始时间;pstrhZS9-pRect new CRect(); pstrhZS9-pRect-CopyRect(pstrhZS8-pRect); pstrhZS9-pRect-OffsetRect(0, rectW.Height() - 1);pstrhZS9-color Color;pDlg-ar.Add((CObArray*)pstrhZS9);INFO* pstrhZS10 new INFO();if ((CString)ch2 Lvids)pstrhZS10-item L流的长度以视频帧为单位;else if ((CString)ch2 Lauds)pstrhZS10-item L流的长度以音频帧为单位;pstrhZS10-pRect new CRect(); pstrhZS10-pRect-CopyRect(pstrhZS9-pRect); pstrhZS10-pRect-OffsetRect(0, rectW.Height() - 1);pstrhZS10-color Color;pDlg-ar.Add((CObArray*)pstrhZS10);INFO* pstrhZS11 new INFO();pstrhZS11-item L建议的缓冲区大小;pstrhZS11-pRect new CRect(); pstrhZS11-pRect-CopyRect(pstrhZS10-pRect); pstrhZS11-pRect-OffsetRect(0, rectW.Height() - 1);pstrhZS11-color Color;pDlg-ar.Add((CObArray*)pstrhZS11);INFO* pstrhZS12 new INFO();pstrhZS12-item L解压缩质量参数;pstrhZS12-pRect new CRect(); pstrhZS12-pRect-CopyRect(pstrhZS11-pRect); pstrhZS12-pRect-OffsetRect(0, rectW.Height() - 1);pstrhZS12-color Color;pDlg-ar.Add((CObArray*)pstrhZS12);INFO* pstrhZS13 new INFO();pstrhZS13-item L单个数据样本的大小;pstrhZS13-pRect new CRect(); pstrhZS13-pRect-CopyRect(pstrhZS12-pRect); pstrhZS13-pRect-OffsetRect(0, rectW.Height() - 1);pstrhZS13-color Color;pDlg-ar.Add((CObArray*)pstrhZS13);INFO* pstrhZS14 new INFO();pstrhZS14-item Lshort[4]目标矩形;pstrhZS14-pRect new CRect(); pstrhZS14-pRect-CopyRect(pstrhZS13-pRect); pstrhZS14-pRect-OffsetRect(0, rectW.Height() - 1);pstrhZS14-color Color;pDlg-ar.Add((CObArray*)pstrhZS14);CPoint point;point.x pt.x 121-1; point.y pstrhCHUNK-pRect-bottom pstrhZS14-pRect-bottom;return point;
}CPoint Read_strf(CPoint pt, CString Format)
{C解析AVIDlg* pDlg (C解析AVIDlg*)theApp.m_pMainWnd;COLORREF ChunkColor RGB(138, 169, 172), Color RGB(182, 199, 201);ULONGLONG uPos pDlg-F.GetPosition();LINE* pLine new LINE();pLine-star CPoint(pt.x 120, pt.y - 1);pLine-end CPoint(970, pt.y - 1);pLine-pos pDlg-FormatString(uPos) L字节;pDlg-arLine.Add((CObArray*)pLine);char chF[5]; chF[4] 0; DWORD mSize;pDlg-F.Read(chF, 4); pDlg-F.Read(mSize, 4);CRect rect(pt.x, pt.y-1, pt.x 121, pt.y 14), rectW(pt.x 121 - 1, pt.y-1, pt.x 121 - 1 201, pt.y 14);CPoint point;INFO* pstrfCHUNK new INFO();pstrfCHUNK-item (CString)chF L\r\n pDlg-FormatString(mSize 8) L字节;pstrfCHUNK-pRect new CRect(); pstrfCHUNK-pRect-CopyRect(rect); pstrfCHUNK-color ChunkColor;pDlg-ar.Add((CObArray*)pstrfCHUNK);INFO* pstrfSize1 new INFO();pstrfSize1-item L4字节;pstrfSize1-pRect new CRect(); pstrfSize1-pRect-CopyRect(rect); pstrfSize1-pRect-OffsetRect(rect.Width() - 1, 0);pstrfSize1-color Color;pDlg-ar.Add((CObArray*)pstrfSize1);INFO* pstrfSize2 new INFO();pstrfSize2-item L4字节;pstrfSize2-pRect new CRect(); pstrfSize2-pRect-CopyRect(pstrfSize1-pRect); pstrfSize2-pRect-OffsetRect(0, rect.Height() - 1);pstrfSize2-color Color;pDlg-ar.Add((CObArray*)pstrfSize2);INFO* pstrfDS1 new INFO();pstrfDS1-item (CString)chF;pstrfDS1-pRect new CRect(); pstrfDS1-pRect-CopyRect(pstrfSize1-pRect); pstrfDS1-pRect-OffsetRect(rect.Width() - 1, 0);pstrfDS1-color Color;pDlg-ar.Add((CObArray*)pstrfDS1);INFO* pstrfDS2 new INFO();pstrfDS2-item pDlg-FormatString(mSize);pstrfDS2-pRect new CRect(); pstrfDS2-pRect-CopyRect(pstrfDS1-pRect); pstrfDS2-pRect-OffsetRect(0, rect.Height() - 1);pstrfDS2-color Color;pDlg-ar.Add((CObArray*)pstrfDS2);if (Format Lvids){BITMAPINFOHEADER bh;pDlg-F.Read(bh, sizeof(BITMAPINFOHEADER)); pDlg-F.Seek(mSize - sizeof(BITMAPINFOHEADER),CFile::current);INFO* pstrfSize3 new INFO();pstrfSize3-item L4字节;pstrfSize3-pRect new CRect(); pstrfSize3-pRect-CopyRect(pstrfSize2-pRect); pstrfSize3-pRect-OffsetRect(0, rect.Height() - 1);pstrfSize3-color Color;pDlg-ar.Add((CObArray*)pstrfSize3);INFO* pstrfSize4 new INFO();pstrfSize4-item L4字节;pstrfSize4-pRect new CRect(); pstrfSize4-pRect-CopyRect(pstrfSize3-pRect); pstrfSize4-pRect-OffsetRect(0, rect.Height() - 1);pstrfSize4-color Color;pDlg-ar.Add((CObArray*)pstrfSize4);INFO* pstrfSize5 new INFO();pstrfSize5-item L4字节;pstrfSize5-pRect new CRect(); pstrfSize5-pRect-CopyRect(pstrfSize4-pRect); pstrfSize5-pRect-OffsetRect(0, rect.Height() - 1);pstrfSize5-color Color;pDlg-ar.Add((CObArray*)pstrfSize5);INFO* pstrfSize6 new INFO();pstrfSize6-item L2字节;pstrfSize6-pRect new CRect(); pstrfSize6-pRect-CopyRect(pstrfSize5-pRect); pstrfSize6-pRect-OffsetRect(0, rect.Height() - 1);pstrfSize6-color Color;pDlg-ar.Add((CObArray*)pstrfSize6);INFO* pstrfSize7 new INFO();pstrfSize7-item L2字节;pstrfSize7-pRect new CRect(); pstrfSize7-pRect-CopyRect(pstrfSize6-pRect); pstrfSize7-pRect-OffsetRect(0, rect.Height() - 1);pstrfSize7-color Color;pDlg-ar.Add((CObArray*)pstrfSize7);INFO* pstrfSize8 new INFO();pstrfSize8-item L4字节;pstrfSize8-pRect new CRect(); pstrfSize8-pRect-CopyRect(pstrfSize7-pRect); pstrfSize8-pRect-OffsetRect(0, rect.Height() - 1);pstrfSize8-color Color;pDlg-ar.Add((CObArray*)pstrfSize8);INFO* pstrfSize9 new INFO();pstrfSize9-item L4字节;pstrfSize9-pRect new CRect(); pstrfSize9-pRect-CopyRect(pstrfSize8-pRect); pstrfSize9-pRect-OffsetRect(0, rect.Height() - 1);pstrfSize9-color Color;pDlg-ar.Add((CObArray*)pstrfSize9);INFO* pstrfSize10 new INFO();pstrfSize10-item L4字节;pstrfSize10-pRect new CRect(); pstrfSize10-pRect-CopyRect(pstrfSize9-pRect); pstrfSize10-pRect-OffsetRect(0, rect.Height() - 1);pstrfSize10-color Color;pDlg-ar.Add((CObArray*)pstrfSize10);INFO* pstrfSize11 new INFO();pstrfSize11-item L4字节;pstrfSize11-pRect new CRect(); pstrfSize11-pRect-CopyRect(pstrfSize10-pRect); pstrfSize11-pRect-OffsetRect(0, rect.Height() - 1);pstrfSize11-color Color;pDlg-ar.Add((CObArray*)pstrfSize11);INFO* pstrfSize12 new INFO();pstrfSize12-item L4字节;pstrfSize12-pRect new CRect(); pstrfSize12-pRect-CopyRect(pstrfSize11-pRect); pstrfSize12-pRect-OffsetRect(0, rect.Height() - 1);pstrfSize12-color Color;pDlg-ar.Add((CObArray*)pstrfSize12);INFO* pstrfSize13 new INFO();pstrfSize13-item L4字节;pstrfSize13-pRect new CRect(); pstrfSize13-pRect-CopyRect(pstrfSize12-pRect); pstrfSize13-pRect-OffsetRect(0, rect.Height() - 1);pstrfSize13-color Color;pDlg-ar.Add((CObArray*)pstrfSize13);INFO* pstrfDS3 new INFO();pstrfDS3-item pDlg-FormatString(bh.biSize);pstrfDS3-pRect new CRect(); pstrfDS3-pRect-CopyRect(pstrfDS2-pRect); pstrfDS3-pRect-OffsetRect(0, rect.Height() - 1);pstrfDS3-color Color;pDlg-ar.Add((CObArray*)pstrfDS3);INFO* pstrfDS4 new INFO();pstrfDS4-item pDlg-FormatString(bh.biWidth);pstrfDS4-pRect new CRect(); pstrfDS4-pRect-CopyRect(pstrfDS3-pRect); pstrfDS4-pRect-OffsetRect(0, rect.Height() - 1);pstrfDS4-color Color;pDlg-ar.Add((CObArray*)pstrfDS4);INFO* pstrfDS5 new INFO();pstrfDS5-item pDlg-FormatString(bh.biHeight);pstrfDS5-pRect new CRect(); pstrfDS5-pRect-CopyRect(pstrfDS4-pRect); pstrfDS5-pRect-OffsetRect(0, rect.Height() - 1);pstrfDS5-color Color;pDlg-ar.Add((CObArray*)pstrfDS5);INFO* pstrfDS6 new INFO();pstrfDS6-item pDlg-FormatString(bh.biPlanes);pstrfDS6-pRect new CRect(); pstrfDS6-pRect-CopyRect(pstrfDS5-pRect); pstrfDS6-pRect-OffsetRect(0, rect.Height() - 1);pstrfDS6-color Color;pDlg-ar.Add((CObArray*)pstrfDS6);INFO* pstrfDS7 new INFO();pstrfDS7-item pDlg-FormatString(bh.biBitCount);pstrfDS7-pRect new CRect(); pstrfDS7-pRect-CopyRect(pstrfDS6-pRect); pstrfDS7-pRect-OffsetRect(0, rect.Height() - 1);pstrfDS7-color Color;pDlg-ar.Add((CObArray*)pstrfDS7);INFO* pstrfDS8 new INFO();char chCop[5]; chCop[4] 0;CopyMemory(chCop, bh.biCompression, 4);pstrfDS8-item (CString)chCop;pstrfDS8-pRect new CRect(); pstrfDS8-pRect-CopyRect(pstrfDS7-pRect); pstrfDS8-pRect-OffsetRect(0, rect.Height() - 1);pstrfDS8-color Color;pDlg-ar.Add((CObArray*)pstrfDS8);INFO* pstrfDS9 new INFO();pstrfDS9-item pDlg-FormatString(bh.biSizeImage);pstrfDS9-pRect new CRect(); pstrfDS9-pRect-CopyRect(pstrfDS8-pRect); pstrfDS9-pRect-OffsetRect(0, rect.Height() - 1);pstrfDS9-color Color;pDlg-ar.Add((CObArray*)pstrfDS9);INFO* pstrfDS10 new INFO();pstrfDS10-item pDlg-FormatString(bh.biXPelsPerMeter);pstrfDS10-pRect new CRect(); pstrfDS10-pRect-CopyRect(pstrfDS9-pRect); pstrfDS10-pRect-OffsetRect(0, rect.Height() - 1);pstrfDS10-color Color;pDlg-ar.Add((CObArray*)pstrfDS10);INFO* pstrfDS11 new INFO();pstrfDS11-item pDlg-FormatString(bh.biYPelsPerMeter);pstrfDS11-pRect new CRect(); pstrfDS11-pRect-CopyRect(pstrfDS10-pRect); pstrfDS11-pRect-OffsetRect(0, rect.Height() - 1);pstrfDS11-color Color;pDlg-ar.Add((CObArray*)pstrfDS11);INFO* pstrfDS12 new INFO();pstrfDS12-item pDlg-FormatString(bh.biClrUsed);pstrfDS12-pRect new CRect(); pstrfDS12-pRect-CopyRect(pstrfDS11-pRect); pstrfDS12-pRect-OffsetRect(0, rect.Height() - 1);pstrfDS12-color Color;pDlg-ar.Add((CObArray*)pstrfDS12);INFO* pstrfDS13 new INFO();pstrfDS13-item pDlg-FormatString(bh.biClrImportant);pstrfDS13-pRect new CRect(); pstrfDS13-pRect-CopyRect(pstrfDS12-pRect); pstrfDS13-pRect-OffsetRect(0, rect.Height() - 1);pstrfDS13-color Color;pDlg-ar.Add((CObArray*)pstrfDS13);INFO* pstrfMS1 new INFO();pstrfMS1-item L位图头大小;pstrfMS1-pRect new CRect(); pstrfMS1-pRect-CopyRect(rectW); pstrfMS1-pRect-MoveToXY(pstrfDS3-pRect-right - 1, pstrfDS3-pRect-top);pstrfMS1-color Color;pDlg-ar.Add((CObArray*)pstrfMS1);INFO* pstrfMS2 new INFO();pstrfMS2-item L位图的宽度;pstrfMS2-pRect new CRect(); pstrfMS2-pRect-CopyRect(pstrfMS1-pRect); pstrfMS2-pRect-OffsetRect(0, rect.Height() - 1);pstrfMS2-color Color;pDlg-ar.Add((CObArray*)pstrfMS2);INFO* pstrfMS3 new INFO();pstrfMS3-item L位图的高度;pstrfMS3-pRect new CRect(); pstrfMS3-pRect-CopyRect(pstrfMS2-pRect); pstrfMS3-pRect-OffsetRect(0, rect.Height() - 1);pstrfMS3-color Color;pDlg-ar.Add((CObArray*)pstrfMS3);INFO* pstrfMS4 new INFO();pstrfMS4-item L平面数;pstrfMS4-pRect new CRect(); pstrfMS4-pRect-CopyRect(pstrfMS3-pRect); pstrfMS4-pRect-OffsetRect(0, rect.Height() - 1);pstrfMS4-color Color;pDlg-ar.Add((CObArray*)pstrfMS4);INFO* pstrfMS5 new INFO();pstrfMS5-item L每个像素的位数;pstrfMS5-pRect new CRect(); pstrfMS5-pRect-CopyRect(pstrfMS4-pRect); pstrfMS5-pRect-OffsetRect(0, rect.Height() - 1);pstrfMS5-color Color;pDlg-ar.Add((CObArray*)pstrfMS5);INFO* pstrfMS6 new INFO();pstrfMS6-item L编码方式;pstrfMS6-pRect new CRect(); pstrfMS6-pRect-CopyRect(pstrfMS5-pRect); pstrfMS6-pRect-OffsetRect(0, rect.Height() - 1);pstrfMS6-color Color;pDlg-ar.Add((CObArray*)pstrfMS6);INFO* pstrfMS7 new INFO();pstrfMS7-item L图像大小;pstrfMS7-pRect new CRect(); pstrfMS7-pRect-CopyRect(pstrfMS6-pRect); pstrfMS7-pRect-OffsetRect(0, rect.Height() - 1);pstrfMS7-color Color;pDlg-ar.Add((CObArray*)pstrfMS7);INFO* pstrfMS8 new INFO();pstrfMS8-item L目标设备的水平分辨率;pstrfMS8-pRect new CRect(); pstrfMS8-pRect-CopyRect(pstrfMS7-pRect); pstrfMS8-pRect-OffsetRect(0, rect.Height() - 1);pstrfMS8-color Color;pDlg-ar.Add((CObArray*)pstrfMS8);INFO* pstrfMS9 new INFO();pstrfMS9-item L目标设备的垂直分辨率;pstrfMS9-pRect new CRect(); pstrfMS9-pRect-CopyRect(pstrfMS8-pRect); pstrfMS9-pRect-OffsetRect(0, rect.Height() - 1);pstrfMS9-color Color;pDlg-ar.Add((CObArray*)pstrfMS9);INFO* pstrfMS10 new INFO();pstrfMS10-item L颜色数量;pstrfMS10-pRect new CRect(); pstrfMS10-pRect-CopyRect(pstrfMS9-pRect); pstrfMS10-pRect-OffsetRect(0, rect.Height() - 1);pstrfMS10-color Color;pDlg-ar.Add((CObArray*)pstrfMS10);INFO* pstrfMS11 new INFO();pstrfMS11-item L重要颜色数量;pstrfMS11-pRect new CRect(); pstrfMS11-pRect-CopyRect(pstrfMS10-pRect); pstrfMS11-pRect-OffsetRect(0, rect.Height() - 1);pstrfMS11-color Color;pDlg-ar.Add((CObArray*)pstrfMS11);pstrfCHUNK-pRect-bottom pstrfMS11-pRect-bottom;point.x pt.x; point.y pstrfCHUNK-pRect-bottom;if (mSize sizeof(BITMAPINFOHEADER)){INFO* pM1 new INFO();pM1-item pDlg-FormatString(mSize - sizeof(BITMAPINFOHEADER)) L字节;pM1-pRect new CRect(); pM1-pRect-CopyRect(pstrfSize13-pRect); pM1-pRect-OffsetRect(0, pstrfSize13-pRect-Height() - 1);pM1-color Color;pDlg-ar.Add((CObArray*)pM1);INFO* pS1 new INFO();pS1-pRect new CRect(); pS1-pRect-CopyRect(pM1-pRect); pS1-pRect-OffsetRect(pM1-pRect-Width() - 1,0);pS1-color Color;pDlg-ar.Add((CObArray*)pS1);pstrfCHUNK-pRect-bottom pS1-pRect-bottom;point.x pt.x; point.y pstrfCHUNK-pRect-bottom;}}else if (Format auds){WORD wFormatTag;WORD nChannels;DWORD nSamplesPerSec;DWORD nAvgBytesPerSec;WORD nBlockAlign;WORD wBitsPerSample;pDlg-F.Read(wFormatTag, 2); pDlg-F.Read(nChannels, 2); pDlg-F.Read(nSamplesPerSec, 4); pDlg-F.Read(nAvgBytesPerSec, 4); pDlg-F.Read(nBlockAlign, 2); pDlg-F.Read(wBitsPerSample, 2);INFO* pstrfSize3 new INFO();pstrfSize3-item L2字节;pstrfSize3-pRect new CRect(); pstrfSize3-pRect-CopyRect(pstrfSize2-pRect); pstrfSize3-pRect-OffsetRect(0, rect.Height() - 1);pstrfSize3-color Color;pDlg-ar.Add((CObArray*)pstrfSize3);INFO* pstrfSize4 new INFO();pstrfSize4-item L2字节;pstrfSize4-pRect new CRect(); pstrfSize4-pRect-CopyRect(pstrfSize3-pRect); pstrfSize4-pRect-OffsetRect(0, rect.Height() - 1);pstrfSize4-color Color;pDlg-ar.Add((CObArray*)pstrfSize4);INFO* pstrfSize5 new INFO();pstrfSize5-item L4字节;pstrfSize5-pRect new CRect(); pstrfSize5-pRect-CopyRect(pstrfSize4-pRect); pstrfSize5-pRect-OffsetRect(0, rect.Height() - 1);pstrfSize5-color Color;pDlg-ar.Add((CObArray*)pstrfSize5);INFO* pstrfSize6 new INFO();pstrfSize6-item L4字节;pstrfSize6-pRect new CRect(); pstrfSize6-pRect-CopyRect(pstrfSize5-pRect); pstrfSize6-pRect-OffsetRect(0, rect.Height() - 1);pstrfSize6-color Color;pDlg-ar.Add((CObArray*)pstrfSize6);INFO* pstrfSize7 new INFO();pstrfSize7-item L2字节;pstrfSize7-pRect new CRect(); pstrfSize7-pRect-CopyRect(pstrfSize6-pRect); pstrfSize7-pRect-OffsetRect(0, rect.Height() - 1);pstrfSize7-color Color;pDlg-ar.Add((CObArray*)pstrfSize7);INFO* pstrfSize8 new INFO();pstrfSize8-item L2字节;pstrfSize8-pRect new CRect(); pstrfSize8-pRect-CopyRect(pstrfSize7-pRect); pstrfSize8-pRect-OffsetRect(0, rect.Height() - 1);pstrfSize8-color Color;pDlg-ar.Add((CObArray*)pstrfSize8);INFO* pstrfDS3 new INFO();pstrfDS3-item pDlg-FormatString(wFormatTag);pstrfDS3-pRect new CRect(); pstrfDS3-pRect-CopyRect(pstrfDS2-pRect); pstrfDS3-pRect-OffsetRect(0, rect.Height() - 1);pstrfDS3-color Color;pDlg-ar.Add((CObArray*)pstrfDS3);INFO* pstrfDS4 new INFO();pstrfDS4-item pDlg-FormatString(nChannels);pstrfDS4-pRect new CRect(); pstrfDS4-pRect-CopyRect(pstrfDS3-pRect); pstrfDS4-pRect-OffsetRect(0, rect.Height() - 1);pstrfDS4-color Color;pDlg-ar.Add((CObArray*)pstrfDS4);INFO* pstrfDS5 new INFO();pstrfDS5-item pDlg-FormatString(nSamplesPerSec);pstrfDS5-pRect new CRect(); pstrfDS5-pRect-CopyRect(pstrfDS4-pRect); pstrfDS5-pRect-OffsetRect(0, rect.Height() - 1);pstrfDS5-color Color;pDlg-ar.Add((CObArray*)pstrfDS5);INFO* pstrfDS6 new INFO();pstrfDS6-item pDlg-FormatString(nAvgBytesPerSec);pstrfDS6-pRect new CRect(); pstrfDS6-pRect-CopyRect(pstrfDS5-pRect); pstrfDS6-pRect-OffsetRect(0, rect.Height() - 1);pstrfDS6-color Color;pDlg-ar.Add((CObArray*)pstrfDS6);INFO* pstrfDS7 new INFO();pstrfDS7-item pDlg-FormatString(nBlockAlign);pstrfDS7-pRect new CRect(); pstrfDS7-pRect-CopyRect(pstrfDS6-pRect); pstrfDS7-pRect-OffsetRect(0, rect.Height() - 1);pstrfDS7-color Color;pDlg-ar.Add((CObArray*)pstrfDS7);INFO* pstrfDS8 new INFO();pstrfDS8-item pDlg-FormatString(wBitsPerSample);pstrfDS8-pRect new CRect(); pstrfDS8-pRect-CopyRect(pstrfDS7-pRect); pstrfDS8-pRect-OffsetRect(0, rect.Height() - 1);pstrfDS8-color Color;pDlg-ar.Add((CObArray*)pstrfDS8);INFO* pstrfM3 new INFO();pstrfM3-item L编码方式;pstrfM3-pRect new CRect(); pstrfM3-pRect-CopyRect(rectW); pstrfM3-pRect-MoveToXY(pstrfDS3-pRect-right - 1, pstrfDS3-pRect-top);pstrfM3-color Color;pDlg-ar.Add((CObArray*)pstrfM3);INFO* pstrfM4 new INFO();pstrfM4-item L声道数;pstrfM4-pRect new CRect(); pstrfM4-pRect-CopyRect(pstrfM3-pRect); pstrfM4-pRect-OffsetRect(0, rectW.Height() - 1);pstrfM4-color Color;pDlg-ar.Add((CObArray*)pstrfM4);INFO* pstrfM5 new INFO();pstrfM5-item L采样率;pstrfM5-pRect new CRect(); pstrfM5-pRect-CopyRect(pstrfM4-pRect); pstrfM5-pRect-OffsetRect(0, rectW.Height() - 1);pstrfM5-color Color;pDlg-ar.Add((CObArray*)pstrfM5);INFO* pstrfM6 new INFO();pstrfM6-item L传输率;pstrfM6-pRect new CRect(); pstrfM6-pRect-CopyRect(pstrfM5-pRect); pstrfM6-pRect-OffsetRect(0, rectW.Height() - 1);pstrfM6-color Color;pDlg-ar.Add((CObArray*)pstrfM6);INFO* pstrfM7 new INFO();pstrfM7-item L块对齐;pstrfM7-pRect new CRect(); pstrfM7-pRect-CopyRect(pstrfM6-pRect); pstrfM7-pRect-OffsetRect(0, rectW.Height() - 1);pstrfM7-color Color;pDlg-ar.Add((CObArray*)pstrfM7);INFO* pstrfM8 new INFO();pstrfM8-item L样本位数;pstrfM8-pRect new CRect(); pstrfM8-pRect-CopyRect(pstrfM7-pRect); pstrfM8-pRect-OffsetRect(0, rectW.Height() - 1);pstrfM8-color Color;pDlg-ar.Add((CObArray*)pstrfM8);pstrfCHUNK-pRect-bottom pstrfDS8-pRect-bottom;point.x pt.x; point.y pstrfCHUNK-pRect-bottom;if (mSize 16){WORD cbSize;pDlg-F.Read(cbSize, 2);if (mSize 18){INFO* pstrfSize9 new INFO();pstrfSize9-item L2字节;pstrfSize9-pRect new CRect(); pstrfSize9-pRect-CopyRect(pstrfSize8-pRect); pstrfSize9-pRect-OffsetRect(0, rect.Height() - 1);pstrfSize9-color Color;pDlg-ar.Add((CObArray*)pstrfSize9);INFO* pstrfDS9 new INFO();pstrfDS9-item pDlg-FormatString(cbSize);pstrfDS9-pRect new CRect(); pstrfDS9-pRect-CopyRect(pstrfDS8-pRect); pstrfDS9-pRect-OffsetRect(0, rect.Height() - 1);pstrfDS9-color Color;pDlg-ar.Add((CObArray*)pstrfDS9);INFO* pstrfM9 new INFO();pstrfM9-item L附加信息大小;pstrfM9-pRect new CRect(); pstrfM9-pRect-CopyRect(pstrfM8-pRect); pstrfM9-pRect-OffsetRect(0, rectW.Height() - 1);pstrfM9-color Color;pDlg-ar.Add((CObArray*)pstrfM9);pstrfCHUNK-pRect-bottom pstrfDS9-pRect-bottom;point.x pt.x; point.y pstrfCHUNK-pRect-bottom;}else{INFO* pstrfSize9 new INFO();pstrfSize9-item L2字节;pstrfSize9-pRect new CRect(); pstrfSize9-pRect-CopyRect(pstrfSize8-pRect); pstrfSize9-pRect-OffsetRect(0, rect.Height() - 1);pstrfSize9-color Color;pDlg-ar.Add((CObArray*)pstrfSize9);INFO* pstrfSize10 new INFO();pstrfSize10-item pDlg-FormatString(cbSize) L字节;pstrfSize10-pRect new CRect(); pstrfSize10-pRect-CopyRect(pstrfSize9-pRect); pstrfSize10-pRect-OffsetRect(0, rect.Height() - 1);pstrfSize10-color Color;pDlg-ar.Add((CObArray*)pstrfSize10);INFO* pstrfDS9 new INFO();pstrfDS9-item pDlg-FormatString(cbSize);pstrfDS9-pRect new CRect(); pstrfDS9-pRect-CopyRect(pstrfDS8-pRect); pstrfDS9-pRect-OffsetRect(0, rect.Height() - 1);pstrfDS9-color Color;pDlg-ar.Add((CObArray*)pstrfDS9);INFO* pstrfDS10 new INFO();BYTE* pS new BYTE[mSize - 18];pDlg-F.Read(pS, mSize - 18);CString ss L{, s;for (DWORD i 0; i mSize - 18; i){s.Format(L%d, pS[i]);if (i mSize - 19){ss s L};}else{ss s L,;}}delete[] pS;if (cbSize)pstrfDS10-item ss;elsepstrfDS10-item L;pstrfDS10-pRect new CRect(); pstrfDS10-pRect-CopyRect(rectW); pstrfDS10-pRect-MoveToXY(pstrfDS9-pRect-left, pstrfDS9-pRect-bottom - 1);pstrfDS10-color Color;pDlg-ar.Add((CObArray*)pstrfDS10);INFO* pstrfM9 new INFO();pstrfM9-item L附加信息大小;pstrfM9-pRect new CRect(); pstrfM9-pRect-CopyRect(pstrfM8-pRect); pstrfM9-pRect-OffsetRect(0, rectW.Height() - 1);pstrfM9-color Color;pDlg-ar.Add((CObArray*)pstrfM9);INFO* pstrfM10 new INFO();pstrfM10-item L附加信息;pstrfM10-pRect new CRect(); pstrfM10-pRect-CopyRect(CRect(pstrfDS10-pRect-right - 1, pstrfDS10-pRect-top, pstrfM9-pRect-right, pstrfDS10-pRect-bottom));pstrfM10-color Color;pDlg-ar.Add((CObArray*)pstrfM10);pstrfCHUNK-pRect-bottom pstrfDS10-pRect-bottom;point.x pt.x; point.y pstrfCHUNK-pRect-bottom;}}}return point;
}CPoint Read_X(CPoint pt)
{C解析AVIDlg* pDlg (C解析AVIDlg*)theApp.m_pMainWnd;COLORREF ChunkColor RGB(205, 149, 126), Color RGB(250, 201, 181);pDlg-F.Seek(-8, CFile::current);char ch[5]; ch[4] 0; DWORD mSize;pDlg-F.Read(ch, 4); pDlg-F.Read(mSize, 4); ULONGLONG uPos pDlg-F.GetPosition();pDlg-F.Seek(mSize, CFile::current);LINE* pLine new LINE();pLine-star CPoint(pt.x 120, pt.y - 1);pLine-end CPoint(970, pt.y - 1);pLine-pos pDlg-FormatString(uPos8) L字节;pDlg-arLine.Add((CObArray*)pLine);CRect rect(pt.x, pt.y - 1, pt.x 121, pt.y 14);INFO* pChunk new INFO();pChunk-item (CString)ch L\r\n pDlg-FormatString(mSize 8) L字节;pChunk-pRect new CRect(); pChunk-pRect-CopyRect(rect);pChunk-color ChunkColor;pDlg-ar.Add((CObArray*)pChunk);INFO* pSize1 new INFO();pSize1-item L4字节;pSize1-pRect new CRect(); pSize1-pRect-CopyRect(rect); pSize1-pRect-OffsetRect(rect.Width() - 1, 0);pSize1-color Color;pDlg-ar.Add((CObArray*)pSize1);INFO* pSize2 new INFO();pSize2-item L4字节;pSize2-pRect new CRect(); pSize2-pRect-CopyRect(pSize1-pRect); pSize2-pRect-OffsetRect(0,rect.Height()-1);pSize2-color Color;pDlg-ar.Add((CObArray*)pSize2);INFO* pSize3 new INFO();pSize3-item pDlg-FormatString(mSize) L字节;pSize3-pRect new CRect(); pSize3-pRect-CopyRect(pSize2-pRect); pSize3-pRect-OffsetRect(0, rect.Height() - 1);pSize3-color Color;pDlg-ar.Add((CObArray*)pSize3);INFO* pN1 new INFO();pN1-item (CString)ch;pN1-pRect new CRect(); pN1-pRect-CopyRect(pSize1-pRect); pN1-pRect-OffsetRect(pSize1-pRect-Width() - 1, 0);pN1-color Color;pDlg-ar.Add((CObArray*)pN1);INFO* pN2 new INFO();pN2-item pDlg-FormatString(mSize);pN2-pRect new CRect(); pN2-pRect-CopyRect(pN1-pRect); pN2-pRect-OffsetRect(0, rect.Height() - 1);pN2-color Color;pDlg-ar.Add((CObArray*)pN2);INFO* pN3 new INFO();if ((CString)ch Lidx1){pN3-ID L可读取-idx1;pN3-color RGB(255, 150, 150);pN3-STAR uPos;pN3-LEN mSize;}else if ((CString)ch Lvprp){pN3-ID L可读取-二进制;pN3-color RGB(255, 150, 150);pN3-STAR uPos;pN3-LEN mSize;}else{pN3-color Color;}pN3-pRect new CRect(); pN3-pRect-CopyRect(pN2-pRect); pN3-pRect-OffsetRect(0, rect.Height() - 1);pDlg-ar.Add((CObArray*)pN3);pChunk-pRect-bottom pN3-pRect-bottom;return CPoint(pt.x, pN3-pRect-bottom);
}CPoint Read_X_LIST(CPoint pt)
{C解析AVIDlg* pDlg (C解析AVIDlg*)theApp.m_pMainWnd;COLORREF ChunkColor RGB(153, 190, 190), Color RGB(202, 218, 218);pDlg-F.Seek(-12, CFile::current);ULONGLONG uPos pDlg-F.GetPosition();LINE* pLine new LINE();pLine-star CPoint(pt.x 120, pt.y - 1);pLine-end CPoint(970, pt.y - 1);pLine-pos pDlg-FormatString(uPos) L字节;pDlg-arLine.Add((CObArray*)pLine);char ch[5]; ch[4] 0; DWORD mSize; char ch2[5]; ch2[4] 0;pDlg-F.Read(ch, 4); pDlg-F.Read(mSize, 4); pDlg-F.Read(ch2, 4);pDlg-F.Seek(mSize-4, CFile::current);CRect rect(pt.x, pt.y - 1, pt.x 121, pt.y 14);INFO* pChunk new INFO();pChunk-item (CString)ch2 L_LIST\r\n pDlg-FormatString(mSize 8) L字节;pChunk-pRect new CRect(); pChunk-pRect-CopyRect(rect);pChunk-color ChunkColor;pDlg-ar.Add((CObArray*)pChunk);INFO* pSize1 new INFO();pSize1-item L4字节;pSize1-pRect new CRect(); pSize1-pRect-CopyRect(rect); pSize1-pRect-OffsetRect(rect.Width() - 1, 0);pSize1-color Color;pDlg-ar.Add((CObArray*)pSize1);INFO* pSize2 new INFO();pSize2-item L4字节;pSize2-pRect new CRect(); pSize2-pRect-CopyRect(pSize1-pRect); pSize2-pRect-OffsetRect(0, rect.Height() - 1);pSize2-color Color;pDlg-ar.Add((CObArray*)pSize2);INFO* pSize3 new INFO();pSize3-item L4字节;pSize3-pRect new CRect(); pSize3-pRect-CopyRect(pSize2-pRect); pSize3-pRect-OffsetRect(0, rect.Height() - 1);pSize3-color Color;pDlg-ar.Add((CObArray*)pSize3);INFO* pSize4 new INFO();pSize4-item pDlg-FormatString(mSize - 4) L字节;pSize4-pRect new CRect(); pSize4-pRect-CopyRect(pSize3-pRect); pSize4-pRect-OffsetRect(0, rect.Height() - 1);pSize4-color Color;pDlg-ar.Add((CObArray*)pSize4);INFO* pN1 new INFO();pN1-item (CString)ch;pN1-pRect new CRect(); pN1-pRect-CopyRect(pSize1-pRect); pN1-pRect-OffsetRect(pSize1-pRect-Width() - 1, 0);pN1-color Color;pDlg-ar.Add((CObArray*)pN1);INFO* pN2 new INFO();pN2-item pDlg-FormatString(mSize);pN2-pRect new CRect(); pN2-pRect-CopyRect(pN1-pRect); pN2-pRect-OffsetRect(0, rect.Height() - 1);pN2-color Color;pDlg-ar.Add((CObArray*)pN2);INFO* pN3 new INFO();pN3-item (CString)ch2;pN3-pRect new CRect(); pN3-pRect-CopyRect(pN2-pRect); pN3-pRect-OffsetRect(0, rect.Height() - 1);pN3-color Color;pDlg-ar.Add((CObArray*)pN3);INFO* pN4 new INFO();pN4-item L;pN4-pRect new CRect(); pN4-pRect-CopyRect(pN3-pRect); pN4-pRect-OffsetRect(0, rect.Height() - 1);pN4-color Color;pDlg-ar.Add((CObArray*)pN4);pChunk-pRect-bottom pN4-pRect-bottom;return CPoint(pt.x, pN4-pRect-bottom);
}CPoint Read_RIFF_AVIX(CPoint pt)
{C解析AVIDlg* pDlg (C解析AVIDlg*)theApp.m_pMainWnd;COLORREF ChunkColor RGB(255, 146, 101), Color RGB(200, 200, 200);COLORREF ChunkColor2 RGB(251, 198, 115), Color2 RGB(235, 221, 199);pDlg-F.Seek(-8, CFile::current);ULONGLONG uPos pDlg-F.GetPosition();LINE* pLine new LINE();pLine-star CPoint(pt.x 120, pt.y - 1);pLine-end CPoint(970, pt.y - 1);pLine-pos pDlg-FormatString(uPos) L字节;pDlg-arLine.Add((CObArray*)pLine);char chRIFF[5]; chRIFF[4] 0; DWORD mSize1; char chAVIX[5]; chAVIX[4] 0;pDlg-F.Read(chRIFF, 4); pDlg-F.Read(mSize1, 4); pDlg-F.Read(chAVIX, 4);uPos pDlg-F.GetPosition();char chLIST[5]; chLIST[4] 0; DWORD mSize2; char ch_movi[5]; ch_movi[4] 0;pDlg-F.Read(chLIST, 4); pDlg-F.Read(mSize2, 4); pDlg-F.Read(ch_movi, 4);pDlg-F.Seek(mSize2 - 4, CFile::current);CRect rect(pt.x, pt.y - 1, pt.x 121, pt.y 14);INFO* pChunk new INFO();pChunk-item (CString)chRIFF L_AVIX\r\n pDlg-FormatString(mSize1 8) L字节;pChunk-pRect new CRect(); pChunk-pRect-CopyRect(rect);pChunk-color RGB(255, 146, 101);pDlg-ar.Add((CObArray*)pChunk);INFO* pSize1 new INFO();pSize1-item L4字节;pSize1-pRect new CRect(); pSize1-pRect-CopyRect(rect); pSize1-pRect-OffsetRect(rect.Width() - 1, 0);pSize1-color Color;pDlg-ar.Add((CObArray*)pSize1);INFO* pSize2 new INFO();pSize2-item L4字节;pSize2-pRect new CRect(); pSize2-pRect-CopyRect(pSize1-pRect); pSize2-pRect-OffsetRect(0, rect.Height() - 1);pSize2-color Color;pDlg-ar.Add((CObArray*)pSize2);INFO* pSize3 new INFO();pSize3-item L4字节;pSize3-pRect new CRect(); pSize3-pRect-CopyRect(pSize2-pRect); pSize3-pRect-OffsetRect(0, rect.Height() - 1);pSize3-color Color;pDlg-ar.Add((CObArray*)pSize3);INFO* pN1 new INFO();pN1-item (CString)chRIFF;pN1-pRect new CRect(); pN1-pRect-CopyRect(pSize1-pRect); pN1-pRect-OffsetRect(pSize1-pRect-Width() - 1, 0);pN1-color Color;pDlg-ar.Add((CObArray*)pN1);INFO* pN2 new INFO();pN2-item pDlg-FormatString(mSize1);pN2-pRect new CRect(); pN2-pRect-CopyRect(pN1-pRect); pN2-pRect-OffsetRect(0, rect.Height() - 1);pN2-color Color;pDlg-ar.Add((CObArray*)pN2);INFO* pN3 new INFO();pN3-item (CString)chAVIX;pN3-pRect new CRect(); pN3-pRect-CopyRect(pN2-pRect); pN3-pRect-OffsetRect(0, rect.Height() - 1);pN3-color Color;pDlg-ar.Add((CObArray*)pN3);INFO* pMovi_LIST_CGUNK new INFO();pMovi_LIST_CGUNK-item (CString)ch_movi L_ (CString)chLIST L\r\n pDlg-FormatString(mSize2 8) L字节;pMovi_LIST_CGUNK-pRect new CRect(); pMovi_LIST_CGUNK-pRect-CopyRect(pSize3-pRect); pMovi_LIST_CGUNK-pRect-OffsetRect(0, pSize3-pRect-Height() - 1);pMovi_LIST_CGUNK-color ChunkColor2;pDlg-ar.Add((CObArray*)pMovi_LIST_CGUNK);LINE* pLine2 new LINE();pLine2-star CPoint(pMovi_LIST_CGUNK-pRect-right, pMovi_LIST_CGUNK-pRect-top);pLine2-end CPoint(970, pMovi_LIST_CGUNK-pRect-top);pLine2-pos pDlg-FormatString(uPos) L字节;pDlg-arLine.Add((CObArray*)pLine2);INFO* pMSize1 new INFO();pMSize1-item L4字节;pMSize1-pRect new CRect(); pMSize1-pRect-CopyRect(pN3-pRect); pMSize1-pRect-OffsetRect(0, rect.Height() - 1);;pMSize1-color Color2;pDlg-ar.Add((CObArray*)pMSize1);INFO* pMSize2 new INFO();pMSize2-item L4字节;pMSize2-pRect new CRect(); pMSize2-pRect-CopyRect(pMSize1-pRect); pMSize2-pRect-OffsetRect(0, rect.Height() - 1);pMSize2-color Color2;pDlg-ar.Add((CObArray*)pMSize2);INFO* pMSize3 new INFO();pMSize3-item L4字节;pMSize3-pRect new CRect(); pMSize3-pRect-CopyRect(pMSize2-pRect); pMSize3-pRect-OffsetRect(0, rect.Height() - 1);pMSize3-color Color2;pDlg-ar.Add((CObArray*)pMSize3);INFO* pMSize4 new INFO();pMSize4-item pDlg-FormatString(mSize2 - 4) L字节;pMSize4-pRect new CRect(); pMSize4-pRect-CopyRect(pMSize3-pRect); pMSize4-pRect-OffsetRect(0, rect.Height() - 1);pMSize4-color Color2;pDlg-ar.Add((CObArray*)pMSize4);INFO* pM1 new INFO();pM1-item (CString)chLIST;pM1-pRect new CRect(); pM1-pRect-CopyRect(pMSize1-pRect); pM1-pRect-OffsetRect(pMSize1-pRect-Width() - 1, 0);pM1-color Color2;pDlg-ar.Add((CObArray*)pM1);INFO* pM2 new INFO();pM2-item pDlg-FormatString(mSize2);pM2-pRect new CRect(); pM2-pRect-CopyRect(pM1-pRect); pM2-pRect-OffsetRect(0, rect.Height() - 1);pM2-color Color2;pDlg-ar.Add((CObArray*)pM2);INFO* pM3 new INFO();pM3-item (CString)ch_movi;pM3-pRect new CRect(); pM3-pRect-CopyRect(pM2-pRect); pM3-pRect-OffsetRect(0, rect.Height() - 1);pM3-color Color2;pDlg-ar.Add((CObArray*)pM3);INFO* pM4 new INFO();pM4-item L;pM4-pRect new CRect(); pM4-pRect-CopyRect(pM3-pRect); pM4-pRect-OffsetRect(0, rect.Height() - 1);pM4-color Color2;pDlg-ar.Add((CObArray*)pM4);pChunk-pRect-bottom pMovi_LIST_CGUNK-pRect-bottom pMSize4-pRect-bottom;return CPoint(pt.x, pChunk-pRect-bottom);
}
#pragma once// CDlg1 对话框class CDlg1 : public CDialogEx
{DECLARE_DYNAMIC(CDlg1)public:CDlg1(CWnd* pParent NULL); // 标准构造函数virtual ~CDlg1();// 对话框数据
#ifdef AFX_DESIGN_TIMEenum { IDD IDD_DIALOG1 };
#endifprotected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持DECLARE_MESSAGE_MAP()
public:afx_msg void OnBnClickedOk();virtual BOOL OnInitDialog();virtual BOOL PreTranslateMessage(MSG* pMsg);afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
};
// Dlg1.cpp : 实现文件
//#include stdafx.h
#include 解析AVI.h
#include Dlg1.h
#include afxdialogex.h
#include 解析AVIDlg.h// CDlg1 对话框IMPLEMENT_DYNAMIC(CDlg1, CDialogEx)CDlg1::CDlg1(CWnd* pParent /*NULL*/): CDialogEx(IDD_DIALOG1, pParent)
{}CDlg1::~CDlg1()
{
}void CDlg1::DoDataExchange(CDataExchange* pDX)
{CDialogEx::DoDataExchange(pDX);
}BEGIN_MESSAGE_MAP(CDlg1, CDialogEx)ON_BN_CLICKED(IDOK, CDlg1::OnBnClickedOk)ON_WM_VSCROLL()ON_WM_HSCROLL()
END_MESSAGE_MAP()void CDlg1::OnBnClickedOk()
{
}BOOL CDlg1::OnInitDialog()
{CDialogEx::OnInitDialog();return TRUE;
}BOOL CDlg1::PreTranslateMessage(MSG* pMsg)
{if (pMsg-message WM_KEYDOWN pMsg-wParam VK_ESCAPE)//防止ESC键关闭窗口return TRUE;return CDialogEx::PreTranslateMessage(pMsg);
}void CDlg1::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{C解析AVIDlg* pDlg (C解析AVIDlg*)theApp.m_pMainWnd;int Min, Max;GetScrollRange(SB_VERT, Min, Max);int pos;switch (nSBCode){case SB_LINEDOWN: //向下滚动行pos GetScrollPos(SB_VERT) 20;if (pos Max)pos Max;SetScrollPos(SB_VERT, pos);pDlg-dlg2.MoveWindow(0, -pos, pDlg-dlg2.dlg2_rect.Width(), pDlg-dlg2.dlg2_rect.Height());break;case SB_LINEUP: //向上滚动行pos GetScrollPos(SB_VERT) - 20;if (pos Min)pos Min;SetScrollPos(SB_VERT, pos);pDlg-dlg2.MoveWindow(0, -pos, pDlg-dlg2.dlg2_rect.Width(), pDlg-dlg2.dlg2_rect.Height());break;case SB_PAGEDOWN: //向下滚动页pos GetScrollPos(SB_VERT) 100;if (pos Max)pos Max;SetScrollPos(SB_VERT, pos);pDlg-dlg2.MoveWindow(0, -pos, pDlg-dlg2.dlg2_rect.Width(), pDlg-dlg2.dlg2_rect.Height());break;case SB_PAGEUP: //向上滚动页pos GetScrollPos(SB_VERT) - 100;if (pos Min)pos Min;SetScrollPos(SB_VERT, pos);pDlg-dlg2.MoveWindow(0, -pos, pDlg-dlg2.dlg2_rect.Width(), pDlg-dlg2.dlg2_rect.Height());break;case SB_THUMBTRACK: //拖动滑块SetScrollPos(SB_VERT, nPos);pos nPos;pDlg-dlg2.MoveWindow(0, -pos, pDlg-dlg2.dlg2_rect.Width(), pDlg-dlg2.dlg2_rect.Height());break;}CDialogEx::OnVScroll(nSBCode, nPos, pScrollBar);
}void CDlg1::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{C解析AVIDlg* pDlg (C解析AVIDlg*)theApp.m_pMainWnd;int Min, Max;GetScrollRange(SB_VERT, Min, Max);int pos;switch (nSBCode){case SB_LINELEFT: //向左滚动一行。pos GetScrollPos(SB_HORZ) - 20;if (pos Min)pos Min;SetScrollPos(SB_HORZ, pos);pDlg-dlg2.MoveWindow(-pos, 0, pDlg-dlg2.dlg2_rect.Width(), pDlg-dlg2.dlg2_rect.Height());break;case SB_LINERIGHT: //向右滚动一行。pos GetScrollPos(SB_HORZ) 20;if (pos Max)pos Max;SetScrollPos(SB_HORZ, pos);pDlg-dlg2.MoveWindow(-pos, 0, pDlg-dlg2.dlg2_rect.Width(), pDlg-dlg2.dlg2_rect.Height());break;case SB_PAGELEFT: //向左滚动一页。pos GetScrollPos(SB_HORZ) - 100;if (pos Min)pos Min;SetScrollPos(SB_HORZ, pos);pDlg-dlg2.MoveWindow(-pos, 0, pDlg-dlg2.dlg2_rect.Width(), pDlg-dlg2.dlg2_rect.Height());break;case SB_PAGERIGHT: //向右滚动一页。pos GetScrollPos(SB_HORZ) 100;if (pos Max)pos Max;SetScrollPos(SB_HORZ, pos);pDlg-dlg2.MoveWindow(-pos, 0, pDlg-dlg2.dlg2_rect.Width(), pDlg-dlg2.dlg2_rect.Height());break;case SB_THUMBTRACK: //拖动过程中多次传递该值。 nPos是滚动框已被拖动到的位置。SetScrollPos(SB_HORZ, nPos);pos nPos;pDlg-dlg2.MoveWindow(-pos, 0, pDlg-dlg2.dlg2_rect.Width(), pDlg-dlg2.dlg2_rect.Height());break;}CDialogEx::OnHScroll(nSBCode, nPos, pScrollBar);
}
#pragma once// CDlg2 对话框class CDlg2 : public CDialogEx
{DECLARE_DYNAMIC(CDlg2)public:CDlg2(CWnd* pParent NULL); // 标准构造函数virtual ~CDlg2();// 对话框数据
#ifdef AFX_DESIGN_TIMEenum { IDD IDD_DIALOG2 };
#endifprotected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持DECLARE_MESSAGE_MAP()
public:afx_msg void OnBnClickedOk();CFont font1;CRect dlg2_rect;afx_msg BOOL OnEraseBkgnd(CDC* pDC);virtual BOOL OnInitDialog();afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
};
// Dlg2.cpp : 实现文件
//#include stdafx.h
#include 解析AVI.h
#include Dlg2.h
#include afxdialogex.h
#include 解析AVIDlg.h// CDlg2 对话框IMPLEMENT_DYNAMIC(CDlg2, CDialogEx)CDlg2::CDlg2(CWnd* pParent /*NULL*/): CDialogEx(IDD_DIALOG2, pParent)
{font1.CreatePointFont(80, L微软雅黑);
}CDlg2::~CDlg2()
{
}void CDlg2::DoDataExchange(CDataExchange* pDX)
{CDialogEx::DoDataExchange(pDX);
}BEGIN_MESSAGE_MAP(CDlg2, CDialogEx)ON_BN_CLICKED(IDOK, CDlg2::OnBnClickedOk)ON_WM_ERASEBKGND()ON_WM_LBUTTONDOWN()
END_MESSAGE_MAP()void CDlg2::OnBnClickedOk()
{
}BOOL CDlg2::OnEraseBkgnd(CDC* pDC)
{C解析AVIDlg* pDlg (C解析AVIDlg*)theApp.m_pMainWnd;CRect rect;GetClientRect(rect);pDC-FillSolidRect(rect, pDlg-BkColor);pDC-SelectObject(font1);int Count pDlg-ar.GetCount();for (int i 0; i Count; i){INFO* pInfo (INFO*)pDlg-ar.GetAt(i);pDC-FillSolidRect(pInfo-pRect, pInfo-color);pDC-DrawText(pInfo-item, pInfo-pRect, DT_CENTER);pDC-FrameRect(pInfo-pRect, CBrush(RGB(0, 0, 0)));}pDC-SetBkMode(TRANSPARENT);int LineCount pDlg-arLine.GetCount();for (int i 0; i LineCount; i){LINE* pLine (LINE*)pDlg-arLine.GetAt(i);pDC-MoveTo(pLine-star);pDC-LineTo(pLine-end);pDC-TextOut(pLine-end.x2, pLine-end.y - 7, pLine-pos);}return TRUE;
// return CDialogEx::OnEraseBkgnd(pDC);
}BOOL CDlg2::OnInitDialog()
{CDialogEx::OnInitDialog();return TRUE;
}void CDlg2::OnLButtonDown(UINT nFlags, CPoint point)
{C解析AVIDlg* pDlg (C解析AVIDlg*)theApp.m_pMainWnd;int Count pDlg-ar.GetCount();for (int i 0; i Count; i){INFO* pInfo (INFO*)pDlg-ar.GetAt(i);if (pInfo-pRect-PtInRect(point)){CString cr pInfo-ID.Left(3);CString id pInfo-ID.Right(pInfo-ID.GetLength() - 4);if (cr L可读取){if (id L指向索引块){pDlg-ParsingIx(pInfo-STAR, pInfo-LEN); break;}if(id Lidx1){pDlg-ParsingIdx1(pInfo-STAR, pInfo-LEN);break;}if (id L二进制){pDlg-ParsingX(pInfo-STAR, pInfo-LEN);}}}}CDialogEx::OnLButtonDown(nFlags, point);
}
#pragma once
#include afxcmn.h
#include MyEdit.h// CDlg3 对话框class CDlg3 : public CDialogEx
{DECLARE_DYNAMIC(CDlg3)public:CDlg3(CWnd* pParent NULL); // 标准构造函数virtual ~CDlg3();// 对话框数据
#ifdef AFX_DESIGN_TIMEenum { IDD IDD_DIALOG3 };
#endifprotected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持DECLARE_MESSAGE_MAP()
public:CMyEdit richedit;virtual BOOL OnInitDialog();afx_msg BOOL OnEraseBkgnd(CDC* pDC);afx_msg void On32780();afx_msg void On32779();afx_msg void On32781();afx_msg void On32782();afx_msg void OnPaint();afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
};
// Dlg3.cpp : 实现文件
//#include stdafx.h
#include 解析AVI.h
#include Dlg3.h
#include afxdialogex.hDWORD CALLBACK MyStreamOutCallback(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb)
{CFile* pFile (CFile*)dwCookie; pFile-Write(pbBuff, cb);*pcb cb;return 0;
}DWORD CALLBACK InRichEdit(DWORD dwCookie, LPBYTE lpBuf, LONG nCount, LONG* nRead)//从内存输入到多格式编辑控件
{CFile* pFile (CFile*)dwCookie;*nRead pFile-Read(lpBuf, nCount);return 0;
}IMPLEMENT_DYNAMIC(CDlg3, CDialogEx)CDlg3::CDlg3(CWnd* pParent /*NULL*/): CDialogEx(IDD_DIALOG3, pParent)
{}CDlg3::~CDlg3()
{
}void CDlg3::DoDataExchange(CDataExchange* pDX)
{CDialogEx::DoDataExchange(pDX);DDX_Control(pDX, IDC_RICHEDIT5, richedit);
}BEGIN_MESSAGE_MAP(CDlg3, CDialogEx)ON_WM_ERASEBKGND()ON_COMMAND(ID_32780, CDlg3::On32780)ON_COMMAND(ID_32779, CDlg3::On32779)ON_COMMAND(ID_32781, CDlg3::On32781)ON_COMMAND(ID_32782, CDlg3::On32782)ON_WM_PAINT()ON_WM_CREATE()
END_MESSAGE_MAP()BOOL CDlg3::OnInitDialog()
{CDialogEx::OnInitDialog();CRect rect(0, 0, 1000, 600);//设置客户区大小宽1000像素高600像素DWORD style GetExStyle();//获取对话框扩展样式if (style WS_EX_CLIENTEDGE)//如果对话框包含WS_EX_CLIENTEDGE样式{CalcWindowRect(rect, CWnd::adjustOutside);//计算带边框的对话框窗口大小}else//如果对话框不包含WS_EX_CLIENTEDGE样式{CalcWindowRect(rect, CWnd::adjustBorder);//计算带边框的对话框窗口大小}MoveWindow(rect);//设置对话框的大小CenterWindow();//居中对话框CRect ClientRect;GetClientRect(ClientRect);ClientRect.DeflateRect(6, 6);richedit.MoveWindow(ClientRect);richedit.SetBackgroundColor(FALSE, RGB(255, 193, 132));CRect EditRect;richedit.GetRect(EditRect);EditRect.DeflateRect(20, 2, 20, 2);richedit.SetRect(EditRect);HRSRC hRes FindResource(NULL, MAKEINTRESOURCE(IDR_RIF1), _T(RIF));HGLOBAL hMem LoadResource(NULL, hRes);BYTE* pb (BYTE*)LockResource(hMem);//获取数据的起始内存地址DWORD LenSizeofResource(NULL, hRes);//获取数据的大小以字节为单位CMemFile F;//声明内存文件对象F.Attach(pb, Len);EDITSTREAM es;es.pfnCallback InRichEdit;//InRichEdit的函数定义参见“多格式编辑控件显示图片”es.dwCookie (DWORD)F;//将内存文件指针传递给dwCookie参数es.dwError 0;richedit.StreamIn(SF_RTF, es);//将内存中的内容输入到多格式编辑控件FreeResource(hMem);//最后释放数据占用的内存return TRUE;
}BOOL CDlg3::OnEraseBkgnd(CDC* pDC)
{CRect rect;GetClientRect(rect);pDC-FillSolidRect(rect, RGB(49, 49, 49));return TRUE;
// return CDialogEx::OnEraseBkgnd(pDC);
}void CDlg3::On32780()//复制
{richedit.Copy();
}void CDlg3::On32779()//粘贴
{richedit.Paste();
}void CDlg3::On32781()
{richedit.SetSel(0, -1);
}void CDlg3::On32782()//保存
{CFile file(_T(帮助.rtf), CFile::modeCreate | CFile::modeWrite); //声明文件对象EDITSTREAM es;es.pfnCallback MyStreamOutCallback;//指定流输出使用的回调函数es.dwCookie (DWORD)file;//将文件指针传递给dwCookie参数richedit.StreamOut(SF_RTF, es);//以RTF格式输出
}void CDlg3::OnPaint()
{CPaintDC dc(this); richedit.SetSel(0, 0);
}int CDlg3::OnCreate(LPCREATESTRUCT lpCreateStruct)
{if (CDialogEx::OnCreate(lpCreateStruct) -1)return -1;LoadLibrary(TEXT(Msftedit.dll));HWND hwndEdit CreateWindowEx(0, MSFTEDIT_CLASS, TEXT(),ES_MULTILINE | ES_WANTRETURN | WS_VISIBLE | WS_CHILD | WS_VSCROLL,10, 10, 400, 300, GetSafeHwnd(), NULL, theApp.m_hInstance, NULL);if (hwndEdit ! NULL){richedit.SubclassWindow(hwndEdit);richedit.SetDlgCtrlID(IDC_RICHEDIT5);}return 0;
}