首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

好头疼的有关问题,DLL中使用MessageBox, 总是错

2012-02-01 
好头疼的问题,DLL中使用MessageBox, 总是错在动态链接库中使用MessageBox(1)::MessageBox(0,xx ,xxx ,

好头疼的问题,DLL中使用MessageBox, 总是错
在动态链接库中使用MessageBox

(1)   ::MessageBox(0,   "xx ",   "xxx ",   MB_OK);
(2)   ::MessageBox(m_hWnd,   "xx ",   "xxx ",   MB_OK);   //Dll中一个窗口的句炳
(3)   ::MessageBox(m_hFrame,   "xx ",   "xxx ",   MB_OK);   //主程序中一个窗口的句炳
(4)   AfxMessageBox( "xxx ");
(5)   this-> MessageBox( "xxx ");   //在窗口类的成员函数中调用

不管怎么用,都是出错,折磨我一上午了,编译都通过,出错是:
0xC0000005:   Access   Violation

干脆我就自己写了一个对话框然后

HINSTANCE   old_hinst   =   AfxGetResourceHandle();  
AfxSetResourceHandle(theApp.m_hInstance);  
CMyDlg   dlg;
dlg.DoModal();
AfxSetResourceHandle(old_hinst);

还是出现错误
0xC0000005:   Access   Violation

大侠帮帮我!!!


[解决办法]
不管怎么说,
(1) ::MessageBox(0, "xx ", "xxx ", MB_OK);
这句应该不需要用到什么AfxManageModuleState的,如果这句也出错的话,只能说明在这个Create2函数中不能有消息循环。肯定在调用这个函数的过程时干了些比较恶心的事情。
[解决办法]
我以前也遇到过这个问题,后来发现问题不是出在这个MESSAGEBOX上,也不是出在XXXDIALOG.DOMODAL上,而是出在.................不要使用CSTRING上,一用就要死掉,后来我的程序全使用wchar_t xxx[],用着用着发现还是很顺手的,另外,你如果无法使用MessageBox的话,你也一定无法读写文件,不信你试试.而且无法使用_beginthread()之类的函数,烦吧.后面还有得烦呢,我一个超大的SDK工程就是这样走过来的,错误了N次,N大于100,因为与WINLOGON相关,所以每一次都要重启2次(第一次清除,以免再次启动自动加载又死了,另一次才是正常启动),所以就这么重启了近三百次.

热点排行