如何在 listcontrol mfc 中编辑单元格?

Posted

技术标签:

【中文标题】如何在 listcontrol mfc 中编辑单元格?【英文标题】:How to edit cell in listcontrol mfc? 【发布时间】:2013-11-23 23:44:35 【问题描述】:

我需要在第二列中编辑我的文本,并且我不想使用 MFC 网格控件。 我如何通过踢它来编辑单元格。 请给我一个简单的例子。

我有什么:

void CTab1::DoDataExchange(CDataExchange* pDX)

    CDialogEx::DoDataExchange(pDX);
    DDX_Control(pDX, IDC_LIST1, m_LISTC);


BEGIN_MESSAGE_MAP(CTab1, CDialogEx)
    ON_NOTIFY(LVN_ENDLABELEDIT, IDC_LIST1, OnEndEdit)
END_MESSAGE_MAP()


// CTab1 message handlers
BOOL CTab1::OnInitDialog()

    CDialogEx::OnInitDialog();
    m_LISTC.InsertColumn(0, L"Buttons", LVCFMT_LEFT,50);
    m_LISTC.InsertColumn(1, L"Time", LVCFMT_LEFT, 50);
    m_LISTC.InsertColumn(2, L"State", LVCFMT_LEFT, 40);

    for (int i = 0; i < 12; ++i)
    
        CString F;
        F.Format(L"F%d", i + 1);
        m_LISTC.InsertItem(m_LISTC.GetItemCount(), F, -1);
        int row = 1;
        int col = 10;
        m_LISTC.SetItemState(row, col, m_LISTC.GetItemState(row, col) | LVN_ENDLABELEDIT);
    
    return TRUE;


void CTab1::OnEndEdit(NMHDR* pNMHDR, LRESULT* pResult)

    NMLVDISPINFO* pLVDI = reinterpret_cast< NMLVDISPINFO* >(pNMHDR);
    if (pLVDI->item.pszText)
        m_LISTC.SetItemText(1, 0, pLVDI->item.pszText);
    *pResult = 0;

但它不起作用。所以我仍然可以编辑第二列的单元格。

【问题讨论】:

这个问题离题了。如果您要求提供代码,则需要演示并显示对问题域的最低限度的了解。你试过什么?为什么你没有成功?您遇到了哪些具体的编程问题? 好的,我会编辑我的问题 完成。我编辑了我的问题 LVS_EDITLABELS 是 List-View Window Style。您必须在创建列表视图时设置它。您要查找的通知消息是LVN_ENDLABELEDIT 是的。固定的。但不工作:/ 【参考方案1】:

很遗憾,不能使用 LVS_EDITLABELS 和 LVN_ENDLABELEDIT 来编辑除第一列之外的其他列。

我只需要在那个单元格上创建编辑控件...

【讨论】:

以上是关于如何在 listcontrol mfc 中编辑单元格?的主要内容,如果未能解决你的问题,请参考以下文章

在对话框窗口中使用 ListControl

MFC ListControl使用方法

猎豹MFC--列表控件ListControl

MFC listcontrol导出excel表格

MFC中listcontrol建立的表,怎样判断选中一行并作出响应

MFC使用ListControl时,第一次左键点击ListControl的列表时无法触发NM_CLICK消息,点击第二次时才能触发