1
Разработка / Development / Re: C++ Builder DLL
« on: March 31, 2010, 23:33:41 »
извиняюсь, это был вопрос)
This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.
typedef BOOL (WINAPI *AIMPAddonHeaderProc)(IAIMPAddonHeader *AHeader);
на typedef BOOL (WINAPI *AIMPAddonHeaderProc)(IAIMPAddonHeader **AHeader);
*AHeader = reinterpret_cast<IAIMPAddonHeader*>(new IIAIMPAddonHeader);
где IIAIMPAddonHeader наследник IAIMPAddonHeader.class IIAIMPAddonHeader :public /*IUnknown, */IAIMPAddonHeader
{
protected:
int m_nRefCount;
public:
BOOL WINAPI __stdcall GetHasSettingsDialog()
{
return FALSE;
}
PWCHAR WINAPI __stdcall GetPluginAuthor() {
ShowMessage("GetAutorFunc");
//wchar_t*
return (wchar_t*)"ildarM";
}
PWCHAR WINAPI __stdcall GetPluginName()
{
ShowMessage("GetPluginName");
return (wchar_t*)"to flylink";
}
void WINAPI __stdcall Finalize()
{
int i;
}
void WINAPI __stdcall Initialize(IAIMP2Controller *AController)
{
unsigned int ver = AController->AIMP_GetSystemVersion();
ShowMessage(IntToStr(__int64(ver)));
aimp = AController;
ShowMessage("InitFunc");
}
void WINAPI __stdcall ShowSettingsDialog(HWND AParentWindow)
{
int i;
}
STDMETHOD(QueryInterface)( REFIID refiid, void FAR* FAR* ppvObject )
{
*ppvObject = ( refiid == IID_IUnknown ) ? this : NULL;
if ( *ppvObject != NULL )
( (LPUNKNOWN)*ppvObject )->AddRef();
return *ppvObject == NULL ? E_NOINTERFACE : S_OK;
}
STDMETHOD_(ULONG, AddRef)( void )
{
return ++m_nRefCount;
}
STDMETHOD_(ULONG, Release)( void )
{
int nRefCount = --m_nRefCount;
if ( nRefCount == 0 )
delete this;
return nRefCount;
}
};
extern "C" __declspec (dllexport) BOOL __stdcall AIMP_QueryAddonEx(IAIMPAddonHeader *AHeader)
{
AHeader = NULL;
AHeader =(IAIMPAddonHeader*)new IIAIMPAddonHeader;
return TRUE;
}
class IIAIMPAddonHeader :public IAIMPAddonHeader
{
protected:
int m_nRefCount;
public:
BOOL WINAPI GetHasSettingsDialog()
{
return 1;
}
PWCHAR WINAPI GetPluginAuthor() {
ShowMessage("GetAutorFunc");
//wchar_t*
return (wchar_t*)"ildarM";
}
PWCHAR WINAPI GetPluginName()
{
ShowMessage("GetPluginName");
return (wchar_t*)"to flylink";
}
void WINAPI Finalize()
{
int i;
}
void WINAPI Initialize(IAIMP2Controller *AController)
{
ShowMessage("InitFunc");
}
void WINAPI ShowSettingsDialog(HWND AParentWindow)
{
int i;
}
STDMETHOD(QueryInterface)( REFIID refiid, void FAR* FAR* ppvObject )
{
*ppvObject = ( refiid == IID_IUnknown ) ? this : NULL;
if ( *ppvObject != NULL )
( (LPUNKNOWN)*ppvObject )->AddRef();
return *ppvObject == NULL ? E_NOINTERFACE : S_OK;
}
STDMETHOD_(ULONG, AddRef)( void )
{
return ++m_nRefCount;
}
STDMETHOD_(ULONG, Release)( void )
{
int nRefCount = --m_nRefCount;
if ( nRefCount == 0 )
delete this;
return nRefCount;
}
};
extern "C" __declspec (dllexport) BOOL __stdcall AIMP_QueryAddonEx(IAIMPAddonHeader *AHeader)
{
AHeader = new IIAIMPAddonHeader;
return 1;
}