我照虎画猫,将一个对话框类放到了一个“regular dll using shared MFC DLL"中做成dll(ShowImage24Dlg.dll),然后在主程序中调用。主要声明和调用语句如下。在编译的时候没有提错。
1)如果是release版,那么什么问题提示也没有
2)如果是Debug版,那么编译通过,但是运行到调用的时候会先后弹出三个“Debug Assertion Failed”的错误框。都点击“忽略”之后却还能继续执行显示对话框。请教是什么原因,如何修改。谢谢在DLL中:
extern "C" __declspec(dllexport) void ShowImage(BYTE *pData, int width,int height)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CDlgShowImage DlgShowImage(pData, width,height);//对话框类我使用了带参数的构造函数,其中Byte* pData是new出来的一块内存的指针
AfxMessageBox("000") ;//每出现一个提示框,就会连续出来三个错误Debug Assertion Failed
AfxMessageBox("111") ; DlgShowImage.DoModal ();
}
在主程序调用:
typedef void (WINAPI * SHOWDLG)(BYTE *pData, int width,int height);
HINSTANCE hmod;
hmod = ::LoadLibrary ("ShowImage24Dlg.dll");
SHOWDLG lpproc;
lpproc = (SHOWDLG)GetProcAddress (hmod,"ShowImage");
lpproc (tempImage , rectcut.RectWidth*rectcut.xArray , rectcut.RectHeight*rectcut.yArray);对了,我的主程序中设置了所有的对话框的背景色,该DLL在DEBUG版中会继承主程序设置的背景色,而Release下不继承!!!!!
1)如果是release版,那么什么问题提示也没有
2)如果是Debug版,那么编译通过,但是运行到调用的时候会先后弹出三个“Debug Assertion Failed”的错误框。都点击“忽略”之后却还能继续执行显示对话框。请教是什么原因,如何修改。谢谢在DLL中:
extern "C" __declspec(dllexport) void ShowImage(BYTE *pData, int width,int height)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CDlgShowImage DlgShowImage(pData, width,height);//对话框类我使用了带参数的构造函数,其中Byte* pData是new出来的一块内存的指针
AfxMessageBox("000") ;//每出现一个提示框,就会连续出来三个错误Debug Assertion Failed
AfxMessageBox("111") ; DlgShowImage.DoModal ();
}
在主程序调用:
typedef void (WINAPI * SHOWDLG)(BYTE *pData, int width,int height);
HINSTANCE hmod;
hmod = ::LoadLibrary ("ShowImage24Dlg.dll");
SHOWDLG lpproc;
lpproc = (SHOWDLG)GetProcAddress (hmod,"ShowImage");
lpproc (tempImage , rectcut.RectWidth*rectcut.xArray , rectcut.RectHeight*rectcut.yArray);对了,我的主程序中设置了所有的对话框的背景色,该DLL在DEBUG版中会继承主程序设置的背景色,而Release下不继承!!!!!
解决方案 »
- 求教文件列表的问题
- 关于CSpinButtonCtrl不能设置负数问题!
- 大家看过MFCIE没有?请问为什么显示www.163.com的时候,打开里面的军事连接,显示的网站显示到ie浏览器里面?
- 关于LIST控件的问题
- 运行一个com组件,虚拟内存一直增加是怎么回事?(改装成com前的c++程序是没有内存泄漏的)
- 一个很菜得问题
- 为什么考高程的同志都是男的,我去,我查了30多个,就一个是女的,还不知道是不是真的!
- 征集使用拼音开头字母检索相应汉字的方法和简繁互换的方法
- 求助:如何通过程序使用户不能使用网络?
- 求助:关于serialport类的问题····
- 我想写一个查看计算机的有那些程序正上着网。和网络连接着。这要用哪方面的知识呀?
- 想让编辑框内的文字滚动,如何实现?
1)这是指向内存存放图像数据的指针,如果溢出了就不会再正确显示图像了
2)这对话框类本来没做成DLL前,放在主程序中,运行良好的。
2. 是不是你AfxMessageBox("000")时,系统刷新了某个界面,而此时,还不能正确表示该界面。
-------刷新问题
3.通过Call Stack 察看哪个地方出错了
我也遇到过,OnPaint重画不过来
另外,我在主程序中设置了对所有对话框有效的背景颜色,在Debug版中能显示背景颜色,而在Release版中确不显示,还是默认的灰色背景呢?
当出现问题时,你可以通过call stack窗口确认那里出错了。至于怎么修正么?
1。 在出错的函数中,尽可能屏蔽更多的代码。
2. 使用call stack可以找到出错的位置,然后确定如何修正。
出错的地方很可能是你定义的全局变量或全局函数。先看看吧!
我的email:[email protected]
msn:[email protected]