笔者编写了如图12的对话框MFC程序(下载本工程附件)来调用5.3节的MFC规则DLL,在这个程序的对话框上点击“调用DLL”按钮时弹出5.3节MFC规则DLL中的对话框。

图12 MFC规则DLL的调用例子

  下面是“调用DLL”按钮单击事件的消息处理函数:

void CRegularDllCallDlg::OnCalldllButton()

{

typedef void (*lpFun)(void);


HINSTANCE hDll; //DLL句柄

hDll = LoadLibrary("RegularDll.dll");

if (NULL==hDll)

{

MessageBox("DLL加载失败");

}



lpFun addFun; //函数指针

lpFun pShowDlg = (lpFun)GetProcAddress(hDll,"ShowDlg");

if (NULL==pShowDlg)

{

MessageBox("DLL中函数寻找失败");

}

pShowDlg();

}


  上述例子中给出的是显示调用的方式,可以看出,其调用方式与第4节中非MFC DLL的调用方式没有什么不同。
我们照样可以在EXE程序中隐式调用MFC规则DLL,只需要将DLL工程生成的.lib文件和.dll文件拷入当前工程所在的目录,并在RegularDllCallDlg.cpp文件(图12所示对话框类的实现文件)的顶部添加:

#pragma comment(lib,"RegularDll.lib")

void ShowDlg(void);


  并将void CRegularDllCallDlg::OnCalldllButton() 改为:

void CRegularDllCallDlg::OnCalldllButton()

{

ShowDlg();

}

Posted on 2005-11-25 18:50 艾凡赫 阅读(1883) 评论(1)  编辑 收藏 引用 所属分类: DLL 技术

Feedback

# re: MFC规则DLL的调用  回复  更多评论   

2008-06-13 16:46 by awshome
原来有啊. 我编译DLL工程后,不会出现LIB文件啊.

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理