C++在获取系统磁盘符号时报错:Debug Assertion Failed! 请大家帮忙看一下,怎么解决

小龙王2010 2012-01-31 11:55:05
用VC++实现一个文件管理器 在获取系统磁盘符号时 报错:Debug Assertion Failed!的错误提示一直没法通过,在网上找了好多也没有解决,贴出来大家帮忙看看是哪儿出问题了,谢谢。
主要涉及到一个类:FilesAssistantDlg类
我在FilesAssistantDlg.h文件中加入了如下两行代码:

private:
void InitPath(void);
private:
CTreeCtrl m_tcDirectories;


接着在FilesAssistantDlg.cpp中写了一个将系统磁盘符号显示在 Tree control 控件中的方法,如下
void CFilesAssistantDlg::InitPath(void){
wchar_t *pLogicalDrivers = new wchar_t[MAX_PATH];

pLogicalDrivers[0] = '\0';
int nLen = GetLogicalDriveStrings(MAX_PATH-1,pLogicalDrivers);
if ( 0 == nLen)
{ return ; }
int nDriverNameLength = wcslen(L"C:\\")+1;
int i =0;
TVINSERTSTRUCT tvInsertItem;
tvInsertItem.hParent = NULL;
tvInsertItem.hInsertAfter = NULL;
tvInsertItem.item.mask = TVIF_TEXT;
do{
tvInsertItem.item.pszText = pLogicalDrivers +i;
m_tcDirectories.InsertItem(&tvInsertItem);
i += nDriverNameLength;
}while(i<nLen);
delete[] pLogicalDrivers;
}


然后在 BOOL CFilesAssistantDlg::OnInitDialog()方法中加入 一行:InitPath();
来调用这个 InitPath(); 方法 但是 在调试运行过程中老是报错:

Debug Assertion Failed!
Program:...studio 2010 \Projects=FilesAssistant\Debug\FilesAssistant.exe
File:f:\dd\vctools\vc7libs\ship\atlmfc\include\afxcmn.inl
Line:263

For information on how your program can cause an assertion failure, see the Visual C ++ documentation on asserts.


请大家帮忙看看,小弟是新手,不怎么懂
...全文
247 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Eleven 2012-01-31
  • 打赏
  • 举报
回复
你的CTreeCtrl m_tcDirectories;对象关联了窗口没?
RLib 2012-01-31
  • 打赏
  • 举报
回复
就是说在OnInitDialog()的时候m_tcDirectories.InsertItem(&tvInsertItem);这句是错误的,放到其它地方去(比如对话框加载完毕)
RLib 2012-01-31
  • 打赏
  • 举报
回复
ASSERT(::IsWindow(m_hWnd));

你的m_tcDirectories不正确

在OnInitDialog()的时候窗口句柄还没生效!换其它地方调用InitPath();
RLib 2012-01-31
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zhaoxiatengkong_1 的回复:]

谢谢大家的帮忙, 确实是 m_tcDirectories 没有关联到主窗口
我是自己手动在FilesAssistantDlg.h文件添加的 private CTreeCtrl m_tcDirectories; 没有成功关联到主窗口的Tree control 控件上,所以每次编译都提示 Debug Assertion Failed 错误
现在通过 vs2010向导直接在 Tree contro……
[/Quote]
嗯,恭喜找到答案。
小龙王2010 2012-01-31
  • 打赏
  • 举报
回复
谢谢大家的帮忙, 确实是 m_tcDirectories 没有关联到主窗口
我是自己手动在FilesAssistantDlg.h文件添加的 private CTreeCtrl m_tcDirectories; 没有成功关联到主窗口的Tree control 控件上,所以每次编译都提示 Debug Assertion Failed 错误
现在通过 vs2010向导直接在 Tree control 上单击右键选择"Add Variable..." 添加管理这个控件的成员变量 m_tcDirectories就可以了


谢谢大家

64,691

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧