DLL專題之Dll中導出類

好,說明一點東西,對於變量和類只能夠靜態調用.而不能夠動態調用.所以,我們測試類和變量的時候,用的都是靜態調用.

那,我們就來看看如何導出一個類吧,我們還是建立一個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();
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章