我是MFC& BGCControlBar。
现在我计划使用CBCGPListCtrl,它被定义为:
class BCGCBPRODLLEXPORT CBCGPListCtrl : public CListCtrl
&安培;
CBCGPListCtrl m_wndWatch;
现在在演示代码中我打算改变:
int CWatchBar::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CBCGPDockingControlBar::OnCreate(lpCreateStruct) == -1)
return -1;
m_Font.CreateStockObject (DEFAULT_GUI_FONT);
CRect rectDummy;
rectDummy.SetRectEmpty ();
// Create output pane:
const DWORD dwStyle = WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_VSCROLL | LVS_REPORT | LVS_EDITLABELS ;
m_wndWatch.Create (dwStyle, rectDummy, this, ID_LIST_1);
m_wndWatch.SendMessage (LVM_SETEXTENDEDLISTVIEWSTYLE, 0,
LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
m_wndWatch.InsertColumn (0, _T("Variable"), LVCFMT_LEFT, 100);
m_wndWatch.InsertColumn (1, _T("Value"), LVCFMT_LEFT, 100);
m_wndWatch.InsertItem (0, _T("m_nCount"));
m_wndWatch.SetItemText (0, 1, _T("100"));
m_wndWatch.SetFont (&m_Font);
return 0;
}
我得到的是一个列表(如图中所示),我只能编辑第一列并且数据无法保留。 如何编辑第二列文字并使数据可保留?
答案 0 :(得分:0)
您需要网格控件而不是CListCtrl(或派生类)。实际上,可以在其他专栏中添加对版本的支持,但这是一个很好的工作,而不是我向新手推荐的那种东西。
根据this page of their web site,他们有一个网格控件。
答案 1 :(得分:0)
为了使MFC CListCtrl可编辑,您需要做一些事情。这是一个非常广泛的概述,不会涉及太多细节:
如上所述,它需要从CListCtrl派生一个类,因为CListCtrl本身不允许您显式编辑所有列。
在给定光标位置CPoint
的情况下,您需要一个例程来计算您单击的特定单元格的行/列号。
在派生的CListCtrl
课程中,您还需要一种方法来编辑所选单元格,创建并显示适当大小的CEdit
控件。
创建派生CEdit
控件,以便在完成时发送LVN_ENDLABELEDIT
消息并自行破坏。
可从此站点下载实现可编辑列表控件的Visual Studio 2010项目示例:
http://www.technical-recipes.com/2014/making-a-mfc-list-control-editable/
在运行/调试示例时,您将获得一个实现可编辑列表控件的示例对话框项目,如下所示: