明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2330|回复: 7

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

[复制链接]
发表于 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
发表于 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);
 楼主| 发表于 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");????????
发表于 2003-11-10 11:18:00 | 显示全部楼层
AfxMessageBox(NULL,"sdfsdf","dsfsdf",MB_OK);
 楼主| 发表于 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);带四个参数的啊?
 楼主| 发表于 2003-11-10 17:19:00 | 显示全部楼层
看了arx帮助项后,
理论上应该可以的了啊?为何还是弹出fail对话框?
如何在arx中插入断点和打开watch窗口?
发表于 2003-11-10 22:10:00 | 显示全部楼层
呵呵,两个方法可以解决你的问题:
1,将你的dll文件复制到windows的系统目录下;
或者
2,在程序里面设置一下当前目录为dll所在的目录,

试一下 没错的
 楼主| 发表于 2003-11-11 08:15:00 | 显示全部楼层
确实ok了,非常感谢10house!!!
用的是——将我的dll文件复制到windows的系统目录下
but
sorry!
2,在程序里面设置一下当前目录为dll所在的目录,这个......如何设置呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 20:29 , Processed in 0.168162 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表