This code shows how to Enable Ctrl Z, Ctrl V, Ctrl X and Ctrl C hot Keys for
Cut,Paste and Copy in the EditCtrl that appears in the ListCtrl. Even the
Ctrl + Insert and Shift + Insert work for this Code.
This is a slight modification to the Article written by Zafir Anjum.
#define VK_C 67
#define VK_V 86
#define VK_X 88
#define VK_Z 90
BOOL CMyListView::PreTranslateMessage(MSG* pMsg)
{
// If edit control is visible in tree view control, sending a
// WM_KEYDOWN message to the edit control will dismiss the edit
// control. When ENTER key was sent to the edit control, the parent
// window of the tree view control is responsible for updating the
// item's label in TVN_ENDLABELEDIT notification code.
if ( pMsg->message == WM_KEYDOWN )
{
CListCtrl& oListctrl = GetListCtrl( );
CEdit* edit = oListctrl.GetEditControl();
if (edit)
{
if( GetKeyState( VK_CONTROL )
{
if( pMsg->wParam == VK_C )
{
edit->Copy();
return TRUE;
}
if( pMsg->wParam == VK_V )
{
edit->Paste();
return TRUE;
}
if( pMsg->wParam == VK_X )
{
edit->Cut();
return TRUE;
}
if( pMsg->wParam == VK_Z )
{
edit->Undo();
return TRUE;
}
}
if( pMsg->wParam == VK_RETURN || pMsg->wParam == VK_ESCAPE ||
pMsg->wParam == VK_CONTROL || pMsg->wParam == VK_INSERT ||
pMsg->wParam == VK_SHIFT )
{
edit->SendMessage(WM_KEYDOWN, pMsg->wParam, pMsg->lParam);
return TRUE;
}
}
}
return CListView::PreTranslateMessage(pMsg);
}
Add this Function as a protected Member function to your ListView or ListCtrl header
file.
virtual BOOL PreTranslateMessage(MSG* pMsg);
Map functions for the Notification Messages LVN_BEGINLABELEDIT and
LVN_ENDLABELEDIT as described in Zafir Anjum’s Article. I have added
this below for your convenience.
void CMyListView::OnBeginLabelEdit( NMHDR* /*pNMHDR*, LRESULT* pResult)
{
// This is the Limit the size of the Intem Text to 127
CListCtrl& oListctrl = GetListCtrl( );
oListctrl.GetEditControl()->LimitText( 127 );
*pResult = 0;
}
void CMyListView::OnEndLabelEdit( NMHDR * pNMHDR, LRESULT * pResult )
{
*pResult = TRUE;
}
Add the Declarations in the CMyListCtrl.h file. Similar Procedure will work
for the TreeCtrls also.
I would like to thank Codeguru.com and its team for
Publishing this article on their site. Please do post me any modification that will
improve the above code.