如何在ListControl MFC中编辑单元格? [英] How to edit cell in listcontrol mfc?
本文介绍了如何在ListControl MFC中编辑单元格?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我需要在第二列中编辑文本,并且我不想使用MFC网格控件.我如何通过踢它来编辑单元格.请给我一个简单的例子.
I need edit my text in second column and I don't want use MFC grid control. how I can edit cell by kicking on it. please give me simple example.
有我所拥有的:
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;
}
但是它不起作用.所以我仍然可以编辑第二列的单元格.
but it not working. so I still can edit cell's of second column.
推荐答案
不幸的是,无法利用LVS_EDITLABELS和LVN_ENDLABELEDIT编辑第一列以外的其他列.
Unfortunately it isn't possible to utilize LVS_EDITLABELS and LVN_ENDLABELEDIT for editing other columns than the first.
我只需要在该单元格上创建编辑控件...
I just must create edit control on that cell...
这篇关于如何在ListControl MFC中编辑单元格?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文