1、过程:
我用mfc appwizard(dll) 建了一个dll工程mydll,这时在此工程中只有Cmydll一个类,然后我又添加了一个about对话框类CAboutDLg,我在Cmydll类中添加了一个成员函数showabout(),想在这个函数中打开这个about对话框,语句是
CAboutDlg aboutdlg;
aboutdlg.DoModal();
这时mydll.def如下:
; clockdemo.def : Declares the module parameters for the DLL.LIBRARY "clockdemo"
DESCRIPTION 'clockdemo Windows Dynamic Link Library'EXPORTS
; Explicit exports can go here
showabout @1//这是我添加的
然后我在其EXPORTS中添加了一项showabout。
2、结果
最后我在另外一个exe工程中调用mydll工程导出的showabout函数,结果这个对话框总是显示不出来,调试发现程序已经进入showabout函数中也执行了上面两条语句,可是程序没有反应。
很是迷惑,请高手指教!!
3、调试
调试程序能够进入showabout()函数,但是就是显示不出对话框,添加了AFX_MANAGE_STATE(AfxGetStaticModuleState());也不行。
showabout()函数如下:
void CMydllApp::showabout()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CAboutDlg aboutdlg;
aboutdlg.DoModal();
//MessageBox(0,"aaaaaaaaaaaaaaa","错误",MB_OK);
}
我把MessageBox解封时,程序可以弹出这个消息对话框.
很是迷惑,请高手指教!!
我用mfc appwizard(dll) 建了一个dll工程mydll,这时在此工程中只有Cmydll一个类,然后我又添加了一个about对话框类CAboutDLg,我在Cmydll类中添加了一个成员函数showabout(),想在这个函数中打开这个about对话框,语句是
CAboutDlg aboutdlg;
aboutdlg.DoModal();
这时mydll.def如下:
; clockdemo.def : Declares the module parameters for the DLL.LIBRARY "clockdemo"
DESCRIPTION 'clockdemo Windows Dynamic Link Library'EXPORTS
; Explicit exports can go here
showabout @1//这是我添加的
然后我在其EXPORTS中添加了一项showabout。
2、结果
最后我在另外一个exe工程中调用mydll工程导出的showabout函数,结果这个对话框总是显示不出来,调试发现程序已经进入showabout函数中也执行了上面两条语句,可是程序没有反应。
很是迷惑,请高手指教!!
3、调试
调试程序能够进入showabout()函数,但是就是显示不出对话框,添加了AFX_MANAGE_STATE(AfxGetStaticModuleState());也不行。
showabout()函数如下:
void CMydllApp::showabout()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CAboutDlg aboutdlg;
aboutdlg.DoModal();
//MessageBox(0,"aaaaaaaaaaaaaaa","错误",MB_OK);
}
我把MessageBox解封时,程序可以弹出这个消息对话框.
很是迷惑,请高手指教!!
另外,我试了一次用Extension DLL类型建立了工程,void CMydllApp::showabout()函数改成了void WINAPI showabout(),因为在Extension DLL类型建立的工程中已没有CMydllApp类了,结果这时就可以。
怎么回时呀,这两种建动态库的区别是什么呀?如何让第一种也可以呀?