对dll里提供的接口调用很简单。1)加载dll库  2)取dll中某函数的指针  3)用此指针调用dll里的函数完成相应功能 4)卸载dll库

知道的同学们可以一瞥而过。怎样是这个面向过程的东西搞得更面向对象一点呢?

1.构造和析构函数中完成1)和4)的操作。

CLibDownload::CLibDownload(void):
m_bTimerDown(false)
,m_nTryTimes(1)
{
	hDll = LoadLibrary(_T("mfcDll.dll")); 
}

CLibDownload::~CLibDownload(void)
{
	m_bTimerDown = false;
	m_nTryTimes = 0;
	FreeLib();
}

void CLibDownload::FreeLib()
{
	if (hDll!=NULL)
	{
		FreeLibrary(hDll);
		hDll=NULL;
	}

}

3.类中定义函数指针。

class CLibDownload
{
public:
	CLibDownload(void);
	virtual ~CLibDownload(void);
...
protected:
	HINSTANCE hDll;
public:
	typedef void (WINAPI *FunDownload)(CStringA,int,CStringA,bool);   
...
}

4.这样使用。

View Code
1     FunDownload fun = (FunDownload)GetProcAddress(hDll,"downloadResume");  
2 fun((CStringA)strUrl,threadCount,(CStringA)strPkg,false);