debug assertion failed问题,搞不懂了……(在线) 在基于对话框的程序中,为了在自定义的类(这个类本身在其他类中被创建)中对主对话框中控件MSFlexGrid的操作,我将主对话框作为全局变量,(即将CMyWinDlg dlg;放在CMyWinApp theApp;下面),编译时没有问题,可执行时出现debug assertion failed信息,但在按“重试”或“忽略”可继续执行。花了很多时间一直没有搞明白,所以各位指点。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 略贴出代码。这样做是太奇怪了,不像是MFC的做法。 是这样的,自定义一个coblist做为数据源(由类manage管理),在对话框上有一个edit控件和一个mygrid控件(延生于msflexgrid),当在edit中输入内容时,按不同键将内容存储至coblist中对应的记录中,同时由manage类发出setchange信息(自定义)通知handlecontrol类(自定义)修改mygrid控件中对应的单元格内容;同样当在mygird中修改时也要对coblist进行修改,并对对话框上另一控件内容进行修改;所以现在关键是如何将对话框上的mygrid控件传给handlecontrol类,一开始我将mygrid的句柄传给它,但到最后没有办法引用的它的属性及事件,所以只能将对话框做为全局变量了,编译是通过的,但出现的情况就如上所说的,搞不懂了啊,请各位指点啊。 CMyWinApp theApp;CMyWinDlg dlg;执行出错:afxwin1.inl line:22但按“重试”或“忽略”可继续。 to:zhaolaoxin这句出错 { ASSERT(afxCurrentResourceHandle != NULL); class CSaleManage : public CObject{public: CSaleManage(); virtual ~CSaleManage();//Attributesprivate: CHandleControl* pGoodsSaleGrid;public: CTypedPtrList<CObList,CSaleRecord*> m_RecordList; UINT m_nCurrentRecordNumber;//Operationspublic: BOOL IsCompleted(UINT nSerialNumber); //判断记录是否完成必要内容 UINT GetRecordCount(); POSITION FindRecordBySN(UINT nSerialNumber); CSaleRecord* FindRecord(UINT nSerialNumber); CSaleRecord* NewRecord(); void UpdateRecord(CSaleRecord* pRecord); void AddLest(CHandleControl* pHandleControl); void SetChange(int nRow,int nCol);}; class CHandleControl : public CObject{public: CHandleControl(); virtual ~CHandleControl();public: CHandleControl(CMyWndDlg* pwnd); void ChangeData(int nRow,int nCol,CString str);private: CMyWndDlg* m_pwnd;}; 程序在执行时首先初始化全局变量,这个时候资源文件还没有被加载。CMyWinDlg是一个对话框类,你定义它的一个对象时,需要执行它的构造函数,在此需要连接资源文件,所以会出现你说的那个错误。你的正确做法应该是定义一个全局指针CMyWinDlg* g_pWinDlg,然后在程序中CMyWinDlg dlg;g_pWinDlg = &dlg; 不过我还想请教各位啊,我这种设计思想不知是否符合MFC的规则,谢谢啊因为我一直做c的,所以这种思想还没有形成。还要向各位多学习啊。 如何取得数据的ID值,有点深度 怎么在list里显示一个文件夹的所有图片的缩略图和在视频窗口贴图 如何画一个矩形框? 哪位高手开发过浏览器插件? [高分]请问在自写的CRichEdit里面实现的文本链接事件触发后如何改变文字显示(如QQ发文件点了接受以后)? 在线程里accept为什么不阻塞? vc配置好cppunit后运行安装包中的examples中的例子报错 关于编译器的优化设置 请问一下CAsyncSocket 如何让进程退出的时候删除执行文件 VC的CEdit只能输入30000字节,请教如何突破这个限制??? 如何得到CView的指针?
CMyWinDlg dlg;执行出错:afxwin1.inl
line:22
但按“重试”或“忽略”可继续。
{
public:
CSaleManage();
virtual ~CSaleManage();//Attributes
private:
CHandleControl* pGoodsSaleGrid;public:
CTypedPtrList<CObList,CSaleRecord*> m_RecordList;
UINT m_nCurrentRecordNumber;//Operations
public:
BOOL IsCompleted(UINT nSerialNumber); //判断记录是否完成必要内容
UINT GetRecordCount();
POSITION FindRecordBySN(UINT nSerialNumber);
CSaleRecord* FindRecord(UINT nSerialNumber);
CSaleRecord* NewRecord(); void UpdateRecord(CSaleRecord* pRecord);
void AddLest(CHandleControl* pHandleControl);
void SetChange(int nRow,int nCol);
};
{
public:
CHandleControl();
virtual ~CHandleControl();public:
CHandleControl(CMyWndDlg* pwnd);
void ChangeData(int nRow,int nCol,CString str);private:
CMyWndDlg* m_pwnd;
};
CMyWinDlg是一个对话框类,你定义它的一个对象时,需要执行它的构造函数,在此需要连接资源文件,所以会出现你说的那个错误。你的正确做法应该是定义一个全局指针CMyWinDlg* g_pWinDlg,然后在程序中
CMyWinDlg dlg;
g_pWinDlg = &dlg;
因为我一直做c的,所以这种思想还没有形成。还要向各位多学习啊。