类型:转载 责任编辑:asp.net 日期:2007/05/23
热门软件下载:
各位大侠,我用一个exe调用一个dll里的对话框,不知道为什么对话框无法显示。在dll里写了一个接口函数。在这个函数里调用了这个对话框。然后在exe中调用这个接口函数。不知道为什么对话框显示不出来。郁闷~~~~~有人知道是什么原因吗?都是staticlib链接的。
网友回答:
跟踪,看看是调用哪个函数出了问题?
http://www.vckbase.com/document/viewdoc/?id=543
你在dll里调试看一下,把出问题的代码给出来吧,就是创建对话框那部分。
帮贴出来,呵呵:
1、第一步创建一“MFC AppWizard (dll)”工程,接下来选择“Regular Dll using shared MFC DLL”,点击“Finish”。
2、添加一对话框资源到工程中,从菜单中选择Insert->Resource,添加一“Dialog”
选择“New”,至此对话框已添加到DLL工程中。
3、为对话框添加一新类,如:CTest,基类为CDialog。
4、在MFCDLL.cpp中(因创建的工程为MFCDLL)添加接口函数:
extern "C" __declspec(dllexport) void Show()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CTest test;
test.DoModal ();
}
别忘了在文件中添加: #include "Test.h":),大功告成,编译吧!
5、用VC新建一对话框工程,在一按钮点击事件中添加如下代码: typedef void (WINAPI * TESTDLL)();
HINSTANCE hmod;
hmod = ::LoadLibrary ("mfcdll.dll");
if(hmod==NULL)
{
AfxMessageBox("Fail");
}
TESTDLL lpproc;
lpproc = (TESTDLL)GetProcAddress (hmod,"Show");
if(lpproc!=(TESTDLL)NULL)
(*lpproc)();
FreeLibrary(hmod);
6、试试看,是不是DLL中对话框显示出来了:)
测试环境:VC6.0+Win2000