本帖最后由 VisualEleven 于 2013-07-26 18:58:42 编辑

解决方案 »

  1.   

    CTeachDlg teach;
    teach.ShowCmdInfo(nindex);
    -------------
    这样写不错就奇怪了。不推荐在DrawItem里去处理,listctrl可以捕获到选中事件,在事件响应函数里去处理,就算要在DrawItem里处理,也应该是把要显示的信息通过消息发送给主对话框,然后住对话框再处理显示到m_List_Cmd_Info上。
      

  2.   

    因为在DrawItem里方便获取选中的行号,nindex就是选中的行号,然后把行号作为参数传给ShowCmdInfo(nindex);
    在CTeachDlg下获取信息然后再显示到另一个list里,应该没错啊
      

  3.   

    直接 对 “对话框上两个列表控件m_Teach_ListCtrl,m_List_Cmd_Info”处理。
      

  4.   

    获取行号
    m_ListInfo.GetNextItem(-1, LVNI_SELECTED);CTeachDlg teach;你每次创建一个局部对象,这个对象跟住对话框对象是2个东西,能一样吗
      

  5.   


    m_Teach_ListCtrl我设置成自绘模式了
      

  6.   

    自绘了之后在CTeachDlg中好像就响应不了CLICK之类的消息了
      

  7.   

    void CMyListCtrl::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
    {
    //省略....
    if (state&ODS_SELECTED)
    { CTeachDlg teach;
            teach.ShowCmdInfo(nindex);
    }
    }drawItem 只负责 draw ,与select 无关。
    要响应 SelectChanged
      

  8.   

    NM_CLICK消息通知中去处理,不要放到DrawItem虚函数中去做。
      

  9.   

    void CListCtrlDemoDlg::OnItemchangingListCtrl(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
    // TODO: Add your control notification handler code here

    *pResult = 0;
    }
    或者:void CListCtrlDemoDlg::OnItemchangedListCtrl(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR; *pResult = 0;
    }
    在他们中,取出当前 选择项 给 另一个 对话框。 
      

  10.   

    这里有个关键是,我给listctlr派生新类了,在对话框里就响应不了click了,如果强硬拦截,自绘就会出问题