///////////////////////////////////////////////////////////////////////////// // CAvitobmpDlg message handlers
BOOL CAvitobmpDlg::OnInitDialog() { CDialog::OnInitDialog();
// Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { CString strAboutMenu; strAboutMenu.LoadString(IDS_ABOUTBOX); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } }
// Set the icon for this dialog. The framework does this automatically // when the application's main window is not a dialog SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon // TODO: Add extra initialization here return TRUE; // return TRUE unless you set the focus to a control }
void CAvitobmpDlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else { CDialog::OnSysCommand(nID, lParam); } }
// If you add a minimize button to your dialog, you will need the code below // to draw the icon. For MFC applications using the document/view model, // this is automatically done for you by the framework.
void CAvitobmpDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle 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;
// Draw the icon dc.DrawIcon(x, y, m_hIcon); } else { CDialog::OnPaint(); } }
// The system calls this to obtain the cursor to display while the user drags // the minimized window. HCURSOR CAvitobmpDlg::OnQueryDragIcon() { return (HCURSOR) m_hIcon; }
void CAvitobmpDlg::OnButtonok() { if(m_avifile==""||m_target=="") //note fill in data first. { MessageBox("PLS SELECT FILE OR FILL IN DATA FIRST!","NOTE",MB_ICONSTOP); return; } AfxGetApp()->DoWaitCursor(1); GetDlgItem(IDC_BUTTONOK)->EnableWindow(false); PAVIFILE pfile;//Pointer to a buffer that receives the new IAVIFile interface pointer. AVIFILEINFO pfi; PAVISTREAM pavi; PGETFRAME pgf; long length, start;
//initializes the AVIFile library,as AVIFileExit()。 //Call AVIFileInit() before using any other AVIFile functions AVIFileInit(); AVIFileOpen(&pfile,m_avifile,OF_READ |OF_SHARE_DENY_NONE,NULL); //obtains information about an AVI file AVIFileInfo(pfile,&pfi,sizeof(AVIFILEINFO)); AVIFileGetStream(pfile,&pavi,streamtypeVIDEO,0); length=AVIStreamLength(pavi); start=AVIStreamStart(pavi);
AVISTREAMINFO si; AVIStreamInfo(pavi, &si, sizeof(si));
pgf = AVIStreamGetFrameOpen(pavi, NULL); //GET FIRST BMP LPBITMAPINFOHEADER bmp1; bmp1= (LPBITMAPINFOHEADER)AVIStreamGetFrame(pgf, 1); CClientDC dc(this); //DEFAUT HEAD BITMAPINFOHEADER bmih; memset(&bmih,0,sizeof(BITMAPINFOHEADER)); bmih.biBitCount=bmp1->biBitCount; bmih.biSize = sizeof(BITMAPINFOHEADER); bmih.biWidth = pfi.dwWidth; bmih.biHeight = pfi.dwHeight; bmih.biPlanes =bmp1->biPlanes; //Modif By Deng Chun Ling bmih.biCompression =BI_RGB; bmih.biXPelsPerMeter = 0; bmih.biYPelsPerMeter = 0; BITMAPFILEHEADER bmfh; bmfh.bfSize = sizeof(bmfh); //bmfh.bfSize=sizeof(bmp1); //modi by deng chun ling bmfh.bfOffBits = sizeof(bmfh) + sizeof(bmih); //BITMAPINFOHEADER+BITMAPINFOHEADER bmfh.bfType = (int)'M' * 256 + 'B'; // bmfh.bfType=0x424D; bmfh.bfReserved1 = 0; bmfh.bfReserved2 = 0;
BYTE *lpbuffa; lpbuffa=new BYTE[(((pfi.dwWidth*bmih.biBitCount)+31)/8)*pfi.dwHeight];
BYTE* lpbuff;
m_editqty=pfi.dwLength; UpdateData(false); //Limite to 100 // if (pfi.dwLength>100) pfi.dwLength=100; for(LONG i=1;i<(LONG)pfi.dwLength;i++) { lpbuff=lpbuffa; lpbuff=(BYTE *)AVIStreamGetFrame(pgf,i);// lpbuff+=40; //TranslationDIB1(lpbuff,bmih.biWidth,bmih.biHeight,10,50);//平移function char name1[100]; strcpy(name1,m_target);//目的路徑
TCHAR name3[50]; wsprintf(name3, TEXT("Bitmap%5.5ld.bmp\0"), long(i) ); strcat(name1,name3); ////Write BMP File。 CFile ff(name1, CFile::modeWrite | CFile::modeCreate); //?位? ff.Write(&bmfh, sizeof(bmfh));//bmfh-->ff ff.Write(&bmih, 40); ff.Write(lpbuff, bmp1->biSizeImage); ff.Close(); Sleep(10); }
m_editw=i; UpdateData(false);
//release file AVIStreamGetFrameClose(pgf); AVIFileRelease(pfile); //Use the AVIFileExit() function to release the AVIFile library //and decrement the reference count.同AVIFileInit()??。 AVIFileExit(); ReleaseDC(&dc); AfxGetApp()->DoWaitCursor(1); MessageBox("CONVERT COMPLETED!","NOTE",MB_ICONINFORMATION); GetDlgItem(IDC_BUTTONOK)->EnableWindow(true); }
void CAvitobmpDlg::OnButtonabout() { CAboutDlg dlg; dlg.DoModal (); }
void CAvitobmpDlg::OnButtonsource() {
CFileDialog FileDlg(TRUE, "*.AVI", NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, _T("AVI FILE(*.avi) |*.avi||")); // CString m_avifile; if(FileDlg.DoModal() == IDOK){ m_avifile=FileDlg.GetPathName(); UpdateData(false); } }
void CAvitobmpDlg::OnButtontarget() { CFileDialog filedlg(FALSE,NULL,"P",NULL,("BMP File(*.bmp)|*.bmp||")); if (filedlg.DoModal()==IDOK){
//m_target=filedlg.GetFolderPath(); m_target=filedlg.GetPathName(); m_target.MakeUpper(); UpdateData(false);
} }

|