DLLExport.cpp
上传用户:liguizhu
上传日期:2015-11-01
资源大小:2422k
文件大小:4k
源码类别:

P2P编程

开发平台:

Visual C++

  1. /*
  2.  *  Openmysee
  3.  *
  4.  *  This program is free software; you can redistribute it and/or modify
  5.  *  it under the terms of the GNU General Public License as published by
  6.  *  the Free Software Foundation; either version 2 of the License, or
  7.  *  (at your option) any later version.
  8.  *
  9.  *  This program is distributed in the hope that it will be useful,
  10.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  11.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12.  *  GNU General Public License for more details.
  13.  *
  14.  *  You should have received a copy of the GNU General Public License
  15.  *  along with this program; if not, write to the Free Software
  16.  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  17.  *
  18.  */
  19. // DLLExport.cpp : Defines the entry point for the DLL application.
  20. //
  21. #include "stdafx.h"
  22. #include "GraphCenter.h"
  23. //CGraphCenter loGraphCenter
  24. BOOL WINAPI DllMain( HANDLE hModule, 
  25.   DWORD  ul_reason_for_call, 
  26.   LPVOID lpReserved
  27.   )
  28. {
  29. //DbgSetModuleLevel(LOG_TRACE, 5);
  30. return TRUE;
  31. }
  32. //创建
  33. extern "C" __declspec(dllexport) HANDLE CreateGetZZL()
  34. {
  35. HRESULT hr;
  36. CGraphCenter *lpGraphCenter = NULL;
  37. lpGraphCenter = new CGraphCenter;
  38. if (lpGraphCenter == NULL)
  39. {
  40. return NULL;
  41. }
  42. hr = lpGraphCenter->Initialize();
  43. if (FAILED(hr))
  44. {
  45. return NULL;
  46. }
  47. return lpGraphCenter;
  48. }
  49. //设置源avi文件
  50. //ahInstance ——实例句柄,astrFileName——源avi文件名,astrZZLDirectory ——ZZL文件夹,astrZZLFile——ZZL文件名 
  51. extern "C" __declspec(dllexport) BOOL SetFileName(HANDLE ahInstance, LPCTSTR astrFileName, LPCTSTR astrZZLDirectory, LPCTSTR astrZZLFile)
  52. {
  53. assert(ahInstance);
  54. if (NULL == ahInstance)
  55. {
  56. MessageBox(NULL, "动态连接库的句柄不对,请重新创建。", "错误", MB_OK|MB_ICONSTOP);
  57. return FALSE;
  58. }
  59. CGraphCenter* lpGraphCenter = (CGraphCenter*)ahInstance;
  60. HRESULT hr;
  61. char lszZZLFile[MAXLENGTH];
  62. strcpy(lszZZLFile, astrZZLFile);
  63. char* lpByte;
  64. lpByte = strrchr(lszZZLFile, '.');
  65. if (NULL != lpByte)
  66. {
  67. *lpByte = '';
  68. }
  69. do
  70. {
  71. -- lpByte;
  72. }
  73. while (*lpByte == ' ');
  74. *(++ lpByte) = '';
  75. hr = lpGraphCenter->BuildGraph(astrFileName, astrZZLDirectory, lszZZLFile);
  76. if (FAILED(hr))
  77. {
  78. //MessageBox(NULL,"转化过程意外中断,可能是用户取消操作,也可能是源文件只有视频", "注意", MB_OK|MB_ICONINFORMATION);
  79. TraceLog1("%s转化过程意外中断,可能是用户取消操作,也可能是源文件只有视频n", lszZZLFile);
  80. return FALSE;
  81. }
  82. return TRUE; 
  83. }
  84. //开始转化AVI
  85. extern "C" __declspec(dllexport) BOOL Run(HANDLE ahInstance)
  86. {
  87. HRESULT hr;
  88. CGraphCenter* lpGraphCenter = (CGraphCenter*)ahInstance;
  89. hr = lpGraphCenter->Run();
  90. if (FAILED(hr))
  91. {
  92. return FALSE;
  93. }
  94. return TRUE;
  95. }
  96. extern "C" __declspec(dllexport) BOOL Stop(HANDLE ahInstance)
  97. {
  98. HRESULT hr;
  99. CGraphCenter* lpGraphCenter = (CGraphCenter*)ahInstance;
  100. hr = lpGraphCenter->Stop();
  101. if (FAILED(hr))
  102. {
  103. return FALSE;
  104. }
  105. return TRUE;
  106. }
  107. //0为运行,1为停止。-1为发生意外错误停止
  108. extern "C" __declspec(dllexport) int GetState(HANDLE ahInstance)
  109. {
  110. assert(ahInstance);
  111. CGraphCenter* lpGraphCenter = (CGraphCenter*)ahInstance;
  112. return lpGraphCenter->GetState();
  113. }
  114. extern "C" __declspec(dllexport) float GetCompressedSpeed(HANDLE ahInstance)
  115. {
  116. assert(ahInstance);
  117. CGraphCenter* lpGraphCenter = (CGraphCenter*)ahInstance;
  118. if (0 != lpGraphCenter->GetState())
  119. {
  120. return 0;
  121. }
  122. return lpGraphCenter->GetCompressedSpeed();
  123. }
  124. extern "C" __declspec(dllexport) void SetStateProc(HANDLE ahInstance, GetZZLState* apStateproc, void* apUserPara)
  125. {
  126. assert(ahInstance);
  127. CGraphCenter* lpGraphCenter = (CGraphCenter*)ahInstance;
  128. lpGraphCenter->SetStateProc(apStateproc, apUserPara);
  129. }
  130. extern "C" __declspec(dllexport) void CloseGetZZL(HANDLE ahInstance)
  131. {
  132. assert(ahInstance);
  133. CGraphCenter* lpGraphCenter = (CGraphCenter*)ahInstance;
  134. delete lpGraphCenter;
  135. lpGraphCenter = NULL;
  136. }