我的程序中有两个DIALOG类
mainDlg
PageDlg
在mainDlg中有一个CTreeCtrl控件和一个Tab ConTrol控件
PageDlg在Tab ConTrol控件中的一个页面
在Tab ConTrol中执行m_tree.GetSelectedItem()的时候就会出错!
 我跟了一下,发现是m_hWnd的值是非法的。但是我直接用在mainDlg对话框程序里是没事的,在Tab ConTrol控件中就会出错。请问应该怎么修改?

解决方案 »

  1.   

    m_tree这个对象怎么定义和得到的?这是两个对话框,其中的控件类对象一般是不能通用的。需要你做指针传递或者跨类调用对象或者指针。
      

  2.   

    这是我的代码片段
    m_tree在CmainDlg中已经关联
    void Page1::OnMenuExecFile()
    {
    CClientDlg dlg;
    dlg.OnMenuExecFile();}
    void CMainDlg::OnMenuExecFile()
    {
        
    HTREEITEM CurrentNode =m_tree.GetSelectedItem(); //取得此节点的全路径
    if(CurrentNode==NULL)
    return;
    ...........
    .............
    ...................}
      

  3.   

    我以前也遇到过这种情况的,好像是把m_tree设成全局的就行了,在maindlg中的m_tree,在tab control中不能直接用,楼主试试
      

  4.   

    CClientDlg dlg;这仅仅是一个局部变量,没有创建窗口,和你看到的那个窗口没有何关系。
    dlg.OnMenuExecFile();
      

  5.   


    我照着把m_tree设置为全局变量后就好了看了Mackz的提示 后突然 晃然大悟谢谢2位...............