MFC中GridCtrl合并单元格SetCellCombine出错
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC中GridCtrl合并单元格SetCellCombine出错相关的知识,希望对你有一定的参考价值。
部分程序如下,想合并第一行所有单元格
try
m_Grid.SetRowCount(20);
m_Grid.SetColumnCount(9);
catch (CMemoryException* e)
e->ReportError();
e->Delete();
return;
CRect rect;
GetDlgItem(IDC_GRID)->GetClientRect(&rect);
for (int i=0;i<m_Grid.GetRowCount();i++)
for (int j=0;j<m_Grid.GetColumnCount();j++)
m_Grid.SetRowHeight(i,rect.Height()/m_Grid.GetRowCount()); //设置各行高
m_Grid.SetColumnWidth(j,rect.Width()/m_Grid.GetColumnCount()); //设置各列宽
Item.mask = GVIF_TEXT|GVIF_FORMAT;
int row=0;
int col= 0;
m_Grid.SetCellCombine(row,0,0,8,TRUE);
Item.row = row;
Item.col = col;
Item.nFormat = DT_CENTER|DT_VCENTER|DT_SINGLELINE;
Item.szText.Format(_T("XXXX"));
m_Grid.SetItem(&Item);
程序中断,int CGridCtrl::GetRowHeight(int nRow) const
nRow=-1
不能理解,为什么会出现这种情况,望高人指点
控件下载一次后就驻留在用户本地机器上,下次再访问相同的主页时,可不再下载该控件,而是直接运行用户本地的控件。这里控件容器就是浏览器,用户不需要通过浏览器调用控件的属性或方法。
因此,开发面向Web的ActiveX控件比开发桌面的控件还要简单些,所复杂的是如何将该控件很好地嵌入主页,使用户能正常浏览。
如何在 listcontrol mfc 中编辑单元格?
【中文标题】如何在 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 来编辑除第一列之外的其他列。
我只需要在那个单元格上创建编辑控件...
【讨论】:
以上是关于MFC中GridCtrl合并单元格SetCellCombine出错的主要内容,如果未能解决你的问题,请参考以下文章
HTMLHTML 表格 ③ ( 合并单元格 | 跨行合并 | 跨列合并 | 单元格合并顺序 | 跨行设置 rowspan 属性 | 跨列设置 colspan 属性 )