我的树控件是这么继承的:
class CShellTree : public CTreeCtrl, public CShellPidl
我把它放在一个对话框中:
class CStep11 : public CFormView
当我在在树初始化成功,都已经显示了一些内容后,点击树上一个item,想展开树的时候,报错。
BOOL CShellTree::OnFolderSelected(NMHDR* pNMHDR, LRESULT* pResult, CString &szFolderPath)
中执行GetSelectedItem()的时候就会出错。
我跟了一下,发现是m_hWnd的值是非法的。但是我直接用在对话框程序里是没事的,在formview中就会出错。请问应该怎么修改?
解决方案 »
- MFC写的操作界面+SERVER2000操作系统下:在ListCtrl中添加的Item项,程序界面遇到 \r\n显示为:口口!!!!
- 怎么把对话框的内容另存为文本文件阿?
- 如何让一个dialog和一个Menu相关联?----小菜鸟求教
- SetEvent没用
- ActiveX控件的调试问题,急!在线等待。
- 一个菜鸟问题,请帮忙看看
- MapViewOfFile使用有什么好处?
- 不规则形状位图按钮制作时遇到的疑问??高手帮忙!!附源代码!!
- 请教:如何用sizeof 得到指针指向的数组大小?
- 关于如何从dialog中向当前view类传递结果的问题。
- 请问一个CString类型的变量占用多大的内存?
- 注册表操作问题!!!!
void CStep11::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
m_step11_tree = (CShellTree*)GetDlgItem(IDC_TREE_PATH);
m_step11_tree->EnableImages();
m_step11_tree->PopulateTree();
初始化结束后,界面都能显示出来。我显示的是本机硬盘盘符,也都成功了。我再点击盘符,想继续展开的时候,GetSelectedItem()出错。
你检查检查m_step11_tree的m_hWnd在初始化以后是对的么?
{
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
CString szPath;
if(m_step11_tree->OnFolderSelected(pNMHDR,pResult,szPath))
然后在类中执行:
BOOL CShellTree::OnFolderSelected(NMHDR* pNMHDR, LRESULT* pResult, CString &szFolderPath)
{
HTREEITEM hItem=NULL; if((hItem = GetSelectedItem()))
这个时候就出错。我看调试信息。当执行m_step11_tree->OnFolderSelected(pNMHDR,pResult,szPath))的时候,m_step11_tree中的m_hWnd就已经不对了。