VC++动态链接库(DLL)编程深入浅出(四)[组图](4)
6.2 MFC扩展DLL的调用
在DLL所在工作区新增一个dllcall工程,它是一个基于对话框的MFC EXE程序。在其中增加两个按钮SXBUTTON1、SXBUTTON2,并设置其属性为“Owner draw”,如图17。
图17 设置按钮属性为“Owner draw”
在工程中添加两个ICON资源:IDI_MSN_ICON(MSN的图标)、IDI_REFBAR_ICON(Windows的系统图标)。
修改工程的“calldllDlg.h”头文件为:
#include "....mfcexpenddllSXBUTTON.h" //包含dll的导出类头文件
#pragma comment(lib,"mfcexpenddll.lib") //隐式链接dll
/////////////////////////////////////////////////////////////////////////////
// CCalldllDlg dialog
class CCalldllDlg : public CDialog
{
// Construction
public:
CCalldllDlg(CWnd* pParent = NULL); // standard constructor
// Dialog Data
//{{AFX_DATA(CCalldllDlg)
enum { IDD = IDD_CALLDLL_DIALOG };
//增加与两个按钮对应的成员变量
CSXButton m_button1;
CSXButton m_button2;
…
}
同时,修改“calldllDlg.cpp”文件,使得m_button1、m_button2成员变量与对话框上的按钮控件建立关联:
void CCalldllDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CCalldllDlg)
DDX_Control(pDX, IDC_BUTTON2, m_button2);
DDX_Control(pDX, IDC_BUTTON1, m_button1);
//}}AFX_DATA_MAP
}