AVI 파일의 이름을 바꾸는 프로그램을 작성하고 확장 프로그램을 추가 한 다음 프레임을 가져 와서 BMP 파일에 저장합니다. 여기 전역 변수의 동작이 다른 함수에 따라 다릅니다.
코드의 중요한 부분입니다#include "stdafx.h"
#include "ImageProcessor2.h"
#include <windows.h>
#include <Commdlg.h>
#include <Commctrl.h>
#include <stdio.h>
#include <string>
#include "vfw.h"
#include <atlstr.h>
// Global Variables...
HINSTANCE g_hInst;
LPSTR selectedAVI=NULL;
INT_PTR CALLBACK DialogProc(HWND, UINT, WPARAM, LPARAM);
void OpenDialog(HWND);
void GetFrame(HWND);
int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPTSTR lpCmdLine, int nCmdShow)
{
g_hInst = hInstance;
DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAIN), NULL,(DLGPROC)DialogProc);
return 0;
}
INT_PTR CALLBACK DialogProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
case WM_INITDIALOG:
SetClassLongPtr(hWnd, GCLP_HICONSM,
(LONG_PTR)LoadIcon(g_hInst, MAKEINTRESOURCE(IDI_IMAGEPROCESSOR2)));
break;
case WM_COMMAND:
switch (LOWORD(wParam))
{
case IDCANCEL:
EndDialog(hWnd, LOWORD(wParam));
break;
case IDB_LOADVID:
OpenDialog(hWnd);
break;
case IDB_GETFRAME:
if (selectedAVI==0)
{
MessageBox(NULL, "Select the file by pressing Load button first", "Info", MB_OK);
break;
}
else
GetFrame(hWnd);
break;
}
break;
break;
}
return FALSE;
}
void OpenDialog(HWND hWnd)
{
OPENFILENAME ofn;
TCHAR szFile[MAX_PATH];
char* renamedfile;
ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.lpstrFile = szFile;
ofn.lpstrFile[0] = '\0';
ofn.hwndOwner = hWnd;
ofn.nMaxFile = sizeof(szFile);
ofn.lpstrFilter = TEXT("All files(*.*)\0*.*\0");
ofn.nFilterIndex = 1;
ofn.lpstrInitialDir = NULL;
ofn.lpstrFileTitle = NULL;
ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
if (GetOpenFileName(&ofn))
{
//call to rename function
ofn.lpstrFile=renamedfile;
MCIWndCreate(GetDlgItem(hWnd, IDC_ANIRENDER), (HINSTANCE)g_hInst,WS_CHILD|WS_VISIBLE|WS_SYSMENU|MCIWNDF_NOOPEN|MCIWNDF_NOMENU|MCIWNDF_NOTIFYALL, ofn.lpstrFile);
selectedAVI=ofn.lpstrFile;
SetDlgItemTextA(hWnd, IDC_EDIT1, selectedAVI);
}
}
//rename function is here
void GetFrame(HWND hWnd)
{
LONG hr;
PAVIFILE pfile;
SetDlgItemTextA(hWnd, IDC_EDIT2, selectedAVI);
AVIFileInit(); // opens AVIFile library
//further AVI processing functions are here
AVIFileExit(); // releases AVIFile library
}
내가 받고있는 이유 이제 설명해주십시오 :
EDIT1에서: \ 테스트 \의 testAVI : 올바른 경로는 "D로 (파일로 ţ ™ Öj8p "나는 같은에서 읽기 때문에이 같은 문자열을 표시해야합니다 생각
"로 끝나는 등등하고, "îţîţîîţîţîîţîţî : .AVI") EDIT2에서
" 전역 변수. 내가 뭘 잘못하고 있니? 어떻게 그럴까요?
는 selectedAVI
이 포인터 자체의 어떤 기억이 없기 때문에 당신에게
예수님! 나는 포인터에 대해서만 항상 생각하고 있었고 포인터가 가리키는 값에 대해서는 생각하지 않았습니다. 무엇 embarasing 순간 : D 감사합니다 – Smejki
, 모두가 그런 순간을 가지고 있습니다. :-) –