1..dll代码工程里面与def文件名称相同的cpp文件里面添加
#include "窗口文件名称"
typedef __declspec(dllexport) void show()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
窗口类名 dlg;
dlg.DoModal();
}
2.在exe按钮事件中进行调用
void CCallDllDlg::OnButton1()
{
// TODO: Add your control notification handler code here
typedef void (WINAPI * TESTDLL)();
HINSTANCE hmod;
hmod = ::LoadLibrary ("WordChat_Dll.dll");
if(hmod==NULL)
{
AfxMessageBox("Fail");
}
TESTDLL lpproc;
lpproc = (TESTDLL)GetProcAddress(hmod,"ShowChatDlg");
if(lpproc!=(TESTDLL)NULL)
(*lpproc)();
FreeLibrary(hmod);
}
二、对于扩展的dll的调用
一)、在对话框中点击按钮调用扩展dll
怎样在扩展DLL中使用对话框
二)、在单文档中调用dll
<一>
1.在def文件中填写接口函数
2.在cpp中使用extern 要打开的窗口的类名 *pTestDlg;//pTestDlg在该类名的cpp文件中已经定义并赋值为NULL
3.写接口函数,形参为CView *pView
4.函数中写入
if(pTestDlg == NULL)
{
pTestDlg = new 类名;
pTestDlg.Create(窗口资源IDD,pTestDlg);
}
pTestDlg.ShowWindow(SW_SHOW);
<二>在单文档中添加一个菜单项目,并在view文件定义该项的事件定义和函数的实现,在该函数中的代码如下:
typedef void (*lpShowDlg)(CView *p_View);
typedef void (*lpHideDlg)();
HINSTANCE hDll; //DLL句柄
hDll = NULL; //DLL句柄
hDll = LoadLibrary("ContractDll.dll");
if (NULL==hDll)
{
MessageBox("Operation_DLL加载失败");
return;
}
lpShowDlg pShowDlg;
// lpHideDlg pHideDlg;
pShowDlg = (lpShowDlg)GetProcAddress(hDll, "ContractShow");
// pHideDlg = (lpHideDlg)GetProcAddress(hDll, "ReleaseQuery_Hide");
if(NULL == pShowDlg)
{
MessageBox("ReleaseQueryDll中FodderAudit_Show函数寻找失败!");
return;
}
// else if(NULL == pHideDlg)
// {
// MessageBox("ReleaseQueryDll中ReleaseQuery_Hide函数寻找失败!");
// return;
// }
pShowDlg(this);