最近开始做一个样例,重新又用到MFC,就把做的内容稍作整理,留作后用。
1.控件richedit2
在界面上添加了richedit2控件后,我给别的空间添加事件响应函数事总是出现错误,提示的内容记不清了,貌似就是非常严重。最后的解决办法就是在InitInstance()函数中添加了AfxInitRichEdit2();原来该控件在使用前需要初始化。
然后添加控件变量m_ctrlEditResult
初始化以及清除内容时时进行了以下操作
m_ctrlEditResult.SetReadOnly(FALSE);
m_ctrlEditResult.SetSel(0, -1);
m_ctrlEditResult.Clear();
m_ctrlEditResult.SetReadOnly(TRUE);
m_ctrlEditResult.SetSel(0, 0);
加入内容时的操作如下:
CTime time = CTime::GetCurrentTime();
CString strTempInfo;
strTempInfo.Format(_T("[%s]%s\n"), time.Format(_T("%Y-%m-%d %H:%M:%S")), strInfo);
m_ctrlEditResult.SetSel(-1, -1);
m_ctrlEditResult.ReplaceSel( strTempInfo );
m_ctrlEditResult.PostMessage(WM_VSCROLL, SB_BOTTOM, 0);
UpdateData();
2.slider控件
需要给对话框添加消息响应WM_HSCROLL,OnHScroll()。添加控件变量m_osliderPos
涉及操作:
m_oSliderPos.SetRange(0, m_Task.GetEnd());
m_oSliderPos.SetPos(n);
3.combox控件
添加变量m_cmbFrame和CBN_SELCHANGE响应事件。
涉及操作:m_cmbFrame.GetCount();
m_cmbFrame.ResetContent();
m_cmbFrame.AddString(strInfo);
m_cmbFrame.SetItemData(i, (DWORD_PTR)m_vecResult[i]);
m_cmbFrame.SetCurSel(0);
int iSel = m_cmbFrame.GetCurSel();
sResult* psInfo = (sResult*)m_cmbFrame.GetItemData(iSel);
4.普通编辑框
a) CString strLength;
strLength.Format(_T("%d"), m_Task.GetVideoLength());
(GetDlgItem(IDC_FRAME_LENGTH))->SetWindowText(strLength);
b) m_nEndFrame = m_Task.GetVideoLength();(关联变量更新,从后台写入界面)
UpdateData(false);
c) UpdateData(true);//(关联变量更新,从界面写入后台)
5.CFileDialog用法
{
TCHAR szFilter[] = _T("MP4 Files (*.mp4)|*.mp4|\
Avi Files (*.avi)|*.avi|\
MPG Files (*.mpg)|*.mpg|\
RM WM Files (*.rm;*.wm)|*.rm;*.wm|\
TS Files (*.ts)|*.ts|\
Vob Files (*.vob;*.dat)|*.vob;*.dat|\
Mov Files (*.mov)|*.mov|\
All Files (*.*)|*.*||");
CFileDialog dlg(TRUE, _T("mp4|avi|mpg|rm|wm|vob|ts|mov|dat"), NULL, OFN_FILEMUSTEXIST, szFilter, this);
int nRet= (int)dlg.DoModal();
int nFrame = 1;
// LPBYTE pBuf;
if(nRet == IDOK){
//
//
CString strFileName = dlg.GetPathName();
}
}