复制粘贴CTreeView标签

Copy paste in CTreeView labels

本文关键字:标签 CTreeView 复制      更新时间:2023-10-16

我在MFC SDI应用程序中有一个来自CTreeView的控件(基本上包含分离器,CTreeViewCDetailsView)。对我来说,工作是通过处理编辑

结束来编辑树视图节点中的标签
ON_NOTIFY_REFLECT(TVN_ENDLABELEDIT, &CNavigationView::OnTvnEndlabeledit)

我想添加复制/粘贴功能与Ctrl+CCtrl+V。我认为这涉及TVN_BEGINLABELEDITTVN_KEYDOWN,但我不知道如何使这个工作正确,可能是一些想法或样品?

void CNavigationView::OnTvnEndlabeledit(NMHDR *pNMHDR, LRESULT *pResult)
{
    LPNMTVDISPINFO pTVDispInfo = reinterpret_cast<LPNMTVDISPINFO>(pNMHDR);
    if (pTVDispInfo && pTVDispInfo->item.pszText)
    {
    }
}

当我试图从记事本粘贴文本时,pTVDispInfo->item.pszTextNULL根据调试器。

我在Visual Studio 2013, Windows 8中工作

我假设您已经在应用程序中定义了一个也使用Ctrl-V的加速器。因此,在原地编辑控件中,您按Ctrl+V,但这会导致从加速器生成WM_COMMAND消息。加速程序执行一些终止当前编辑作业的操作。

在这种情况下,你需要一个PreTranslateMessage处理程序来检查键盘输入是否通过Ctrl+C/Ctrl+V到达,并将此输入引导到打开的编辑控件,而不是让框架窗口加速器来处理它。

只要设置一个断点,查看callstack,并检查在原地编辑停止时执行的内容。