CListCtrl GetItemCount() 断言错误 [问题点数:40分,结帖人chenchenyangll]

Bbs1
本版专家分:44
结帖率 100%
Bbs1
本版专家分:44
Bbs10
本版专家分:176318
版主
Blank
优秀版主 2014年11月论坛优秀版主
Blank
微软MVP 2010年7月 荣获微软MVP称号
2005年7月 荣获微软MVP称号
2006年7月 荣获微软MVP称号
Blank
红花 2010年1月 VC/MFC大版内专家分月排行榜第一
2004年4月 VC/MFC大版内专家分月排行榜第一
Blank
黄花 2009年7月 VC/MFC大版内专家分月排行榜第二
2005年9月 VC/MFC大版内专家分月排行榜第二
2004年6月 VC/MFC大版内专家分月排行榜第二
2004年3月 VC/MFC大版内专家分月排行榜第二
Bbs1
本版专家分:44
Bbs10
本版专家分:172724
Blank
红花 2018年7月 VC/MFC大版内专家分月排行榜第一
2017年10月 VC/MFC大版内专家分月排行榜第一
2016年3月 VC/MFC大版内专家分月排行榜第一
2014年10月 VC/MFC大版内专家分月排行榜第一
2014年9月 VC/MFC大版内专家分月排行榜第一
2014年7月 VC/MFC大版内专家分月排行榜第一
2014年6月 VC/MFC大版内专家分月排行榜第一
2014年5月 VC/MFC大版内专家分月排行榜第一
2014年4月 VC/MFC大版内专家分月排行榜第一
2014年2月 VC/MFC大版内专家分月排行榜第一
2013年7月 VC/MFC大版内专家分月排行榜第一
Blank
黄花 2019年8月 VC/MFC大版内专家分月排行榜第二
2019年7月 VC/MFC大版内专家分月排行榜第二
2019年6月 VC/MFC大版内专家分月排行榜第二
2019年5月 VC/MFC大版内专家分月排行榜第二
2019年4月 VC/MFC大版内专家分月排行榜第二
2019年3月 VC/MFC大版内专家分月排行榜第二
2018年10月 VC/MFC大版内专家分月排行榜第二
2018年9月 VC/MFC大版内专家分月排行榜第二
2018年8月 VC/MFC大版内专家分月排行榜第二
2018年5月 VC/MFC大版内专家分月排行榜第二
2017年12月 VC/MFC大版内专家分月排行榜第二
2017年6月 VC/MFC大版内专家分月排行榜第二
2017年5月 VC/MFC大版内专家分月排行榜第二
2017年1月 VC/MFC大版内专家分月排行榜第二
2016年11月 VC/MFC大版内专家分月排行榜第二
2016年4月 VC/MFC大版内专家分月排行榜第二
2014年11月 VC/MFC大版内专家分月排行榜第二
2014年1月 VC/MFC大版内专家分月排行榜第二
2013年10月 VC/MFC大版内专家分月排行榜第二
2013年9月 VC/MFC大版内专家分月排行榜第二
2013年6月 VC/MFC大版内专家分月排行榜第二
2013年4月 VC/MFC大版内专家分月排行榜第二
2012年6月 VC/MFC大版内专家分月排行榜第二
Blank
蓝花 2018年11月 VC/MFC大版内专家分月排行榜第三
2018年6月 VC/MFC大版内专家分月排行榜第三
2018年4月 VC/MFC大版内专家分月排行榜第三
2018年3月 VC/MFC大版内专家分月排行榜第三
2018年2月 VC/MFC大版内专家分月排行榜第三
2018年1月 VC/MFC大版内专家分月排行榜第三
2017年11月 VC/MFC大版内专家分月排行榜第三
2017年9月 VC/MFC大版内专家分月排行榜第三
2017年8月 VC/MFC大版内专家分月排行榜第三
2017年4月 VC/MFC大版内专家分月排行榜第三
2016年12月 VC/MFC大版内专家分月排行榜第三
2016年10月 VC/MFC大版内专家分月排行榜第三
2016年2月 VC/MFC大版内专家分月排行榜第三
2015年10月 VC/MFC大版内专家分月排行榜第三
2015年7月 VC/MFC大版内专家分月排行榜第三
2012年10月 VC/MFC大版内专家分月排行榜第三
Bbs1
本版专家分:44
在对话框中调用CListCtrl::GetItemCount出现断言
在对话框的消息响应函数中调用CListCtrl::GetItemCount出现<em>断言</em>,但在窗口框架类的消息响应中调用却不会.<em>断言</em>出现在ASSERT(::IsWindow(hWnd),是否说明对话框不是窗口呢??rn 假如要处理对话框的button响应,而且要调用ClistCtrl成员函数应该怎么吧?rn Please give me a hand!!!!Thx!
关于Clistctrl类Getitemcount的问题
我是从另外一个list1中选取一定数量的添加到这个list2中rn当我选择list2的属性为sort时,<em>getitemcount</em>总是不能和画面中的list2 item的数量一致rn去掉sort属性就返回正确rnrn很不解rn是什么原因啊?
断言错误
程序能通过编译,而且可以运行,但是在运行时出现以下<em>错误</em>,为什么?rn./src/common/combocmn.cpp(1786): assert "iface" failed in DoSetPopupControl(): no popup interface set for wxComboCtrlrn我把程序中下面这句话注释掉rnfpointer->SetValue(content);rn就不会出错,为什么,求高手解答。rnPS:我是新手,希望大家说详细点!rn
List Control控件技巧总汇【一】
以下未经说明,listctrl默认view 风格为report-------------------------------------------------------------------------------1. CListCtrl 风格       LVS_ICON: 为每个item显示大图标       LVS_SMALLICON: 为每个item显示小图标       LVS_LIST: 显示一列带有小图标的item       LVS_REPORT: 显示item详细资料直观的理解:wi
CListCtrl::GetItemCount返回的值不对啊
#ifndef CMyCListCtrl_H #define CMyCListCtrl_H __declspec(dllimport) #endif class CMyCListCtrl_H CMyC
错误断言
首先声明:这些内容主要是面向C语言的初学者,尤其是正在学习C语言的学生。     在《C语言字符型数据(一)》中,我们对文本文件中的内容进行了简单的加密处理。程序如下所示: #include "stdio.h" int main() {    char ch;    freopen("original.txt","r",stdin) ; //输入输出被分别重定向到两个文件。    f
CDC类的断言错误
我写了一段给框架加入滚动条以方便浏览位图的程序.rn我在框架的View类的声明中加入了两个变量:rnprivate:rn CDC m_MemDC;rn CBitmap m_BackBitmap;rn然后在相对应的实现文件中的OnInitialUpdate()函数中对其rn进行了初始化:rn CDC* pDC= this->GetDC(); --1rn m_MemDC.CreateCompatibleDC(pDC); --2rn m_BackBitmap.LoadBitmap(IDB_BACKGROUND); --3rn其他部分的代码都写好.编译,连接通过.但是在运行时跳出了rn三个Debug Assertion Failed对话框.都是在wingdi.cpp中的<em>断言</em>.rn分别在Line:109, 110, 1120.我用call stack 跟踪了一下,rncall stack窗口中分别停在了CDC::Attach(HDC__ * 0xe70109fa) line 109 + 25 bytesrn和CGdiObject::Attach(void * 0x2305177f) line 1120 + 28 bytes的地方.rn好象程序是在初始化的第二,三行发生了<em>错误</em>.各位高手帮忙分析一下,如何排除?rnrn另:我也曾经在一个用App Wizards自动生成的框架中写过这几段代码,没有任何问题.rn 我现在使用的这个框架中间使用了别人的代码,其中视图类并非直接继承自CSCrollView.rn 而是继承自自己改写的一个类,这个类从CScrollView中派生.因此我不能肯定是不是rn 他代码中其它代码的影响.rn
blink的一处断言错误
--url=http://music.yule.sohu.com/20170926/n514522612.shtml 里有<em>断言</em><em>错误</em>   node.dll!blink::ComposedTreeTraversal::assertPrecondition(const blink::Node & node) 行 123 C++   node.dll!blink::ComposedTreeTra
cformview的断言错误
我创建了对话框,它的基类是cformview,创建时我设置这个cformview的ID号码是IDD_EDIT_VIEW 在resource.h里的宏定义是 32939rn可是每次显示它的时候都会有个<em>断言</em>ASSERT的<em>错误</em>,通过调试我发现位置在rnCFormView::CFormView(UINT nIDTemplate)rnrn ASSERT_VALID_IDR(nIDTemplate);rn.......rnrn(nIDTemplate的值是32939)rn请问为什么会有这个<em>错误</em>呢,该怎么解决呢??????????
BIEE出现断言错误
在做BI展现时,我拖三个维度进行展现,这个时候的结果显示是正常的,但我若把其中一个维度排除掉(隐藏,不显示),就会出现<em>错误</em>,<em>错误</em>显示是说内部<em>断言</em>的条件失败了。rn我感觉数据本身是没错的,因为不隐藏维度的时候数据的显示是正确的,为什么隐藏之后就会变成这样呢?不知道各位大侠有遇到过这个<em>错误</em>吗?有什么解决或者找出问题的方法吗?
CPaintDC dc(this);断言错误
gh0st远控的屏幕源码 当接收到对方主机发送来的第一段图像数据会调用OnPaint()函数重绘 但是运行发生<em>断言</em><em>错误</em>:rnFile : wincore.cpprnLine : 890rnrn[code=C/C++]rnCPaintDC::CPaintDC(CWnd* pWnd)rnrn ASSERT_VALID(pWnd); //这句<em>断言</em><em>错误</em>rn ASSERT(::IsWindow(pWnd->m_hWnd));rnrn if (!Attach(::BeginPaint(m_hWnd = pWnd->m_hWnd, &m_ps)))rn AfxThrowResourceException();rnrn[/code]rnrn[code=C/C++]rnvoid CScreenSpyDlg::OnPaint() rnrnCPaintDC dc(this); // device context for painting //这里<em>断言</em><em>错误</em>rnrn// TODO: Add your message handler code herernif (m_bIsFirst)rnrnDrawTipString(_T("Please wait - initial screen loading"));rnreturn;rnrnrnBitBltrn(rnm_hDC,rn0,rn0,rnm_lpbmi->bmiHeader.biWidth, rnm_lpbmi->bmiHeader.biHeight,rnm_hMemDC,rnm_HScrollPos,rnm_VScrollPos,rnSRCCOPYrn);rnrn// (BYTE)-1 = 255;rn// Draw the cursorrnif (m_bIsTraceCursor)rnDrawIconEx(rnm_hDC, // handle to device context rnm_RemoteCursorPos.x - ((int) m_dwCursor_xHotspot) - m_HScrollPos, rnm_RemoteCursorPos.y - ((int) m_dwCursor_yHotspot) - m_VScrollPos,rnm_CursorInfo.getCursorHandle(m_bCursorIndex == (BYTE)-1 ? 1 : m_bCursorIndex), // handle to icon to draw rn0,0, // width of the icon rn0, // index of frame in animated cursor rnNULL, // handle to background brush rnDI_NORMAL | DI_COMPAT // icon-drawing flags rn);rn// Do not call CDialog::OnPaint() for painting messagesrnrn rn[/code]
断言错误怎么样排除???
程序老是出现<em>断言</em><em>错误</em>,可实在找不到解决的办法,哪位高手能够相告?rn多谢了!
界面的断言错误
各位高手:rn我的程序是在两个View之间切换,分别是在两个View中显示地图和三维仿真,现在在地图中做了一个道路导航功能,弹出一个对话框,但是出现<em>断言</em><em>错误</em>,指明WINCORE.CPP LINE 991,跟踪后是这一行出现问题ASSERT(pMap->LookupPermanent(hWndOrig) == NULL);,请问怎么解决,请指教
CReBar::AddBar()断言错误
void CMainFrame::OnTest() rnrn // TODO: Add your command handler code herern CReBar myRebar;rn myRebar.Create(this);rn CToolBar toolbar1;rn toolbar1.LoadToolBar(IDR_MAINFRAME);rn myRebar.AddBar(&toolbar1);rn CToolBar toolbar2;rn toolbar2.LoadToolBar(IDR_TOOLBAR1);rn myRebar.AddBar(&toolbar2); rnrnrn目的是想新建一个控制条,往里面加两个工具条,但是在执行AddBar时出现Debug Assertion Failed!rn查看bartool.cpp文件是在下面的这个<em>断言</em>出现<em>错误</em>,不知道为什么,请高手们多多指教。rnBOOL CReBar::_AddBar(CWnd* pBar, REBARBANDINFO* pRBBI)rnrn ASSERT(::IsWindow(pBar->m_hWnd));rn
CSocket断言错误
我用CSocket传输文件,接收时会出现<em>断言</em><em>错误</em>:socketcore.cpp,line: 1466,我看了一下这个文件,<em>断言</em>是OnSocketDead函数里的assert(hEvent!=Null)这句,请问各位大侠这是什么问题呢?
为什么会有断言错误
#include rn#include "resource.h"rnclass yyy:public CFrameWndrnrnpublic :rn CMenu *m;rn yyy()rn rn m=new CMenu;rn Create(0,"Hell0");rn m->LoadMenu(IDR_MENU1);rn SetMenu(m);rn rnrn;rnrnclass zzz:public CWinApprnrnrnrnpublic :rn zzz()rn rn yyy *a;rn a=new yyy;rn m_pMainWnd=a;rn a->ShowWindow(SW_SHOWMAXIMIZED);rnrnrn rn;rnrnzzz a;
debug下的断言错误,请教~
我写了一个程序,运行的时候是正常的,但是我向tab生成的第一个标签里的对话框的的一个spin控件添加一个变量m_spin1,用debug调试的时候就出现了一个<em>断言</em><em>错误</em>。rnASSERT(pWnd->m_hWnd == NULL); // only do once ----定位在这句rn而用release调试的时候就可以运行,请教各位大虾,这是怎么回事呢,有没有人遇到类似的问题?rn
MFC OnDestroy()断言错误???????
我希望客户正常退出前能发给服务端下线消息所以写了以下代码:rnrn服务端接收部分判断:rnvoid fuwuduanReceive::OnReceive(int nErrorCode)rnrn if(str==_T("woxiale"))rn rn CString name_desu;rn arIn>>name_desu;rn arIn.Close();rn int o=m_pR->m_list.GetCount();rn int counting_go=0;rn for(int u=0;u!=o;++u)rn rn CString word_to;rn m_pR->m_list.GetText(u,word_to);rn if(name_desu==word_to)rn counting_go=u;rn rn rn m_pR->m_list.DeleteString(counting_go);rn m_pR->m_out+=name_desu;rn m_pR->m_out+=_T("已下线!\r\n");rn m_pR->UpdateData(FLASE);rn rnrnrn客户端发送部分:rnvoid CkehuduanDlg::OnDestroy()rnrn CSocketFile file(&MySocket);rn CArchive arOut(&file,CArchive::store);rn CString word(_T("woxiale"));rn arOut<
afxwin2.inl line588的断言错误
我的程序编译运行都通过了,用inno5.2制作了个安装包。在有VC的机器上能运行,但是在没有VC的机器上执行时就出现了afxwin2.inl Line 588的<em>断言</em><em>错误</em>,打开之后就是rn ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, BM_GETCHECK, 0, 0); rn_AFXWIN_INLINE void CButton::SetCheck(int nCheck)rnrn不明白是怎么回事了,是我制作时候出问题了,还是哪里<em>错误</em>啊?请各位高手给个指点,谢谢!
一个断言错误
<em>错误</em>如下:rnfile:wingdi.cpprnline: 1044rn代码如下:rnrnrnvoid CMyView::OnDraw(CDC* pDC)rnrn CMyDoc * pDoc = GetDocument();rn ASSERT_VALID(pDoc);rn if (!pDoc)rn return;rnrn // TODO: 在此处为本机数据添加绘制代码rn CRect rect;rn GetClientRect(&rect);rn pDC->FillRect(rect, &CBrush(RGB(255,255,255))); rnrn if(m_bsave)rn ReInitValue(m_iWidth, m_iHeight);rn elsern ReInitValue(rect.right, rect.bottom);rn try rn rn DrawCoodinates(pDC);rn rn m_pDoc = pDoc;rn if (!m_pDoc->m_Data.GetFileOpenState())rn rn return;rn rn if (!m_pDoc->m_Data.GetZoomStatus())rn rn InitMZRange();rn rn rn DrawS(pDC);rn DrawX(pDC);rn DrawY(pDC);rn DrawM(pDC);rn DrawI(pDC);rnrn double tmplfMulti = m_lfMulti;rn CPoint tmpRightUp = m_pointRightUp;rn if(!m_pDoc->m_bLoc || m_bsave)rn rn GetInitSize();rn FindLoc();//////////////////////////////////////////////这里调用出错rn m_pDoc->m_bLoc = TRUE;rn rn rn if (m_pDoc->m_MainInfoData.GetStatus())rn rn DrawInfo(pDC, m_pointIonMatchRightUp);rn rn rn if(m_bsave)rn rn m_pointIonMatchRightUp = tmpRightUp;rn m_lfMulti = tmplfMulti;rn rn rn catch (const exception &e) rn rn CErrInfo info("CMyView", "OnDraw");rn m_pDoc->OnError(info.Get(e).c_str());rn rn catch (...) rn rn CErrInfo info("CMyView", "OnDraw", "caught an unkown exception throwing from OpenFile!");rn m_pDoc->OnError(info.Get().c_str());rn rnrnvoid CMyView::FindLoc()rnrn double abc = 0;//这里一进入就报错rnrnrnrn帮帮小弟,不胜感激~
一个奇怪的断言错误
提示是Wincore.cpp这个文件出了问题rn调试的时候指向这个代码 但是以前一直没问题的 rnrn#ifdef _DEBUGrn ASSERT(pMap->LookupPermanent(hWndOrig) == NULL);rn#endifrn
setwindowtext出现断言错误
SDI结构,在视图在使用getparentframe()->setwindowtext(...) 和 afxgetmainwnd()->setwindowtext(...)都提示<em>断言</em><em>错误</em>,请问是怎么回事?
CListCtrl使用过程中出现断言出错求助
我是新手 刚开始自学 很多地方都是懵懵懂懂的rn今天在自己做个信息管理的东西 在写ClistCtrl的时候出现<em>断言</em><em>错误</em>rn但是进去根本看不懂 图如下rn[img=http://i3.6.cn/cvbnm/51/33/ed/722f268c722552287fef89ad3c66285d.jpg][/img]rn顺便发下代码rnBOOL C信息管理Dlg::OnInitDialog()rnrn CDialog::OnInitDialog();rnrn C信息管理App *pApp = (C信息管理App *)AfxGetApp();rnrn rn // IDM_ABOUTBOX 必须在系统命令范围内。rn ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);rn ASSERT(IDM_ABOUTBOX < 0xF000);rnrn CMenu* pSysMenu = GetSystemMenu(FALSE);rn if (pSysMenu != NULL)rn rn CString strAboutMenu;rn strAboutMenu.LoadString(IDS_ABOUTBOX);rn if (!strAboutMenu.IsEmpty())rn rn pSysMenu->AppendMenu(MF_SEPARATOR);rn pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);rn rn rnrn // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动rn // 执行此操作rn SetIcon(m_hIcon, TRUE); // 设置大图标rn SetIcon(m_hIcon, FALSE); // 设置小图标rnrn // TODO: 在此添加额外的初始化代码rn m_List.SetBkColor(RGB(0,128,128));rn m_List.SetTextBkColor(RGB(0,128,128));rn m_List.SetTextColor(RGB(255,255,0));rnrn m_List.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT | LVS_EX_HEADERDRAGDROP);rnrn TCHAR szBuf[20];rn LV_COLUMN lvc;rnrn CRect rect;rn m_List.GetClientRect(&rect);rn int nColInterval = rect.Width()/7;rnrn for(int i = 0;ii_InfoList.GetCount();rn pos = pApp->i_InfoList.GetHeadPosition(); //找到头指针的位置rn for(int i=0;ii_InfoList.GetNext(pos);rn m_List.InsertItem(i,LPSTR_TEXTCALLBACK);rn CString my_Num;rn my_Num.Format(_T("%d"),pInfo->i_Num);rn m_List.SetItemText(i,0,my_Num);rn m_List.SetItemText(i,1,pInfo->i_Name);rn CString my_Pho;rn my_Pho.Format(_T("%d"),pInfo->i_Pho);rn m_List.SetItemText(i,2,my_Pho);rn m_List.SetItemText(i,3,pInfo->i_Addr);rn m_List.SetItemText(i,4,pInfo->i_SRel);rn m_List.SetItemText(i,5,pInfo->i_Tip);rn rnrn return TRUE; // 除非将焦点设置到控件,否则返回 TRUErnrnrn请高手指点下啊。。。为什么会出错 还有怎么改正?谢谢了
CTabCtrl的GetItemCount出错
我在对话框工程中,建立了一个CReBar,CReBar中添加了两个Bar,一个是普通的CToolBar,一个是CDialogBar,在CDialogBar中添加了控件TabCtrl。使用如下代码给TabCtrl加入item:rnrn在OnInitDialog()函数中rnrn////////////////////////////////////////////////////////////rnm_pTabCtrl = (CTabCtrl*)m_wndDlgBar.GetDlgItem(IDC_PARAMTAB);rnm_pTabCtrl->InsertItem(0, "参数组1");rn////////////////////////////////////////////////////////////rnrn在OnParamGroupNew()函数中rnrn////////////////////////////////////////////////////////////rnint nItemCount = m_pTabCtrl->GetItemCount(); // 在添加参数组10时就开始错!rnrnchar szItem[8];rnsprintf(szItem, "参数组%d", nItemCount+1);rnrnm_pTabCtrl->InsertItem(nItemCount, szItem);rnm_pTabCtrl->SetCurSel(nItemCount);rnTRACE("ItemCount: %d\n", nItemCount);rnrn////////////////////////////////////////////////////////////rnrn代码运行后,TabCtrl应该是这样:rn参数组1 参数组2 参数组3 ... 参数组9 参数组10 参数组11 ...rnrn可实际运行结果是这样:rn参数组12 参数组11 参数组10 参数组1 参数组2 ... 参数组9rnrn跟踪程序,发现在插入“参数组10”时及以后的参数组时,GetItemCount函数返回都是0。为什么会这样?CTabCtrl用的是默认风格。
VC6.0常见断言错误总结
这是我不容易找到的项目开发资料,欢迎下载学习
eVC调试程序发生断言错误
即使用eVC自动产生的程序也会发生,wincore.cpp中<em>断言</em><em>错误</em>,release中没有问题,也能运行,但是这样不就没有办法调试程序了码?rnrnrn问题何在??
断言错误 在ASSERT(m_hObject == NULL)
在自己的重绘函数中产生这样的<em>断言</em><em>错误</em>。在重绘函数中创建一个字体,然后在对话框中显示字符串,输出是正确的。但是在程序中增加满足相应条件后就把对话框中的静态文本隐藏后就出现了以上的<em>断言</em><em>错误</em>,其中静态文本是自定义的类。重绘函数代码如下:rn pDC->SetBkColor(RGB(0,0,0));rn pDC->SetTextColor(RGB(128,255,0)); rn bodyfont.CreatePointFont(124,_T("宋体"),pDC);rn pDC->SelectObject(&bodyfont); rn for (int i=0;iDrawText(st_data[i],rect,DT_LEFT); rn rn bodyfont.DeleteObject();rn大家帮忙看看,不甚感激!
断言错误,有部分代码
CDJKServerDlg是一个基于对话框的类,该对话框作为主窗口,在主窗口中放置树控件,rn要求双击树中的某个叶节点,弹出子对话框,该子对话框也是基于对话框的类名rn为:DJKCLIENT;rnrnvoid CDJKServerDlg::OnDblclkTree1(NMHDR* pNMHDR, LRESULT* pResult) rnrn......rn m_DJKClent1.ShowWindow(SW_SHOW);//DJKCLIENT m_DJKClent1;rn......rnrnDJKCLIENT类中添加按钮控件,在该控件中建立网络连接rnvoid DJKCLIENT::OnButtonLink() rnrn......rn m_pMySocket=new CMySocket;//CMySocket* m_pMySocket;rn m_pMySocket->Create();rn m_bLinked=m_pMySocket->Connect(m_strDyId, m_intPort);rn......rnrnCMySocket类中的接收数据函数中将接收的数据传给DJKCLIENT类对象,接收到的数据由rnDJKCLIENT类中的UpdateRXData()函数处理rnvoid CMySocket::OnReceive(int nErrorCode) rnrn......rn DJKCLIENT dlg;rn dlg.m_strRXDataTemp.Format("%s",chMsg);rn dlg.UpdateRXData();rn......rnrn程序能运行,通过调试发现,数据的传输都是成功的,rn但是在我设了try语句的地方出错。不知是什么原因。rnvoid DJKCLIENT::UpdateRXData()rnrn m_strEditRecvData=m_strRXDataTemp;rn m_strRXDataTemp="";rn int i,j,k,m;rn int length;rn bool dianyuan=false;rn static CString m_WorkstrV,m_WorkstrA,m_WorkstrHZ,m_WorkstrD;rnrn length=m_strEditRecvData.GetLength();rn// tempchar=m_strEditRecvData.GetAt(i);rn i=0;rn switch (m_strEditRecvData.GetAt(i))rn rn case 'V':rn rn m_strV ="";rn for(j=1;j
请问断言错误是什么意思?
我在用函数fgets()读取文件运行时显示"assertion failure"是什么意思呢,如何解决?rnrn原程序如下:rnrn#include rn#include rnvoid main() rn rnchar s[24]; rnrnrnFILE *fp; rnfp=fopen("d:\\bak_ex\\test.dat", "r"); /*打开文字文件只读*/ rnif(fp=NULL) rn rnputs("File open eror"); rnexit(0); rn rnfgets(s, 24, fp); /*从文件中读取23个字符*/ rnprintf("%s", s); /*输出所读的字符串*/ rnfclose(fp); /*关闭文件*/ rnrnrn
MFC下出现的断言错误请教
最近利用MFC做一个数据库的管理程序,现在碰到问题如下:rn 我先初始化了一个对话框,然后这个对话框中有个编辑框和一个按钮,我现在希望点击按钮后能够读取到这个编辑框中的内容,并通过这些内容来处理数据库中的一些东西,所以我在这个按钮处理程序中加了updatedata()这个函数用来读取数据,现在的问题就是每次一关闭对话框的时候都会出现(有时候在一点击按钮时也会出现) :rn Debug Assertion Failed! rn rn Program: G:\C++\Lib\Debug\lib.exe rn File: afx.inl rn line: 122 rn rn For information on how your program cna cause an assertion rn failure, see the Viaual C++ documentation on asserts. rn rn (Press Retry to debug the application) rnrn 这样的<em>错误</em>,我在csdn上看过回答一个碰过类似问题的人是这样:“rn 你肯定重载了编辑框的WM_CHANGE消息 rn 解决的方法只能是设置一个BOOL变量,在对话框的构造函数之将其设置为TRUE。 rn 然后在编辑框的CHANGE处理函数中如下做: rn void CPage2::OnChangeEdit1() rn rn // TODO: If this is a RICHEDIT control, the control will not rn // send this notification unless you override the CDialog::OnInitDialog() rn // function and call CRichEditCtrl().SetEventMask() rn // with the ENM_CHANGE flag ORed into the mask. rn rn // TODO: Add your control notification handler code here rn if(m_bEdit1First) rn rn m_bEdit1First = FALSE; rn rn else rn rn //做你想做的 rn rn rn你不是有一个编辑控件Edit控件吗?你一旦重载了其EN_CHANGE消息处理函数以后,如果你在其处理函数,假设为OnChangeEdit1()使用了UpdateData函数就会在对话框还没有显示的时候就会出错。这是因为Edit控件在对话框的初始化的时候发生了数据改变,但是此时的Edit控件还没有建立,UpdateData就会出错,这也许就是MFC的Bug。呵呵,修改方法如上!!”rnrn但是我看不懂这个意思是什么,所以想请教各位帮忙解答,衷心感谢大家!
C++断言错误,求高手~~~
我在写一个max的插件小程序来导出场景中的信息,由于要将场景信息导出到一个txt文件。所以用了BeginWriting()、Write()和EndWriting()函数,编译通过,但是在启动max之后导出信息时出现<em>断言</em><em>错误</em>。给出的<em>错误</em>信息显示在BeginWriting()函数里的<em>断言</em><em>错误</em>。下边是部分代码:求高手帮助!!!!rnint maxProject5::DoExport(const TCHAR *name,ExpInterface *ei,Interface *i, BOOL suppressPrompts, DWORD options)rnrnrn if (BeginWriting(name))rn rnrn INode* pRootNode = i->GetRootNode();rnrn //Export tree.rn Export(pRootNode,0);rnrn EndWriting();rnrn return TRUE; // We have successfully exported to our file!rn rnrn // If we are here, something in the export failed.rn return FALSE;rnrnBOOL maxProject5::BeginWriting(const char *pPath)rnrn // Check we are not currently writingrn DbgAssert(m_pFile == NULL);//<em>断言</em>rnrn errno_t lErr = fopen_s(&m_pFile, pPath, "w");rn return lErr == 0;rnrnrnvoid maxProject5::EndWriting()rnrn DbgAssert(m_pFile != NULL);rnrn fclose(m_pFile);rn m_pFile = NULL;rnrnrnvoid maxProject5::Write(int indent, const char* pMsg, ...)rnrn DbgAssert(m_pFile != NULL);rnrn // first, write in the indentrn for (int i = 0; i < indent; i++)rn fprintf_s(m_pFile, "\t");//C++库函数rnrn // Write the message, passing in our variablern // parameters to a function that wraps printfrn va_list vargs;rn va_start(vargs, pMsg);//fprintf()的封装rn vfprintf_s(m_pFile, pMsg, vargs);rn va_end(vargs);//http://www.cnblogs.com/leaven/archive/2010/06/29/1767374.htmlrnrn // Finish the linern fprintf_s(m_pFile, "\n");rnrnm_pFile是在类中定义的私有变量。其他代码没有涉及,只有贴出部分用到,各位多帮忙啊~
软件的错误处理-异常/错误/断言
大家在写软件时都怎么考虑<em>错误</em>处理的?rnrn麻烦探讨异常/<em>错误</em>/<em>断言</em>这3个概念.rnrn
为什么会有这样的断言错误??
我的程序本来运行得很好,现在我让基类从CObject派生,其他的一点都没有变,在DEBUG模式下结束程序的时候会出现<em>断言</em><em>错误</em>:rnrnASSERT(pHead->nBlockUse==nBlockUse) 这句会出现<em>断言</em>rnrn我所有的对象都是从堆上分配的,当我让基类不从CObject派生时,一切运行正常,反之就会出现问题,请问是怎么回事?rnrn
MFC常见断言错误解析
让你轻松查阅Debug时令人崩溃的Assert报错原因,包括<em>断言</em>、所在函数、具体位置以及<em>错误</em>解析。
关于定位断言错误的地方
我有一程序写成服务的形式,没有界面,当程序运行到某一地方时突然发生assert<em>错误</em>,上面提示的是调用MFC文件strcore.cpp 344行发生了<em>错误</em>,这样的话我能定位是我的程序是在哪里发生这种<em>错误</em>的吗
单文档分割视图断言错误
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)rnrn BOOL rtn=SplitterV1.CreateStatic(this,1,3); //首先将窗口客户区分割为一行三列;[color=#FF0000]//原来是两列[/color]rn //将左客户区再分割为两行一列,并以上面分割的左视窗作为父窗口;rn SplitterH1.CreateStatic(&SplitterV1, 2, 1, WS_CHILD | WS_VISIBLE | WS_BORDER,SplitterV1.IdFromRowCol(0,0));rn //将右客户区再分割为两行一列,并以上面分割的右视窗作为父窗口;rn SplitterH2.CreateStatic(&SplitterV1, 2, 1, WS_CHILD | WS_VISIBLE | WS_BORDER,SplitterV1.IdFromRowCol(0,1));rn //创建各自视图,并调用RUNTIME_CLASS运行库指定各视图的管理类rnrn SplitterH1.CreateView(0, 0, RUNTIME_CLASS(CMyZoomView), CSize(0, 0), pContext);rn SplitterH1.CreateView(1, 0, RUNTIME_CLASS(CInfoView), CSize(0,0), pContext);rn SplitterH2.CreateView(1, 0, RUNTIME_CLASS(CResultView), CSize(0, 0), pContext);rn SplitterH2.CreateView(0, 0, RUNTIME_CLASS(CControlView), CSize(0, 0), pContext);rn SplitterV1.CreateView(0, 2, RUNTIME_CLASS(CScrollView), CSize(0, 0), pContext);[color=#FF0000]//添加的滚动条视图[/color]rnrn //在ZOOMView.h中要加上#include "ZOOMDoc.h",否则会出现一个找不到CZOOMDoc*的<em>错误</em>rnrnrnrn //设置水平和垂直分割条的初始位置rn SplitterV1.SetColumnInfo(0,800,0); rn SplitterV1.SetColumnInfo(1,300,0); rn SplitterH1.SetRowInfo(0,500,0); rn SplitterH2.SetRowInfo(0,350,0);rn return rtn; rnrnrnrn分成两列时候没有问题,现在加一列,在加载第三列的视图类时就出错。rnint CFrameWnd::OnCreateHelper(LPCREATESTRUCT lpcs, CCreateContext* pContext)rnrn if (CWnd::OnCreate(lpcs) == -1)rn return -1;rnrn // create special children firstrn if (!OnCreateClient(lpcs, pContext))rn rn TRACE(traceAppMsg, 0, "Failed to create client pane/view for frame.\n");rn return -1;rn rnrn // post message for initial message stringrn PostMessage(WM_SETMESSAGESTRING, AFX_IDS_IDLEMESSAGE);rnrn // make sure the child windows have been properly sizedrn RecalcLayout(); [color=#FF0000]//这里报错[/color]rnrn return 0; // create okrn
为什么会发生断言错误
为什么会发生<em>断言</em><em>错误</em>?rnrn调试的时候遇到Assertion Failure,文件dbgheap.c(硬盘里没有这个文件,估计是内核中的代码),1017行。表达式_BLOCK_TYPE_IS_VALID(pHead->nBlockUse)rnrn<em>错误</em>可能发生在一个函数的return true处,或者对此函数返回的bool值进行测试的地方。程序中没有进行堆内存分配,但使用了vector和string。rn
如何解决这个断言错误!?
新建一个对话框资源,Style:Child、Border:Dialog Frame、Title Bar:unchecked、Visible:checked;rn并生成一个类,然后在ActiveX中的:rnint CXXXXCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct) rnrn if (COleControl::OnCreate(lpCreateStruct) == -1)rn return -1;rn rn m_CtrlPanel.Create(IDD_CTRLPANEL,this); //m_CtrlPanel就是上面生成的新类的一个实例rn OnActivateInPlace(TRUE,NULL);rn return 0;rnrn这样的写法在debug版下,在退出IE后(此ActiveX用在IE中),会出现一个<em>断言</em>错,这个问题MSDN中说了一大堆,但我没看懂,还请高手帮我解释一下,这个<em>断言</em>只要在MSDN中查找LookupPermanent就能找到有关文章,名字叫:rnKB:HOWTO: Debug MFC Module and Thread State Problems
CListCtrl插入列的位置错误
int i = 0;rnCString strName[3] = _T("姓 名"), _T("性 别"), _T("年 龄");rnfor (i = 0; i < 3; i++)rnrn m_list.InsertColumn(i, strName[i], LVCFMT_CENTER, 100);rnrnm_list.SetExtendedStyle(LVS_EX_GRIDLINES);rnrn该行代码将CString数组的内容加入到CListCtrl的列中rn可是为什么第一项"姓名"无法居中阿?rn后两项都可以居中。rn请大家给予帮助rn
静态断言(编译时断言
静态<em>断言</em>(编译时<em>断言</em>)不同于运行时<em>断言</em>哈。
断言
最近两天经常看到<em>断言</em>这个概念,因此考虑记录一下: ANSI c<em>断言</em>: void assert(_expression)C语言标准中支持,在包含或头文件之前定义NDEBUG宏,可禁用assert函数的<em>断言</em>判断。原因在头文件中有代码段: #ifdef NDEBUG #define assert(_Expression) ((void)0)多用assert,对
Jmeter断言-响应断言
1:Jmeter<em>断言</em>-响应<em>断言</em>1.1:添加线程组1.2:添加http请求1.3:在http请求下添加“响应<em>断言</em>”1.4:添加查看结果树和Debug取样器1:<em>断言</em>成功的结果2:<em>断言</em>失败的结果(如下修改)2:参数化<em>断言</em>2.1:添加CSV配置原件2.2:对要测试的内容进行参数化2.3:观察结果树结果与第一章一样 都是pass的3:模式匹配规则的介绍3.1:Substring模式匹配规则匹配其中的一段字符...
正则表达式的先行断言、后行断言
实际开发中经常会遇到这样的情况,需要在一组字符串中取出指定的字符,例如:取出如下一段代码里和html标签&amp;lt;div&amp;gt;&amp;lt;h2&amp;gt;title&amp;lt;/h2&amp;gt;&amp;lt;p&amp;gt;content&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;理想的结果是:['div', 'h2', 'p']经观察目前字符串的特点是:前置有:&amp;lt;、后置有:&amp;gt;,这个时候就能用到先行<em>断言</em>和后行<em>断言</em>
关于控件CListCtrl的SetItemText的错误
我最近在用VC++做一个进程的小程序,rn nItem = List->InsertItem( 0 , processInfo.szExeFile , 2 );rnrn threadId.Format("%d",processInfo.th32ProcessID );rn int temp=List->SetItemText( nItem , 1 , threadId );rn CString st=List->GetItemText(nItem,1);rn发觉SetItemText这个函数的操作失败,调试过,发觉其他都无问题,就是st的值始终是茸茸茸茸茸茸茸茸茸茸茸茸茸茸。。。没有变过,请问什么情况下这个SetItemText的操作会失败?rn谢谢大家啊!
delete 指针后 出现_CrtIsValidHeapPointer断言错误
小弟的代码运行后出现如下<em>断言</em><em>错误</em>rnMicrosoft Visual C++ Debug LibraryrnDebug Assertion Failed!rnProgram:F:\biao\Debug\biao.exernFile:dbgheap.crnLine:1044rnrnExpression:_CrtIsValidHeapPointer(pUserData)rnrnFor information on how your program can cause an assertionrnfailure,see the Visual C++ documant on assertsrnrn(Press Retry to debug the application) rnrn代码大概如下:rn int i, packetCount;rn PacketAnalyseResult* pResult = NULL; // PacketAnalyseResult 是我自己定义的一个结构;rn packetCount = historyBuffer.GetSize(); //historyBuffer 是CPtrArray;rn for (i=0; i
画线函数为什么会出现断言错误???
在DrawItem(LPDRAWITEMSTRUCT lp)函数中使用pDC->MoveTo画线为什么会出现assert failure???rn用GetLastError()发现返回的<em>错误</em>码为87,属于参数<em>错误</em>。rn
断言错误( Debug Assertion Failed )的疑惑
[code=C/C++]rnvoid Mydlg::OnCancel() rnrn OnCancel();//删除前面默认的 CDialog:: 就不再报<em>断言</em><em>错误</em>了rnrn[/code]rnrn这是为什么呢?rnrn这个对话框里包含两个主要的控件Adodc和Ado Datalist,连接数据库在前者属性里设置好的,没有额外的Code.rnrn我想应该不是没有关闭数据库的原因,毕竟问题的解决看上去跟数据库操作无关吧。rnrn谁能详细说一下这个<em>断言</em><em>错误</em>呢?rnrn另外想请教的是:是否这种连接数据库的方法不用写断开连接的语言,直接在离开按钮里写“OnCancel();”就可以了呢?这样做是不是会造成内存泄露;那么合理的写法又是如何?
请假怎样修改这个断言错误
仿“一个完善的ODBC数据库程序”做一个学生基本信息管理时,遇到的<em>错误</em>。rn当我在增加记录后,按OK后,出现下面<em>错误</em>,请大家指点指点怎样解决:rnDebug Assertion Failed!rnprogram:.........rnFile:afx.inlrnLine:157rnFor information on how your program can cause an assertion failure,see the rnvisual c++document on asserts.rn<em>错误</em>处如下:rn// CString support (windows specific)rn_AFX_INLINE int CString::Compare(LPCTSTR lpsz) constrn ASSERT(AfxIsValidString(lpsz)); return _tcscmp(m_pchData, lpsz); // MBCS/Unicode awarern_AFX_INLINE int CString::CompareNoCase(LPCTSTR lpsz) constrn ASSERT(AfxIsValidString(lpsz)); return _tcsicmp(m_pchData, lpsz); // MBCS/rn另外,我做的程序背景色怎么显示不出来,请问在哪里修改!
dll中无模式对话框出现“断言错误
我写了一个MFC dll,在dll中创建无模式对话框,程序编译通过rn我直接用一个对话框去调用这个dll时,对话框显示成功rn我先用对话框调用另一个dll,在此dll中,调用我的创建对话框的dll,这时出现了<em>错误</em>,说是"dlgcore.cpp"中384行assert<em>错误</em>,<em>错误</em>码是 2 ,各位看看怎么回事?rn代码如下:rn tryrn rn dlg = new update();rnrn if(!dlg->Create(IDD_UPDATE_DIALOG))rn Error("Create Dlg Err!",GetLastError());rn if(!dlg->ShowWindow(SW_SHOW))rn Error("Show Dlg Err!",GetLastError()); rn catch(...)rn rn Error("try Err!",GetLastError()); rn
奇怪,odbc在open()时出现断言错误
我加了一个odbc的动态集类然后在对话框中rnBOOL CMnCourseSalaDlg::OnInitDialog() rnrn CDialog::OnInitDialog();rn rn // TODO: Add extra initialization herern if (m_CourseSalaSet.IsOpen()) rn rn m_CourseSalaSet.Close();rn rn m_CourseSalaSet.Open();//此时,出现<em>断言</em><em>错误</em>rn。。。rnrnrn我按重试,<em>断言</em>出现在rn文件:c:\...\vc98\mfc\include\afx.inlrn// CStringrn_AFX_INLINE CStringData* CString::GetData() constrn ASSERT(m_pchData != NULL); return ((CStringData*)m_pchData)-1; rnrn怎么回事?
ClistCtrl ClistCtrl ClistCtrl
ClistCtrl ClistCtrl ClistCtrl ClistCtrl
dlg..DoModal()时弹出断言错误怎么解决?
程序还没进入OnInitDialog函数,在构造函数CScaleDlg::CScaleDlg(CWnd* pParent /*=NULL*/)那就死了,看了网上的一些方法,都是检查OnInitDialog函数,但是现在在OnInitDialog函数之前就死了,哪位大侠帮忙分析一下啊?
关于sockcore.cpp line 513 断言错误
希望各位帮忙看下这个关于CAsyncSocket 问题。我在程序中,由于频繁申请和释放 CAsyncSocket 对象,造成 sockcore.cpp line<em>断言</em><em>错误</em> rnrnvoid PASCAL CAsyncSocket::DoCallBack(WPARAM wParam, LPARAM lParam)rnrn if (wParam == 0 && lParam == 0)rn return;rnrn // Has the socket be closed?rn CAsyncSocket* pSocket = CAsyncSocket::LookupHandle((SOCKET)wParam, TRUE);rnrn // If yes ignore messagern if (pSocket != NULL)rn return;rn rn pSocket = CAsyncSocket::LookupHandle((SOCKET)wParam, FALSE);rn rn if (pSocket == NULL)rn rn // Must be in the middle of an Accept callrn pSocket = CAsyncSocket::LookupHandle(INVALID_SOCKET, FALSE);rn ASSERT(pSocket != NULL); (此处出现<em>断言</em><em>错误</em>)rn pSocket->m_hSocket = (SOCKET)wParam;rn CAsyncSocket::DetachHandle(INVALID_SOCKET, FALSE);rn CAsyncSocket::AttachHandle(pSocket->m_hSocket, pSocket, FALSE);rn rnrn int nErrorCode = WSAGETSELECTERROR(lParam);rn switch (WSAGETSELECTEVENT(lParam))rn rn ………rn 我通过调试发现。发生该<em>错误</em>时,最终捕获的<em>错误</em>代码 为10038 即“尝试着在一个非套接字上操作”,该问题带有不确定性,即不知道什么时候就发生了该<em>错误</em>rn,于是,我猜测 <em>错误</em>起因是因为当 非阻塞编程引起的。当CAsyncSocket对象被创建后,同时给该对象分配了一个socket窗口,当通过该CAsyncSocket对象发送网络数据时,也许并没有立刻发送,而这时,可能程序突然将该对象做了delete或close操作。于是引起该<em>错误</em>。我想印证我的假设是否正确。希望大虾们帮忙看一下这个问题。rn 我的CAsyncSocket对象主要用于tcp连接。即创建后,就向某一地址发起连接。当该地址不存在时,该<em>错误</em>发生频率很高。rn 我的程序的大体流程为:创建一个CAsyncSocket对象。rn 非阻塞模式发起连接rn 从网络收到是否连接成功信息。如果未连接成功就断开连接。rn 删除对象。rn 制定时间间隔重复以上动作。
VS 2008 分割窗体视图断言错误
VC6.0的项目,迁移到VS2008上,创建窗体分割视图时,出现<em>断言</em><em>错误</em>!VC6.0上能正常运行,没有问题rn大家帮忙看下是啥问题,谢谢了rn/////////////////////////////////////////////////////////////////////////////rn// CSplitterWnd default creation of partsrnrn// You must create ALL panes unless DYNAMIC_SPLIT is defined!rn// Usually the splitter window is invisible when creating a panernBOOL CSplitterWnd::CreateView(int row, int col,rn CRuntimeClass* pViewClass, SIZE sizeInit, CCreateContext* pContext)rnrn#ifdef _DEBUGrn ASSERT_VALID(this);rn ASSERT(row >= 0 && row < m_nRows);rn ASSERT(col >= 0 && col < m_nCols);rn ASSERT(pViewClass != NULL);rn ASSERT(pViewClass->IsDerivedFrom(RUNTIME_CLASS(CWnd)));rn ASSERT(AfxIsValidAddress(pViewClass, sizeof(CRuntimeClass), FALSE));rnrn if (GetDlgItem(IdFromRowCol(row, col)) != NULL)rn rn TRACE(traceAppMsg, 0, "Error: CreateView - pane already exists for row %d, col %d.\n",rn row, col);rn ASSERT(FALSE);rn return FALSE;rn rn#endifrnrn // set the initial size for that panern m_pColInfo[col].nIdealSize = sizeInit.cx;rn m_pRowInfo[row].nIdealSize = sizeInit.cy;rnrn BOOL bSendInitialUpdate = FALSE;rnrn CCreateContext contextT;rn if (pContext == NULL)rn rn // if no context specified, generate one from the currently selectedrn // client if possiblern CView* pOldView = (CView*)GetActivePane();rn if (pOldView != NULL && pOldView->IsKindOf(RUNTIME_CLASS(CView)))rn rn // set info about last panern ASSERT(contextT.m_pCurrentFrame == NULL);rn contextT.m_pLastView = pOldView;rn contextT.m_pCurrentDoc = pOldView->GetDocument();rn if (contextT.m_pCurrentDoc != NULL)rn contextT.m_pNewDocTemplate =rn contextT.m_pCurrentDoc->GetDocTemplate();rn rn pContext = &contextT;rn bSendInitialUpdate = TRUE;rn rnrn CWnd* pWnd;rn TRYrn rn [color=#FF0000]pWnd = (CWnd*)pViewClass->CreateObject();[/color] //此处<em>断言</em><em>错误</em>rn if (pWnd == NULL)rn AfxThrowMemoryException();rn rn CATCH_ALL(e)rn rn TRACE(traceAppMsg, 0, "Out of memory creating a splitter pane.\n");rn // Note: DELETE_EXCEPTION(e) not requiredrn return FALSE;rn rn END_CATCH_ALLrnrn ASSERT_KINDOF(CWnd, pWnd);rn ASSERT(pWnd->m_hWnd == NULL); // not yet createdrnrn DWORD dwStyle = AFX_WS_DEFAULT_VIEW & ~WS_BORDER;rnrn // Create with the right size (wrong position)rn CRect rect(CPoint(0,0), sizeInit);rn if (!pWnd->Create(NULL, NULL, dwStyle,rn rect, this, IdFromRowCol(row, col), pContext))rn rn TRACE(traceAppMsg, 0, "Warning: couldn't create client pane for splitter.\n");rn // pWnd will be cleaned up by PostNcDestroyrn return FALSE;rn rn ASSERT((int)_AfxGetDlgCtrlID(pWnd->m_hWnd) == IdFromRowCol(row, col));rnrn // send initial notification messagern if (bSendInitialUpdate)rn pWnd->SendMessage(WM_INITIALUPDATE);rnrn return TRUE;rnrn[img=https://img-bbs.csdn.net/upload/201402/12/1392192976_35484.jpg][/img]
MFC程序运行时出现断言错误【急求!!!!!!】
用MFC想实现的第一步功能是:点击按钮,检测出本地的网络设备信息,程序编译可以通过,但是点击按钮后出现<em>断言</em><em>错误</em>:rn[img=C:\Documents and Settings\Administrator\桌面\[XV7]RP`N$RM~7EQYU8%K5.jpg][/img]rn点击按钮触发的函数:rnvoid CarpDlg::OnBnClickedButton5()rnrn // 列出本机的网卡借口列表rn if(pcap_findalldevs(&alldevs,errbuf) == -1)rn AfxMessageBox(_T("找不到可用的网卡!"));rn exit(0);rn rn for(d=alldevs;d;d->next)rn rn myList1.InsertString(-1,d->name);rn rnrnrn提示出错地方的代码::rn ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_ADDSTRING, 0, (LPARAM)lpszItem); rn_AFXWIN_INLINE int CListBox::DeleteString(UINT nIndex)rn ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_DELETESTRING, nIndex, 0); rn_AFXWIN_INLINE int CListBox::InsertString(int nIndex, LPCTSTR lpszItem)rn[color=#FF0000] ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_INSERTSTRING, nIndex, (LPARAM)lpszItem); [/color]_AFXWIN_INLINE void CListBox::ResetContent()rn ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, LB_RESETCONTENT, 0, 0);
提问关于Occsite.cpp,161行断言错误
我在程序初始化时调用地图控件的Create函数,,如果放在OnInitDialog中,就没有问题,如果放在线程中就出现Occsite.cpp,161行<em>断言</em><em>错误</em>。请高手帮帮忙,看问题出在哪里,我该怎麽解决,不可以在线程中调用主窗口的函数吗?rn以下是相关代码:rn CTestOutputDlg *mainwnd = (CTestOutputDlg*)AfxGetMainWnd();rn mainwnd->m_ctrlMapX.Create(NULL, WS_VISIBLE, CRect(10,10,842,672), this, IDC_MAP);
关于assertion断言错误处理问题的请教?
我在编制一个数据采集程序的过程中,经常碰到关于<em>断言</em><em>错误</em>的问题,不知如何解决?rn提示信息是:debug assertion failed!rn请各位指教!谢谢!rn
dll中的对话框摧毁时的断言错误
ATL支持MFC的dll中,创建一个MFC的对话框,在对话框DestroyWindow的时候出现ASSERT(pMap->LookupPermanent(hWndOrig) == NULL)的<em>断言</em><em>错误</em>,跟踪时发现在最底层的::DestroyWindow(hWnd)的调用返回后,hWnd不为空。是什么原因?
线程里的断言错误怎么解决??
这是一个普遍的问题。。只要在线程里面调用ASSERT_VALID就会出现<em>断言</em><em>错误</em>。!rnUINT TestThread(LPVOID pParam)rnrn CTestDlg *pDlg= (CTestDlg *)pParam;rn ASSERT_VALID(pDlg); // 此处会<em>断言</em><em>错误</em>rn pDlg->Test(); // 线程里调用Test函数,执行到ASSERT_VALID(this)<em>断言</em><em>错误</em>rn return 0;rnrnvoid CTestDlg::OnButton1() rnrn AfxBeginThread(Thread1,this);rnrnrnvoid CTestDlg::OnButton2() rnrn ASSERT_VALID(this); //此处不会<em>断言</em><em>错误</em>rnrnrnvoid CTestDlg::Test()rnrn ASSERT_VALID(this); rnrn解决这种<em>错误</em>的办法,是通过发消息的方式给对话框指针,让其执行Test()函数。但是本人还是想直接在线程里面执行Test()函数,因为我之所以用另外一个线程就是为了让他执行Test()函数。而不让主线程执行。。rn请问能有更完美的办法吗???
SDI 工具条添加组合框控件的断言错误
我首先在资源编辑器中将 IDR_MAINFRAME 中插入一个ID为IDC_COMBOBOX的按钮,作为占位苻使用.rnrn其中工具条的类为派生自CToolBar的类CComboToolBar,rnclass CComboToolBar : public CToolBarrnrn// Constructionrnpublic:rn CComboToolBar();rnrn// Attributesrnpublic:rnrn// Operationsrnpublic:rnrn// Overridesrn // ClassWizard generated virtual function overridesrn //AFX_VIRTUAL(CComboToolBar)rn //AFX_VIRTUALrnrn afx_msg void OnSelchangeCombo(); //对ComboBox的响应函数rnrn// Implementationrnpublic:rn virtual ~CComboToolBar();rn CComboBox m_ctrComboBox;rnrn // Generated message map functionsrnprotected:rn //AFX_MSG(CComboToolBar)rn // NOTE - the ClassWizard will add and remove member functions here.rn //AFX_MSGrnrn DECLARE_MESSAGE_MAP()rnprivate:rn rn;rnrnCMainFrame类中原有的m_wndToolBar,改为了CComboToolBar * m_wndToolBar(这样改是因为如果写成CComboToolBar m_wndToolBar,就会报类未定义<em>错误</em>,我还不知道怎么解决这个问题,只好先定义成指针,CMainFrame构造的时候再New一个,希望高手如果知道怎么改就可以直接定义变量,不用写成指针能不吝赐教,如果直接再头文件中包含另一个头文件是不是不妥阿?偶尔会有重定义<em>错误</em>)rnCMainFrame头文件如下:rnrn//-------------------------------------------------------------------------------------------rnclass CComboToolBar;rnrnclass CMainFrame : public CFrameWndrnrn rnprotected: // create from serialization onlyrn CMainFrame();rn DECLARE_DYNCREATE(CMainFrame)rnrn// Attributesrnpublic:rnrn// Operationsrnpublic:rnrn// Overridesrn // ClassWizard generated virtual function overridesrn //AFX_VIRTUAL(CMainFrame)rn virtual BOOL PreCreateWindow(CREATESTRUCT& cs);rn //AFX_VIRTUALrnrn// Implementationrnpublic:rn virtual ~CMainFrame();rn CComboToolBar * m_wndToolBar;//外面OnCreate函数还会用到,所以改成Public了rn#ifdef _DEBUGrn virtual void AssertValid() const;rn virtual void Dump(CDumpContext& dc) const;rn#endifrnrnprotected: // control bar embedded membersrn CStatusBar m_wndStatusBar;rn rnrn// Generated message map functionsrnprotected:rn //AFX_MSG(CMainFrame)rn afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);rn // NOTE - the ClassWizard will add and remove member functions here.rn // DO NOT EDIT what you see in these blocks of generated code!rn //AFX_MSGrn DECLARE_MESSAGE_MAP()rn;rn//------------------------------------------------------------------------------------------------rnCMainFrame中的OnCreate函数如下:rnrnif (!m_wndToolBar->CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOPrn | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||rn !m_wndToolBar->LoadToolBar(IDR_MAINFRAME))rn rn TRACE0("Failed to create toolbar\n");rn return -1; // fail to creatern rnrn调试的时候这个没问题.rnrn问题出在下一句:rnCRect rect;rnm_wndToolBar->SetButtonInfo(12,IDC_COMBOBOX,TBBS_SEPARATOR,160);//就是这个出现的<em>断言</em><em>错误</em>rnm_wndToolBar->GetItemRect(12,&rect);rnrect.bottom+=200;rnrnif(!m_wndToolBar->m_ctrComboBox.Creatern (CBS_DROPDOWN|WS_VISIBLE|WS_TABSTOP|CBS_AUTOHSCROLL,rn rect,m_wndToolBar,IDC_COMBOBOX))rn return -1;rnrn我这个是从别处找来的代码,想试一下,出了这个<em>错误</em>也不知怎么改,谢谢了.
编译后运行出现很多断言错误
谁知道啊,连时间控件都会出现<em>断言</em>失败。请dx帮帮我
在对话框的菜单中响应IDCANCEL断言错误
我使用SkinMagic给程序换肤,其中有一个对话框是带菜单的,菜单项里面有一个退出选项。退出选项我是响应的ONCANCEL(),在没有换肤的时候可以正常运行,换肤后点这个退出就出现<em>断言</em><em>错误</em>,请高手指点。
一个诡异的dll初始化断言错误
编一个程序,在调试运行时出现下面的<em>错误</em>:rnrn[img=http://hi.csdn.net/attachment/201010/30/30022_12884305443523.jpg][/img]rnrn 单击重试按钮后,出现下面<em>错误</em>:rnrn[img=http://hi.csdn.net/attachment/201010/30/30022_1288430549kZS5.jpg][/img]rnrn 程序还没进入app的InitInstance函数就出现上面<em>错误</em>。调用堆栈的先后顺序是:rnrnmfc80d.dll!AfxCoreInitModule() 行587 + 0x23 字节 C++rnrn对应的代码段是:rnrn[code=C/C++]rnvoid AFXAPI AfxCoreInitModule()rnrn ASSERT(AfxGetModuleState() != AfxGetAppModuleState());rn[/code]rnrn 接着是:rn SysUI.dll!InternalDllMain(HINSTANCE__ * hInstance=0x00640000, unsigned long dwReason=1, void * __formal=0x0012fd30) 行107 C++rnrn SysUI.dll是我建的一个工程生成的dll,初步判断是SysUI.dll初始化出现了问题。请问如何解决这个问题呢?rnrnrnrnrn
MFC断言错误,980行ASSERT((CWnd*)p == this)
代码:rn[code=c]void CMFC_SocketServerDlg::OnBnClickedBtnstart()rnrn if (connected || listening)//若正在监听或已连接则关闭服务器rn rn connected = false;rn listening = false;rn closesocket(toClient);rn closesocket(Listener);rn m_chat += "Socket Server Stopped!\r\n";rn UpdateData(false);//拷贝变量值到控件显示。(变量的最终运算结果值交给外部输出显示)rn return;rn rn UpdateData(true);//刷新控件的值到对应的变量。(外部输入值交给内部变量)rn //创建监听Socketrn struct protoent *ppe;rn ppe = getprotobyname("tcp");rn if ((Listener = socket(PF_INET, SOCK_STREAM, ppe->p_proto)) == INVALID_SOCKET)rn rn m_chat += "Initialize Socket Listener Failed!\r\n";rn UpdateData(false);rn return;rn rnrn //绑定IP及端口rn struct sockaddr_in saddr;rn saddr.sin_family = AF_INET;rn saddr.sin_port = htons(m_port);rn saddr.sin_addr.s_addr = htonl(INADDR_ANY);rn if (bind(Listener, (struct sockaddr *)&saddr, sizeof(saddr)))//成功返回0,失败返回-1.rn rn m_chat += "Bind to IPEndPoint Failed! (Port in use?)\r\n";rn UpdateData(false);rn return;rn rn //开始监听,队列长度1(不考虑多客户端)rn if (listen(Listener, 1))rn rn m_chat += "Listen Failed!\r\n";rn UpdateData(false);rn return;rn rn m_chat += "Socket Server Started!\r\n";rn UpdateData(false);rnrn listening = true;rn AfxBeginThread(Wait4Client, this);//另起线程等待客户端连接rnrn//等待来自客户端的连接请求rnUINT Wait4Client(LPVOID pParam)//LPVOID:一个没有类型的指针rnrn CMFC_SocketServerDlg * c = (CMFC_SocketServerDlg *)pParam;rn struct sockaddr_in caddr;rn int caddrlen = sizeof(caddr);rn c->toClient = accept(c->Listener, (struct sockaddr *)&caddr, &caddrlen);rn if (c->toClient == INVALID_SOCKET)//异常处理rn rn if (!c->listening)return 0;//若为服务器端主动关闭,则直接返回rn c->m_chat += "Connect Failed!\r\n";rn c->UpdateData(false);rn return -1;rn rn elsern rn c->connected = true;rn AfxBeginThread(ReceiveMessage, c);//连接建立,另起线程用于接收信息rn c->m_chat += "Client: ";rn c->m_chat += inet_ntoa(caddr.sin_addr);rn c->m_chat += " Connected!\r\n";rn c->m_ip = inet_ntoa(caddr.sin_addr);rn c->UpdateData(false);rnrn rn return 0;rnrnrn//用于循环接收信息的线程rnUINT ReceiveMessage(LPVOID pParam)rnrn CMFC_SocketServerDlg * c = (CMFC_SocketServerDlg *)pParam;rn char buffer[1024];rn int error;//记录recv函数返回值,即接收的字节数,也作异常代码rn while (error = recv(c->toClient, buffer, 1024, 0))rn rn if (error == 0 || error == SOCKET_ERROR)break;rn c->PrintData("Received Data", (unsigned char*)buffer, error);rn c->aes.InvCipher((void *)buffer, error);//解密,恢复明文rn c->PrintData("Unencrypted Data", (unsigned char*)buffer, error);rn c->m_chat += "Client:";rn c->m_chat += buffer;rn c->m_chat += "\r\n";rn c->UpdateData(false);rn rn c->m_ip = "Not Connected...";rn c->UpdateData(false);rn if (!c->connected)return 0;//服务器端主动关闭,直接返回rn closesocket(c->toClient);rn c->connected = false;rn c->m_chat += "Client Disconnected...\r\n";rn c->UpdateData(false);rn AfxBeginThread(Wait4Client, c);rn return 0;rn[/code]
断言错误file:winocc.cpp line:229
vc++6.0编译一MFC程序时要在以前的基础上加一个输入进去,加进去之后编译可以通过,调试运行时出现<em>断言</em><em>错误</em> file:winocc.cpp line:229。。。。。。。。求大神帮忙。
求教断言错误。居然发生在 SetPaneText
<em>断言</em><em>错误</em>是 File: wincore.cpp Line:890 <em>断言</em>在 ASSERT(pMap != NULL); void CWnd::AssertValid() const 这里 。rnrn跟踪下来 <em>错误</em>是发生在 rnrnvoid CFileManagerDlg::ShowMessage(TCHAR *lpFmt, ...)rnrn TCHAR buff[1024];rn va_list arglist;rn va_start( arglist, lpFmt );rn rn memset(buff, 0, sizeof(buff));rn rn wvsprintf(buff, lpFmt, arglist);rn m_wndStatusBar.SetPaneText(0, buff); // 这里。。。。 注释了就没事了。 选择继续还是可以运行 。。rn va_end( arglist );rnrnrn怎么会在这里出错呢。。。 求教啊。。rn
对话框退出时出现断言错误
我建立了一个基于对话框的MFC应用程序,想在对话框上显示flash,因此在对话框上添加了Shockwave flash object。我想当点击flash图像时,弹出一个对话框,于是我新建了一个继承自CShockwaveFlash的类,并在该类的头文件中添加了消息处理映射机制。并增加了函数 virtual BOOL PreTranslateMessage(MSG* pMsg); 在该类的实现文件中添加了如下代码:rnrnBOOL CShockwaveFlash1::PreTranslateMessage(MSG* pMsg) rnrn if(pMsg->message==WM_LBUTTONUP)rn rn CMyNewDlg dlg;rn dlg.DoModal();rn return TRUE;rn rn return FALSE; rn rnrn但是当点击对话框dlg的确定按钮(即对话框的默认按钮)来关闭该对话框时,弹出了<em>断言</em><em>错误</em>,跟错<em>错误</em>,发现出现<em>错误</em>的代码为 wincore.cpp 的886行,即:ASSERT(::IsWindow(m_hWnd));rnrn请各位大侠帮我分析分析,谢谢了。
cimagelist 的一个小问题! 关于断言错误
call stack 中的内容:::rnrnCImageList::Attach(_IMAGELIST * 0x00177410) line 1202 + 28 bytesrnCImageList::Create(unsigned int 131, int 16, int 10, unsigned long 12632256) line 1183rnCMcuControlView::OnUpdate(CView * 0x012d2030 CTerminalView hWnd=0x001e0a96, long 0, CObject * 0x00000000 CObject) line 1917rnCDocument::UpdateAllViews(CView * 0x012d2030 CTerminalView hWnd=0x001e0a96, long 0, CObject * 0x00000000 CObject) line 873rnCTerminalView::OnTerminalAdd() line 416rn这是其中的一部分。rnrn在attach中 的 ASSERT(m_hImageList == NULL); 出现<em>断言</em><em>错误</em>! 求解!rnm_hImageList始终为nullrnrnrn
15個CSS常識下载
1、不要使用过小的图片做背景平铺。这就是为何很多人都不用 1px 的原因,这才知晓。宽高 1px 的图片平铺出一个宽高 200px 的区域,需要 200*200=40, 000 次,占用资源。 相关下载链接:[url=//download.csdn.net/download/qq807865205/4994896?utm_source=bbsseo]//download.csdn.net/download/qq807865205/4994896?utm_source=bbsseo[/url]
JSP开发必备:环境配置图文详解下载
JSP开发必备:环境配置图文详解 相关下载链接:[url=//download.csdn.net/download/jason910/5750991?utm_source=bbsseo]//download.csdn.net/download/jason910/5750991?utm_source=bbsseo[/url]
音频文件ID3Killer下载
将音乐文件内的ID3信息清除,以便于重新编辑。支持ID3 v2 相关下载链接:[url=//download.csdn.net/download/u013642103/6915145?utm_source=bbsseo]//download.csdn.net/download/u013642103/6915145?utm_source=bbsseo[/url]
相关热词 c# 线程结束时执行 c# kb mb 图片 c# 替换第几位字符 c#项目决定成败 c# 与matlab c# xml缩进 c#传感器基础 c#操作wps c# md5使用方法 c# 引用父窗口的组件
我们是很有底线的