📄 dllexport.cpp
字号:
/*
* Openmysee
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
// DLLExport.cpp : Defines the entry point for the DLL application.
//
#include "stdafx.h"
#include "GraphCenter.h"
//CGraphCenter loGraphCenter
BOOL WINAPI DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
//DbgSetModuleLevel(LOG_TRACE, 5);
return TRUE;
}
//创建
extern "C" __declspec(dllexport) HANDLE CreateGetZZL()
{
HRESULT hr;
CGraphCenter *lpGraphCenter = NULL;
lpGraphCenter = new CGraphCenter;
if (lpGraphCenter == NULL)
{
return NULL;
}
hr = lpGraphCenter->Initialize();
if (FAILED(hr))
{
return NULL;
}
return lpGraphCenter;
}
//设置源avi文件
//ahInstance ——实例句柄,astrFileName——源avi文件名,astrZZLDirectory ——ZZL文件夹,astrZZLFile——ZZL文件名
extern "C" __declspec(dllexport) BOOL SetFileName(HANDLE ahInstance, LPCTSTR astrFileName, LPCTSTR astrZZLDirectory, LPCTSTR astrZZLFile)
{
assert(ahInstance);
if (NULL == ahInstance)
{
MessageBox(NULL, "动态连接库的句柄不对,请重新创建。", "错误", MB_OK|MB_ICONSTOP);
return FALSE;
}
CGraphCenter* lpGraphCenter = (CGraphCenter*)ahInstance;
HRESULT hr;
char lszZZLFile[MAXLENGTH];
strcpy(lszZZLFile, astrZZLFile);
char* lpByte;
lpByte = strrchr(lszZZLFile, '.');
if (NULL != lpByte)
{
*lpByte = '\0';
}
do
{
-- lpByte;
}
while (*lpByte == ' ');
*(++ lpByte) = '\0';
hr = lpGraphCenter->BuildGraph(astrFileName, astrZZLDirectory, lszZZLFile);
if (FAILED(hr))
{
//MessageBox(NULL,"转化过程意外中断,可能是用户取消操作,也可能是源文件只有视频", "注意", MB_OK|MB_ICONINFORMATION);
TraceLog1("%s转化过程意外中断,可能是用户取消操作,也可能是源文件只有视频\n", lszZZLFile);
return FALSE;
}
return TRUE;
}
//开始转化AVI
extern "C" __declspec(dllexport) BOOL Run(HANDLE ahInstance)
{
HRESULT hr;
CGraphCenter* lpGraphCenter = (CGraphCenter*)ahInstance;
hr = lpGraphCenter->Run();
if (FAILED(hr))
{
return FALSE;
}
return TRUE;
}
extern "C" __declspec(dllexport) BOOL Stop(HANDLE ahInstance)
{
HRESULT hr;
CGraphCenter* lpGraphCenter = (CGraphCenter*)ahInstance;
hr = lpGraphCenter->Stop();
if (FAILED(hr))
{
return FALSE;
}
return TRUE;
}
//0为运行,1为停止。-1为发生意外错误停止
extern "C" __declspec(dllexport) int GetState(HANDLE ahInstance)
{
assert(ahInstance);
CGraphCenter* lpGraphCenter = (CGraphCenter*)ahInstance;
return lpGraphCenter->GetState();
}
extern "C" __declspec(dllexport) float GetCompressedSpeed(HANDLE ahInstance)
{
assert(ahInstance);
CGraphCenter* lpGraphCenter = (CGraphCenter*)ahInstance;
if (0 != lpGraphCenter->GetState())
{
return 0;
}
return lpGraphCenter->GetCompressedSpeed();
}
extern "C" __declspec(dllexport) void SetStateProc(HANDLE ahInstance, GetZZLState* apStateproc, void* apUserPara)
{
assert(ahInstance);
CGraphCenter* lpGraphCenter = (CGraphCenter*)ahInstance;
lpGraphCenter->SetStateProc(apStateproc, apUserPara);
}
extern "C" __declspec(dllexport) void CloseGetZZL(HANDLE ahInstance)
{
assert(ahInstance);
CGraphCenter* lpGraphCenter = (CGraphCenter*)ahInstance;
delete lpGraphCenter;
lpGraphCenter = NULL;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -