界面如下
主要代码
BOOL CTimeRecordingDlg::OnInitDialog()
{
// TODO: 在此添加额外的初始化代码
m_oFont.CreatePointFont(300, _T("隶书"));
Edit.SetFont(&m_oFont);
CRect rect;
Edit.GetClientRect(rect);
OffsetRect(&rect, 0, 2);
Edit.SendMessage(EM_SETRECT, 0, (LPARAM)&rect);
CString strTime;
CTime tm;
tm = CTime::GetCurrentTime(); //获取当前系统时间
//strTime = tm.Format("%y年%m月%d日 %X");
strTime = tm.Format("%X");
SetDlgItemText(IDC_Time, strTime); //初始化编辑框显示
SetTimer(1, 1000, NULL); //启动定时器
m_Box.AddString(_T("Happy"));
m_Box.AddString(_T("Surprise"));
m_Box.AddString(_T("Disgust"));
m_Box.AddString(_T("Fear"));
m_Box.AddString(_T("Sadness"));
m_Box.SetCurSel(0);
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}
void CTimeRecordingDlg::OnBnClickedMouth()
{
CString tempstr;
CString str1;
CString tester;
CFile file;
CTime tm;
CString path;
CString str;
CString Box;
GetDlgItemText(IDC_EDIT1, path);
GetDlgItemText(IDC_EDIT2, tester);
GetDlgItemText(IDC_COMBO1, Box);
GetDlgItem(IDC_Mouth)->GetWindowText(tempstr);
if (path == "")
{
MessageBox(_T("请先选择保存的文件"));
}
else {
/*if (tempstr == "开始")
{
GetDlgItem(IDC_Mouth)->SetWindowText(_T("停止"));*/
tm = CTime::GetCurrentTime();
str1 = tm.Format("%Y年%m月%d日%X");
file.Open(path, CFile::modeReadWrite);
file.SeekToEnd();
WORD unicode = 0xFEFF; //这句重要,注意这里是F E FF,中间有个E
file.Write(&unicode, 2); //这句重要
//file.Write(_T("被试:"), wcslen(_T("开始时间:")) * sizeof(wchar_t));
//str = _T("被试") + tester+_T("-") + Box + _T("\t有嘴角动作\t");
str = _T("被试") + tester + _T("-") + Box + _T("\t嘴角\t");
file.Write(str, wcslen(str) * sizeof(wchar_t));
//file.Write(_T("开始时间:"), wcslen(_T("开始时间:")) * sizeof(wchar_t));
file.Write(str1, wcslen(str1) * sizeof(wchar_t));
file.Write(_T("\n"), 2);
file.Close();
}
}
键盘响应事件
void CTimeRecordingDlg::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
CDialogEx::OnChar(nChar, nRepCnt, nFlags);
if (nChar == 86)//V
{
OnBnClickedHappy();
}
if (nChar ==66)//B
{
OnBnClickedEyebrow();
}
if (nChar == 78)//N
{
OnBnClickedSurprise();
}
if (nChar == 77)//M
{
OnBnClickedMouth();
MessageBox(_T("M键按下"));
}
}
BOOL CTimeRecordingDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: 在此添加专用代码和/或调用基类
SendMessage(pMsg->message, pMsg->wParam);
return CDialogEx::PreTranslateMessage(pMsg);
}
定时器让编辑框显示时间,1s刷新一次
void CTimeRecordingDlg::OnTimer(UINT_PTR nIDEvent)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
CDialogEx::OnTimer(nIDEvent);
CString strTime;
CTime tm;
tm = CTime::GetCurrentTime();
//strTime = tm.Format("%Y-%m-%d %H:%M:%S");
strTime = tm.Format("%H:%M:%S");
SetDlgItemText(IDC_Time, strTime); //显示系统时间
}