好,说明一点东西,对于变量和类只能够静态调用.而不能够动态调用.所以,我们测试类和变量的时候,用的都是静态调用.
那,我们就来看看如何导出一个类吧,我们还是建立一个WIN32 的DLL工程 :
头文件:
#ifndef _DLLCLASS_DLL_H_
#define _DLLCLASS_DLL_H_
#include "windows.h"
#ifndef _DLL_EXPORT_
#define _MY_CLASS_ _declspec(dllimport)
#else
#define _MY_CLASS_ _declspec(dllexport)
#endif// _DLL_EXPORT_
class _MY_CLASS_ CMyClass
{
public:
CMyClass();
virtual ~CMyClass();
void Attach(HWND hWnd);
void Detach();
public:
void ShowMessage(LPSTR pstrMsg,LPSTR pstrTitle);
public:
private:
HWND m_hWnd;
};
#endif//_DLLCLASS_DLL_H_
实现文件:
#ifndef _DLL_EXPORT_
#define _DLL_EXPORT_
#endif
#include "DllClass.h"
CMyClass::CMyClass()
{
m_hWnd = NULL;
}
CMyClass::~CMyClass()
{
m_hWnd = NULL;
}
void CMyClass::Attach( HWND hWnd)
{
m_hWnd = hWnd;
}
void CMyClass::Detach()
{
m_hWnd = NULL;
}
void CMyClass::ShowMessage( LPSTR pstrMsg, LPSTR pstrTitle )
{
MessageBox( m_hWnd, pstrMsg, pstrTitle, MB_OK |MB_ICONINFORMATION );
}
这样,编译连接就OK了.
接着,我们看怎么用他们吧:
/*-----------------------------------------------------*/
静态调用导出类
/*-----------------------------------------------------*/
#include ".//DllClass//DllClass.h"
#pragma comment(lib,"DllClass.lib")
void CDllDlg::OnBtnDllclass()
{
// TODO: Add your control notification handler code here
CMyClass myClass;
myClass.Attach( m_hWnd );
myClass.ShowMessage( "Hello World!", "Information" );
myClass.Detach();
}