Add Undo,Cut,Paste and Copy to the EditCtrl in the ListCtrl and TreeCtrl

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.

Download demo project - 20 KB



Comments

  • There are no comments yet. Be the first to comment!

Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • Microsoft® Office 365 is a top choice for enterprises that want a cloud-based suite of productivity/ collaboration applications. With Office 365, you get access to Microsoft™ Office solutions practically anytime, anywhere, on virtually any device. It's a great option for current Microsoft users who can now build on their experience with Microsoft™ solutions while enjoying the flexibility of a cloud-based delivery. But even organizations with no previous investment in Microsoft will find that …

  • More than ever, agile Software Life Cycle Development and DevOps drives critical top-line business impact for customers across a broad range of industries. Learn how XtremIO is fundamentally enabling the next generation of agile Software Development & DevOps to: Radically improve developer efficiency and overall product quality via an All-Flash Dev Ops platform Enable modern lightning fast dev methodologies with zero-cost application & datasets full copies. Allow Developers to have zero storage obstacles, …

Most Popular Programming Stories

More for Developers

RSS Feeds

Thanks for your registration, follow us on our social networks to keep up-to-date