Module.h
网狐的“com”工具箱:
简单介绍下这个东东,其实我以前分析的时候就说过了,这个设计看上去很美,其实用起来不那么方便。这不6603就没有这玩意了。
网狐的COM接口比较简单,只有两个接口
interface IUnknownEx
void Release()
void* QueryInterface(REFGUID guid, DWORD dwQueryVer)
从这个接口可以看出唯一的外部依赖就是guid 和 dwQueryVer
在来看那个help工具模版类
template <typename IModeluInterface> class CTempldateHelper
//构造函数
CTempldateHelper(REFGUID Guid, DWORD dwVersion);
//构造函数
CTempldateHelper(REFGUID Guid, DWORD dwVersion, LPCTSTR pszModuleDll, LPCSTR pszCreateProc);
两个构造函数,能看出点什么不,,,
// 这代表DLL的名,和DLL中创建组件的函数名,别告诉我你不知道动态加载dll
LPCTSTR pszModuleDll, LPCSTR pszCreateProc
// 这些稀烂班子就是隐藏了动态加载的过程而已
//获取错误
inline LPCTSTR GetErrorDescribe() const;
//指针重载
inline IModeluInterface * operator->() const;
//获取接口
inline IModeluInterface * GetInterface() const;
这样看起来很美,其实隐藏了太多东西,降低了代码的可读性。接口都看不到了,,,坑爹的,,,