我想请问,我想实现这样的一个目的怎么完成。即:我选择一个要修改的记录,然后在文本中进行修改,然后保存。保存之后我想对话框中还显示我修改的这条记录,并且在list control中那条记录为蓝色(即被选中)。因为我在修改记录,保存之后,是又重新加载的数据,所以每次保存之后都是显示第一条记录。在我添加一条记录的时候,也想保存后显示的是我添加的记录。请问应当怎么实现呢?

解决方案 »

  1.   

    InsertItem是可以指定插入的位置的,如果你给0就是插入到最前面。
    SetItemState可以设置记录的状态。
      

  2.   

    记录修改前的选中记录,重新加载后再调用Scroll()函数滚动动上次的位置即可。
      

  3.   

    LZ说的选中一条记录,然后你还想修改这个记录,那请问你要怎么修改?直接在LIST上操作?这似乎不大可能,应该是借助另外的EDIT控件吧?
    我想是不是可以把你的LIST控件添加一个消息响应函数,类型为选中,然后在选中的代码里写得到字符的部分,显示到EDIT控件上。
    然后对EDIT上的文字进行修改,修改后得到EDIT的文字并更新到LIST上我想这样做太麻烦了吧?
    你可以说下你具体要应用到什么上呢?然后我能帮到LZ的话再说说吧
    以上。
      

  4.   

    在你保存后重新加载之前,将当前选中的那行保存起来;
    在你重新加载之后,设置保存的那行为选中状态  //保存当前选中的行
      int nRecord = -1;
      int nCount = m_wndList.GetItemCount();
      for( int i = 0; i < nCount; i ++ )
      {
        if( ( m_wndList.GetItemState( i, LVIS_SELECTED ) & LVIS_SELECTED ) == LVIS_SELECTED )
        {
          nRecord = i;
          break;
        }
      }  你的重新加载动作...  //设置保存的行的状态
      if( nRecord >= 0 )
      {
        m_wndList.SetItemState( nRecord, LVIS_FOCUSED | LVIS_SELECTED, LVIS_FOCUSED | LVIS_SELECTED );
      }如果添加记录,设置最后以行为选中状态
      int nCount = m_wndList.GetItemCount();
      m_wndList.SetItemState( nCount - 1, LVIS_FOCUSED | LVIS_SELECTED, LVIS_FOCUSED | LVIS_SELECTED );当然,同2楼说的,再用Scroll()函数滚动动上次的位置即可。
      

  5.   

    选中的时候把那条记录位置记住不久行了啊
    int InsertItem( int nItem, LPCTSTR lpszItem );
    设置状态
    BOOL SetItemState( int nItem, LVITEM* pItem );