我选择了非DOC/VIEW方式,程序里的mainframe,初始化个对话框做上方的菜单。
我建了个CSplitter来拆分window,初始化时,左边是CDemoTreeView,右边是CHtmlViewEx.我想双击左边的树的子选项,然后在右边显示另外一个CDemoListView,里面预先设置好了数据。
我用Class Wizard在CDemoTreeView创建了 OnTreeDblClk(LPNMHDR lpdr):
 
OnTreeDblClk(LPNMHDR lpdr)
{
  CTreeCtrl* pTreeCtrl =&m_GameTree;
  HTREEITEM hItem =pTreeCtrl->GetSelectedItem();
  pDemoListView =(CDemoListView*)m_wndSplitter.GetPane(0, 1);
}
m_wndSplitter我在CDemoListView.h重新定义了.
 
程序通过编译,可是当我双击树里的选项就会出错:
Debug Assertion Fail!
File: winsplit.cpp
line:2329CDemoListView是基于CListView的,我不能用class wizard去建立OnListDblClk()的function去实现双击列表里的选项去打开另外一个窗口.请问我自己能否自己新建个member funcation,类OnTreeDlbClk()去实现呢?希望高手能帮我解决这两个难题!!谢谢
schutzop

解决方案 »

  1.   

    File: winsplit.cpp
    line:2329
    ---------
    是一个assert,去看看那一行是什么,或者跟踪调试一下
      

  2.   


    ASSERT(m_nMaxRows >= 1);
    你的m_wndSplitter创建不正确,或者被溢出的内存破坏了
      

  3.   

    你右边的视图到底是CHtmlViewEx还是CDemoListView?如果是CHtmlViewEx就不能强制转换成CDemoListView的
      

  4.   

    我初始化右边的时候是CHtmlViewEx,然后我想双击右边树子项,然后右边显示另外一个CDemoListView.不能强制转换,有其他方法吗?能设置一个宏把原来的那个point删除了再赋值吗?还是要重新建一个基CFrameWnd的窗口呢?还有,我是新丁,怎么给分的?我注册后有多少分的呢?
      

  5.   

    splitter需要的基类选择是有限制的 好像必须是view的吧 不然会有错。
      

  6.   

    我看过本书有用pView这个指针的,可是不知道怎么用.他是用在OnSleChanged();里的我用在OnTreeDlbClk();NM_TREEVIEW* pNMTREEVIEW=(MN_TREEVIEW*)pNMHDR
    CDemoListView* pView=((CSplitter*)AfxGetMainWnd())->GetDemoListView;我照套他的用法,可是报错:
    error C2065: 'MN_TREEVIEW' : undeclared identifier
    error C2059: syntax error : ')'CDemoTreeView是基于CView的不是CTreeView的我在学校只学了C/C++,现在碰到了MFC觉得很乱,好象什么都不懂...谢谢各位指点!!
      

  7.   

    初试化(在CSplitter里):左边:CDemoTreeView 右边:CHtmlViewEx然后我想实现:点击左边的树的子选项在右边显示一个CDemoListView
      

  8.   

    See the DAOVIEW Sample: Database Browser
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcsample/html/_sample_mfc_DAOVIEW.asp
      

  9.   

    To:jiangsheng
    我选择了非DOC/VIEW的方式来写这个Demo程序呢...里面没有CDemoDoc这个class的,也可以用GetDoc那些的吗?
      

  10.   

    Why you don't want a document class?