当前位置:编程学习 > C#/ASP.NET >>

VC6中子对话框CTreeCtrl控件的填充问题

在VC6(xp professional系统)基于对话框的程序中,在主对话框中我们在OnInitDialog()中对主对话框中的CTreeCtrl控件进行填充是没有问题的,但对子对话框,我在其构造行数中调用该子对话框的成员函数来填充该子对话框的CTreeCtrl控件就报错,为了对比,两段填充代码是一样的,代码和报错如下:
CChdDlg::CChdDlg(CWnd* pParent /*=NULL*/)
: CDialog(CChdDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CChdDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
PopulateChdTree();
}

void CMyTreelist::PopulateChdTree()
{
m_treeChild.DeleteAllItems();

HTREEITEM hLetter[26];

for(int nChar = 'A';nChar <= 'Z'; nChar++)
{
hLetter[nChar-'A'] = m_treeChild.InsertItem((TCHAR *)&nChar);
}

HANDLE hFind;
WIN32_FIND_DATA dataFind;
BOOL bMoreFiles = TRUE;
CString strFile;


hFind= FindFirstFile("c:\\*.*",&dataFind);

while(hFind != INVALID_HANDLE_VALUE && bMoreFiles == TRUE)
{
if(dataFind.dwFileAttributes == FILE_ATTRIBUTE_ARCHIVE)
{
int nChar = dataFind.cFileName[0];
if(islower(nChar))
nChar = nChar - 32;
if(isalpha(nChar))
nChar = nChar - 'A';
else
nChar = 26;
m_treeChild.InsertItem(dataFind.cFileName,hLetter[nChar]);
}
bMoreFiles = FindNextFile(hFind,&dataFind);
}
FindClose(hFind);
}


报错:
Debug Assertion Failed!

Program:...ocs\TreeDlgTest\TreeDlgTest.exe
File:afxcmn.inl
Line:237

For information on how your program can cause an assertion
failure, see Visual C++ documentation on asserts.
--------------------编程问答-------------------- 大家没有类似的经验么?share一下吧! --------------------编程问答-------------------- 我用子对话框中的一个按钮来调用PopulateChdTree()进行填充是ok的,但在构造函数中调用就fail,但我希望该子对话框显示时就自动填充,各位有什么好办法啊?
--------------------编程问答-------------------- 因为在构造函数中构造时,对话框还没完成加载,
--------------------编程问答-------------------- 3楼正解
你可以在子对话框的OnInitDialog填充TREECTRL --------------------编程问答-------------------- 谢谢各位,的确是这样的,在OnInitDialog中填充就OK了! --------------------编程问答-------------------- 支持搂主,收藏
补充:.NET技术 ,  VC.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,