Как отредактировать ячейку в listcontrol mfc?

0

Мне нужно отредактировать мой текст во втором столбце, и я не хочу использовать управление сеткой 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;
}

но он не работает. поэтому я все еще могу редактировать ячейку второго столбца.

  • 0
    Этот вопрос оффтоп. Если вы запрашиваете код, вам нужно продемонстрировать и продемонстрировать минимальное понимание проблемной области. Что вы пробовали? Почему вам не удалось? С какими конкретными проблемами программирования у вас возникают проблемы?
  • 0
    хорошо я отредактирую свой вопрос
Показать ещё 3 комментария
Теги:
mfc
edit

1 ответ

0

К сожалению, невозможно использовать LVS_EDITLABELS и LVN_ENDLABELEDIT для редактирования других столбцов, чем первая.

Я просто должен создать контроль редактирования в этой ячейке...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню