如题,我相要调用显示一个dll中的对话框界面,采用显式加载dll的方式,
调用位置的代码如下:typedef void (WINAPI *TESTDLL)();
HINSTANCE hwnd;
hwnd = LoadLibrary(_T("test.DLL"));
if (hwnd == NULL)
{
AfxMessageBox(_T("dll is not exist"));
}
TESTDLL lpproc = (TESTDLL) GetProcAddress(hwnd, "Show");
if (lpproc == (TESTDLL)NULL)
{
AfxMessageBox(_T("function is not exit"));}
(*lpproc)(); //这样就调用了DLL中的Show函数
FreeLibrary(hwnd);Show()函数代码为:extern "C" __declspec(dllexport) void Show()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CTestdlg dlg;
dlg.DoModal();
}这样写测试程序,测试结果很正确,在(*lpproc)(); 这行执行后才会显示所要显示的对话框界面.
但是我按照这样的方式同样调用项目中的dll中的对话框,函数执行完
hwnd = LoadLibrary(_T("test.DLL"));
这行代码后就会显示界面,不知道为何会出现这样的问题,坐等高手解释.....
调用位置的代码如下:typedef void (WINAPI *TESTDLL)();
HINSTANCE hwnd;
hwnd = LoadLibrary(_T("test.DLL"));
if (hwnd == NULL)
{
AfxMessageBox(_T("dll is not exist"));
}
TESTDLL lpproc = (TESTDLL) GetProcAddress(hwnd, "Show");
if (lpproc == (TESTDLL)NULL)
{
AfxMessageBox(_T("function is not exit"));}
(*lpproc)(); //这样就调用了DLL中的Show函数
FreeLibrary(hwnd);Show()函数代码为:extern "C" __declspec(dllexport) void Show()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CTestdlg dlg;
dlg.DoModal();
}这样写测试程序,测试结果很正确,在(*lpproc)(); 这行执行后才会显示所要显示的对话框界面.
但是我按照这样的方式同样调用项目中的dll中的对话框,函数执行完
hwnd = LoadLibrary(_T("test.DLL"));
这行代码后就会显示界面,不知道为何会出现这样的问题,坐等高手解释.....
解决方案 »
- 如何取得ESP的值
- MD5加密问题
- 请问那里有透明的控件(CButton)?或怎样做一个透明的控件(CButton),要求是完全透明!
- 高分求救!
- dll的简单问题----100分
- 用installshield7打包时,生成的包含要打包文件的文件中没有Data.cab,而是一个programfiles的文件夹,请问怎样把源文件压缩为.cab格式。
- 在dos下如何实现串行通讯.我写的代码有什么问题?请指教!谢谢
- 如何让CTreeCtrl有一个tag属性,用来存放附加信息,例如数据库ID号
- FFMPEG库解码1080P帧率60帧延时
- 可用分490,为什么提问只能给27分?
- const CString类型如何做双语
- 关于MFC对话框程序的键盘响应方法
hwnd = LoadLibrary(_T("test.DLL"));
这行代码就会出现界面,而不是等待调用函数时出现,求高人解释