posts - 11,  comments - 12,  trackbacks - 0
1.类和函数的申明必须加上AFX_EXT_CLASS宏
AFX_EXT_CLASS宏的msdn解释:

Extension DLLs use the macro AFX_EXT_CLASS to export classes; the executables that link to the extension DLL use the macro to import classes. With the AFX_EXT_CLASS macro, the same header file(s) used to build the extension DLL can be used with the executables that link to the DLL.

类示例:
1class AFX_EXT_CLASS CMyClass : public CDocument
2{
3// <body of class>
4}
;
5
6
函数示例:
extern "C" AFX_EXT_CLASS Min(intint); //导出函数

2.在类的头文件中定义你dll中的资源值
示例:
1#define IDR_MYMENU 9002  //菜单资源
2#define ID_MYTEST 9003   //菜单下拉按钮资源
 
3.类cpp文件编写正确后编译源程序
编译结束后,在资源头文件中会有你在类头文件中定义的资源项,但是资源的值往往和你在类头文件中定义的值不相同,你必须手工改过来

4.使用MFCDLL
(1).讲生成号的.dll和.lib文件拷贝到你工程文件夹下,并且将你的类头文件也拷贝到工程文件夹下,在你需要创建类对象的文件前包含头文件
(2).把.lib文件添加到你的工程资源中
(3).加载dll资源
示例:
1//MFC扩展dll中资源的加载  记得在编译值钱需要在工程中导入相应的lib文件,还有在工程文件夹中赋值dll中类的头文件
2    HINSTANCE hdll = LoadLibrary("MFCEXTDLL.dll");  //加载dll文件
3    if (hdll != NULL)  //判断是否加载成功
4    {
5        HMENU hmen = LoadMenu(hdll, MAKEINTRESOURCE(IDR_MYMENU));  //从一个可执行文件中加载菜单资源
6        ::SetMenu(this->GetSafeHwnd(), hmen);   //给窗口分配一个新的菜单
7        ::DrawMenuBar(this->GetSafeHwnd());   //重新绘画菜单
8        FreeLibrary(hdll);  //释放dll模块实例
9    }
(4).添加你dll资源中的消息响应函数
afx_msg void OnTestTestDLL();//函数申明
ON_COMMAND(ID_MYTEST, OnTestTestDLL)   //消息映射
//函数实现
void CUSEMFCDLLDlg::OnTestTestDLL()
{
/*
   Funcation body
*/

}
posted on 2009-09-01 16:53 人生在于攀登! 阅读(165) 评论(0)  编辑 收藏 引用

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


<2009年9月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

常用链接

留言簿

随笔档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜