好,說明一點東西,對於變量和類只能夠靜態調用.而不能夠動態調用.所以,我們測試類和變量的時候,用的都是靜態調用.
那,我們就來看看如何導出一個類吧,我們還是建立一個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();
}