Using F2 as a hot key to Rename an Item in a ListCtrl or TreeCtrl
Posted
by Sajith Karunakaran
on February 23rd, 1999
Although I have taken great care while coding this use this code at your own risk.
Add the following code to the .cpp file of your CListCtrl or CListView
BEGIN_MESSAGE_MAP(CMyListView, CListView)
ON_WM_KEYDOWN()
ON_NOTIFY_REFLECT_EX( LVN_BEGINLABELEDIT, OnBeginLabelEdit )
ON_NOTIFY_REFLECT_EX( LVN_ENDLABELEDIT, OnEndLabelEdit )
END_MESSAGE_MAP()
void CMyListView::OnKeyDown( UINT nChar, UINT nRepCnt, UINT nFlags )
{
CListCtrl& oListCtrl = GetListCtrl( );
switch( nChar )
{
case VK_F2:
{
// To Use F2 as hot Key to get EditCtrl on the ListView it must have
// the Style LVS_EDITLABELS
ASSERT( oListCtrl.GetStyle() & LVS_EDITLABELS );
// don't do an Edit Label when the multiple Items are selected
if( oListCtrl.GetSelectedCount( ) == 1 )
{
UINT nListSelectedItem = GetSelectedItem();
VERIFY( oListCtrl.EditLabel( nListSelectedItem ) != NULL );
}
else
CListView::OnKeyDown( nChar, nRepCnt, nFlags );
}
break;
default:
CListView::OnKeyDown( nChar, nRepCnt, nFlags );
break;
}
}
// this Function Returns the first Selected Item In the List
UINT CMyListView::GetSelectedItem()
{
CListCtrl& oListCtrl = GetListCtrl( );
// this Function Valid Only when a Single Item Is Selected
ASSERT( oListCtrl.GetSelectedCount( ) == 1 );
UINT nNoOfItems = oListCtrl.GetItemCount( );
for( UINT nListItem = 0; nListItem < nNoOfItems; nListItem++ )
if( oListCtrl.GetItemState( nListItem, LVIS_SELECTED ) )
break;
ASSERT( nListItem < nNoOfItems );
return nListItem;
}
Add this in the MessageMap section of CMyListView or CMyListCtrl file.
afx_msg void OnKeyDown( UINT nChar, UINT nRepCnt, UINT nFlags );
Add this Function as a private Member Fn to your CMyListView or CMyListCtrl .h file.
UINT GetSelectedItem();

Comments
no longer getting error
Posted by Legacy on 04/28/1999 12:00amOriginally posted by: Edward Evans
I had close msdev and the next time I started it it worked just fine. Don't know why it couldn't find it the first time. In other words I had started up MSDev.exe and checked the AddIns boxes for the 2 addins and then loaded a project into that instance and got the errors. After closing and opening a new instace it worked just fine. Thanks for your help and efforts.
Reply