乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 101|回复: 7

to easypower: 这样加载一个MFCDLL.dll(实现弹出一对话框)为何fail啊?

[复制链接]

29

主题

92

帖子

3

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
208
发表于 2003-11-8 13:44:00 | 显示全部楼层 |阅读模式
这样加载一个MFCDLL.dll(实现弹出一对话框)为何fail啊?
在响应函数中添加如下代码:(还将MFCDLL.dll拷贝到debug目录下)
typedef void (WINAPI * TESTDLL)();
HINSTANCE hmod;
hmod = :oadLibrary ("MFCDLL.dll");
if(hmod==NULL)
{
  AfxMessageBox("Fail");
}
TESTDLL lpproc;
lpproc = (TESTDLL)GetProcAddress (hmod,"Show");
if(lpproc!=(TESTDLL)NULL)
  (*lpproc)();

FreeLibrary(hmod);
MFCDLL.dll中的响应函数如下所示:
extern "C" __declspec(dllexport) void Show()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CTest test;
test.DoModal ();
}
在纯vc的exe文件中能成功调用MFCDLL.dll,为何到arx中不行了呢????(疑惑.......)
程序代码照着下面的网址上的讲解添加的
http://www.vckbase.com/document/viewdoc.asp?id=543
回复

使用道具 举报

2

主题

33

帖子

1

银币

初来乍到

Rank: 1

铜币
41
发表于 2003-11-8 15:32:00 | 显示全部楼层
你没有设置当前的运行环境的:
你现在用下面的代码试一试
]:
TESTDLL lpproc;
//得到资源的HANDLE
::afxSetResourcehandle(hmod);
lpproc = (TESTDLL)GetProcAddress (hmod,"Show");
//返回CAD的HANDLE
afxSetResourcehandle(acedGetAcadResourceInstance());
if(lpproc!=(TESTDLL)NULL)
  (*lpproc)();

FreeLibrary(hmod);
回复

使用道具 举报

29

主题

92

帖子

3

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
208
发表于 2003-11-9 21:54:00 | 显示全部楼层
typedef void (WINAPI * TESTDLL)();
        HINSTANCE hmod;
        hmod = :oadLibrary ("MFCDLL.dll");
        if(hmod==NULL)
        {
                AfxMessageBox("Fail");
        }
        TESTDLL lpproc;
//得到资源的HANDLE
::AfxSetResourceHandle(hmod);
lpproc = (TESTDLL)GetProcAddress (hmod,"Show");
//返回CAD的HANDLE
AfxSetResourceHandle(acedGetAcadResourceInstance());
if(lpproc!=(TESTDLL)NULL)
  (*lpproc)();

FreeLibrary(hmod);
是这样吗?
为何还是AfxMessageBox("Fail");????????
回复

使用道具 举报

2

主题

33

帖子

1

银币

初来乍到

Rank: 1

铜币
41
发表于 2003-11-10 11:18:00 | 显示全部楼层
AfxMessageBox(NULL,"sdfsdf","dsfsdf",MB_OK);
回复

使用道具 举报

29

主题

92

帖子

3

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
208
发表于 2003-11-10 11:47:00 | 显示全部楼层
vc帮助项只见有
int AfxMessageBox( LPCTSTR lpszText, UINT nType = MB_OK, UINT nIDHelp = 0 );
int AFXAPI AfxMessageBox( UINT nIDPrompt, UINT nType = MB_OK, UINT nIDHelp = (UINT) -1 );
Return Value
未曾见AfxMessageBox(NULL,"sdfsdf","dsfsdf",MB_OK);带四个参数的啊?
回复

使用道具 举报

29

主题

92

帖子

3

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
208
发表于 2003-11-10 17:19:00 | 显示全部楼层
看了arx帮助项后,
理论上应该可以的了啊?为何还是弹出fail对话框?
如何在arx中插入断点和打开watch窗口?
回复

使用道具 举报

1

主题

8

帖子

2

银币

初来乍到

Rank: 1

铜币
12
发表于 2003-11-10 22:10:00 | 显示全部楼层
呵呵,两个方法可以解决你的问题:
1,将你的dll文件复制到windows的系统目录下;
或者
2,在程序里面设置一下当前目录为dll所在的目录,
试一下 没错的
回复

使用道具 举报

29

主题

92

帖子

3

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
208
发表于 2003-11-11 08:15:00 | 显示全部楼层
确实ok了,非常感谢10house!!!
用的是——将我的dll文件复制到windows的系统目录下
but
sorry!
2,在程序里面设置一下当前目录为dll所在的目录,这个......如何设置呢?
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-2-4 14:57 , Processed in 0.308057 second(s), 79 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表