#include "stdafx.h" #include "funclist.h" IMPLEMENT_DYNAMIC( FuncList,CListCtrl ) BEGIN_MESSAGE_MAP( FuncList,CListCtrl ) ON_WM_CREATE() ON_NOTIFY_REFLECT( NM_CLICK,nm_click ) END_MESSAGE_MAP() FuncList::FuncList(): listener(0){ } void FuncList::setListener( FuncListListener *l ){ listener=l; } int FuncList::OnCreate( LPCREATESTRUCT cs ){ CListCtrl::OnCreate( cs ); return 0; } void FuncList::nm_click( NMHDR *nmhdr,LRESULT *result ){ NMLISTVIEW *lv=(NMLISTVIEW*)nmhdr; int k=0; Funcs::iterator it; for( it=funcs.begin();it!=funcs.end() && kiItem;++k,++it ){ } if( it!=funcs.end() ){ listener->funcSelected( *it ); } *result=0; } void FuncList::clear(){ funcs.clear(); DeleteAllItems(); } void FuncList::insert( int line,const string &func ){ int n=0; Funcs::iterator it; for( it=funcs.begin();it!=funcs.end() && line>*it;++n,++it ){ } if( it!=funcs.end() && line==*it ){ SetItemText( n,0,func.c_str() ); return; } it=funcs.insert( it,line ); InsertItem( n,func.c_str() ); } void FuncList::remove( int begin,int end ){ int n=0; Funcs::iterator it; for( it=funcs.begin();it!=funcs.end() && *it=begin ) *it+=offset; } }