公司项目用到了MFCCGridCtrl,比起MFC原生的控件来说,这个控件用起来还是不错的(不过这一点也不足以让我喜欢上MFC),用CCGridCtrl控件做了一个表格,根据需求将其中的某些项变成了下拉框或是复选框。但是加入后问题来了,当双击时,被双击的项都会变成一个编辑框,无论被双击的项是原生的表格还是下拉框或是复选框,下拉框倒好解决,只需在初始CCGridCtrl控件时设置下拉框项的风格为CBS_DROPDOWNLIST即可:
在初始化函数中调用上述函数即可。
但是复选框项好像就不是那么简单了,开始以为CCGridCtrl控件提供了相应的方法,只是我没有发现,于是上网搜了下希望发现这一办法,搜了一圈没搜到,只有自己写了。
首先是初始化部分:
这里之后复选框项不可编辑了,但是单击复选框项时复选框项的选中状态却不改变了,这时需要对单击事件进行处理。
单击事件处理:
最后,关联控件
这样就好了,记录一下,以后要是再用到MFCCGridCtrl控件就可以直接拿来用(还是不要用上的好。。。。)
void CNetWorkDlg::SetCellCombo(int Row, int Col, CStringArray &items)
{
m_GridList.SetCellType(Row, Col, RUNTIME_CLASS(CGridCellCombo));
CGridCellBase* pCell = m_GridList.GetCell(Row, Col);
if( CGridCellCombo *pItem = dynamic_cast<CGridCellCombo *>(pCell) )
{
pItem->SetStyle(CBS_DROPDOWNLIST);
pItem->SetOptions(items);
if( items.GetSize() > 0 )
{
pItem->SetText(items.GetAt(0));
}
}
}
在初始化函数中调用上述函数即可。
但是复选框项好像就不是那么简单了,开始以为CCGridCtrl控件提供了相应的方法,只是我没有发现,于是上网搜了下希望发现这一办法,搜了一圈没搜到,只有自己写了。
首先是初始化部分:
void CNetWorkDlg::SetCellCheck(int Row, int Col, bool isCheck)
{
m_GridList.SetCellType(Row, Col, RUNTIME_CLASS(CGridCellCheck));
CGridCellBase* pCell = m_GridList.GetCell(Row, Col);
if( CGridCellCheck *pItem = dynamic_cast<CGridCellCheck *>(pCell) )
{
pItem->SetCheck(isCheck);
pItem->SetState(GVIS_READONLY);
}
}这里之后复选框项不可编辑了,但是单击复选框项时复选框项的选中状态却不改变了,这时需要对单击事件进行处理。
单击事件处理:
void CNetWorkDlg::OnClick(NMHDR* pNMHDR, LRESULT* pResult)
{
*pResult = 0;
NM_GRIDVIEW *pItem = reinterpret_cast<NM_GRIDVIEW *>(pNMHDR);
if( NULL != pItem )
{
BOOL Check = 0;
if( 3 == pItem->iColumn || 5 == pItem->iColumn || 8 == pItem->iColumn || 10 == pItem->iColumn )
{
CGridCellBase* pCell = m_GridList.GetCell(pItem->iRow, pItem->iColumn);
if( CGridCellCheck *pItem = dynamic_cast<CGridCellCheck *>(pCell) )
{
Check = pItem->GetCheck();
pItem->SetCheck(!Check);
}
}
}
}最后,关联控件
BEGIN_MESSAGE_MAP(CNetWorkDlg, CDialogEx)
ON_NOTIFY(NM_CLICK, IDC_GRID, &CNetWorkDlg::OnClick)
END_MESSAGE_MAP()
这样就好了,记录一下,以后要是再用到MFCCGridCtrl控件就可以直接拿来用(还是不要用上的好。。。。)
MFCCGridCtrl是一个专注于MFCC(Mel频率倒谱系数)处理的控件,它在音频分析和识别中扮演关键角色。本文详细探讨了MFCC的计算过程,包括预加重、分帧、窗函数应用、梅尔滤波器组、对数转换和离散余弦变换等步骤。同时,我们介绍了MFCCGridCtrl如何在实际应用中实现这些操作,并展示了如何使用该控件进行音频特征提取,对于语音识别、音乐分类等任务具有重要意义。
3112

被折叠的 条评论
为什么被折叠?



