// RealEventDlg.cpp : implementation file // #include "stdafx.h" #include "IDE.h" #include "RealEventDlg.h" #include #include "shlwapi.h" #include "mainfrm.h" #include ".\realeventdlg.h" #include #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif extern BOOL g_bRun; extern BOOL g_bEventAlarm; extern CString g_strYkWave; extern CString g_strLoginWave; extern CString g_strReguWave; extern CString g_strSetWave; extern CString g_strYcWave; extern CString g_strYxChangeWave; #include "MainFrm.h" extern CMainFrame *g_pMainFrm; CRITICAL_SECTION g_csCreateWav; ///////////////////////////////////////////////////////////////////////////// // CRealEventDlg dialog bool DeleteWav( CString strPath, CString strFileName, int nLayer ) { CStringArray saFilePath; long hfile; struct _finddata_t fFile; CString strCurr = strPath + "\\" + strFileName; int nDone=0; hfile = _findfirst( (char *)(LPCTSTR)strCurr, &fFile ); if( -1L != hfile ) { while( !( nDone = _findnext(hfile, &fFile) ) ) { if( !strcmp(fFile.name,"..") ) continue; if( ( fFile.attrib==16 || fFile.attrib==18 || fFile.attrib==48 || fFile.attrib==2064 || fFile.attrib==2096 || fFile.attrib==2098 || fFile.attrib==16432 || fFile.attrib==16434 ) ) //_A_SUBDIR { } else { CString str = fFile.name; CString sFileNameTemp = strPath + "\\" + str; if( -1 != str.Find( "temp" ) ) { saFilePath.Add( sFileNameTemp ); } } } _findclose(hfile); } for( int i=0;i= 0; i--) { if (sIDE[i] == '\\') { nEnd = i; break; } } m_sIoServerPath = sIDE.Left( nEnd ) + "\\new_server"; if( g_nAlarmModeIsSound != 0 ) { //LOG4C((LOG_NOTICE, "启动 ThreadPlaySound" )); m_hPlaysound = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadPlaySound,this,0,NULL); if (m_hPlaysound == NULL) { } m_hCreateWav = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadCreateWav,this,0,NULL); } SetTimer( 2,1000,NULL );//更改等待状态和时间 //SetTimer( 3,300,NULL );//设置颜色 return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CRealEventDlg::SetPos( int iWidth,int iHeight ) { CRect rc1; rc1.left = 0; rc1.right = rc1.left+iWidth; rc1.top = 0; rc1.bottom = rc1.top+iHeight; this->MoveWindow( rc1 ); int nBtnH = int( float(iHeight-25)/4 ); CRect rc2; rc2.right = rc1.right - 5; rc2.left = rc2.right - 80; rc2.top = 0; rc2.bottom = rc2.top + nBtnH; m_Btn_ConfigAll.MoveWindow( rc2 ); CRect rc3; rc3.right = rc1.right - 5; rc3.left = rc3.right - 80; rc3.top = rc2.bottom + 0; rc3.bottom = rc3.top + nBtnH; m_Btn_Config.MoveWindow( rc3 ); CRect rc4; rc4.right = rc1.right - 5; rc4.left = rc4.right - 80; rc4.top = rc3.bottom + 1; rc4.bottom = rc4.top + nBtnH; m_BtnDelAll.MoveWindow( rc4 ); CRect rc5; rc5.right = rc1.right - 5; rc5.left = rc5.right - 80; rc5.top = rc4.bottom + 0; rc5.bottom = rc5.top + nBtnH; m_BtnDel.MoveWindow( rc5 ); //CRect rc6; //rc6.right = rc1.right - 5; //rc6.left = rc6.right - 100; //rc6.top = rc5.bottom + 1; //rc6.bottom = rc6.top + 20; //m_BtnExit.MoveWindow( rc6 ); CRect rcList; rcList.left = 0; rcList.right = rc2.left - 1; rcList.top = 0; rcList.bottom = rc1.bottom-5;//25;rc5.bottom;// m_ctrlGrid.MoveWindow( rcList ); } void CRealEventDlg::OnPaint() { CPaintDC dc(this); // device context for painting // TODO: Add your message handler code here // Do not call CDialog::OnPaint() for painting messages } int CRealEventDlg::OnCreate(LPCREATESTRUCT lpCreateStruct) { AfxEnableControlContainer(); if (CDialog::OnCreate(lpCreateStruct) == -1) return -1; SetTimer(1, 400, NULL); return 0; } void CRealEventDlg::OnTimer(UINT nIDEvent) { // 如果不报警,直接返回 if ( !g_bRun ) return; //判断是否跳到报警画面 if( nIDEvent==1 ) { // 取新事件,加入列表 CAlarmEvent* pEvent = pEventServer->GetNewEvent(); if ( pEvent != NULL ) { if( strcmp(pEvent->strContent,"") == 0 ) { pEvent->nGet = 1; return; } //自动跳到报警画面 if( g_nAlarmToView && pEvent->strContent.Find(pVariantsManager->m_strReturnNormal) == -1 ) { CMainFrame* pFrame = (CMainFrame*)AfxGetApp()->GetMainWnd(); CString sVarName = pVariantsManager->GetVarNameByID( pEvent->nVarID ); pFrame->SendMessage( WM_MY_NEW_ALERT,(WPARAM)sVarName.GetBuffer(sVarName.GetLength()),0 ); sVarName.ReleaseBuffer(); } m_bComfig = true; AddEventInfoToList(pEvent); //LOG4C((LOG_NOTICE, "AddEventInfoToList %s",pEvent->strContent)); if ( !IsWindowVisible() && g_bRun) { ShowWindow(SW_SHOW); } } } //列表状态 if( nIDEvent==2 ) { int nSize = m_ctrlGrid.GetItemCount(); if( nSize>0 ) { int nSec=0; CString sDeal,sTemp1; for( int i=0;iGetOneEvent( i ); //LOG4C((LOG_NOTICE, "pDevUid = %s,nVarID = %d, nAlarmIndex = %d nStatus=%d ", strUid,nVarID,nAlarmIndex,nStatus )); if( -1 != sDeal.Find( g_strAC_WaitConfig ) && pEvent->nDealStatus==3 )//确认成功 { sDeal.Format( " %s",g_strAC_ConfigSuccess ); m_ctrlGrid.SetItemText( i,5,sDeal ); } else { if( -1 != sDeal.Find( g_strAC_WaitConfig ) ) { sTemp1 = sDeal.Mid( g_strAC_WaitConfig.GetLength()+1,sDeal.GetLength()-g_strAC_WaitConfig.GetLength()-2 ); nSec = atoi( sTemp1 )-1; if( nSec>=0 ) { sDeal.Format( " %s(%d)",sDeal.Left(g_strAC_WaitConfig.GetLength()),nSec ); m_ctrlGrid.SetItemText( i,5,sDeal ); } else { sDeal.Format( " %s",g_strAC_WaitOut ); m_ctrlGrid.SetItemText( i,5,sDeal ); } } } } } } //// //if( nIDEvent==3 && g_nAlarmModeIsSound != 0 ) //{ // int nSize = m_ctrlGrid.GetItemCount(); // if( nSize>0 ) // { // int nSec=0; // CString sDeal,sTemp1; // for( int i=0;iGetOneEvent( i ); // if( nIsSound==0 && nColor!=1 ) // { // //pEventServer->SetOneEventInfo( i,0,1 ); // //m_ctrlGrid.SetItemColor( 5,i,RGB(255,0,0) ); // //m_ctrlGrid.Invalidate(); // break; // } // else if( nIsSound==0 ) // { // break; // } // else if( nIsSound==1 && nColor!=2 ) // { // //pEventServer->SetOneEventInfo( i,1,2 ); // //m_ctrlGrid.SetItemColor( 5,i,RGB(204,232,207) ); // //m_ctrlGrid.Invalidate(); // } // } // } // } //} CDialog::OnTimer(nIDEvent); } void CRealEventDlg::PlaySoundTims( CString sWavPath,int iTimes ) { MSG message; BOOL bRet = false; int nTimes = 0; while( !m_bStopSound ) { bRet = sndPlaySound( sWavPath,SND_FILENAME|SND_ASYNC|SND_NOSTOP ); Sleep( 100 ); if( bRet ) { nTimes++; if( nTimes>=iTimes ) { break; } } if(::PeekMessage (&message,NULL,0,0,PM_REMOVE)) { //响应其他事件 如Exit按钮操作 ::TranslateMessage (&message); ::DispatchMessage (&message); } } } void CRealEventDlg::OnClose() { // m_bComfig = false; // m_ctrlGrid.DeleteAllItems(); // // 将所有未确定事件确定; // while( m_pCurEvent != NULL ) // { // CAnalog *pAnalog = pVariantsManager->FindAnalog( m_pCurEvent->nVarID ); // pAnalog->bConfirm = true; // m_pCurEvent->nConfirm = m_pCurEvent->nConfirm==0?1:3; // m_pCurEvent = pEventServer->GetUnconfirmEvent(); // } // //#if 1 // sndPlaySound( NULL, SND_ASYNC ); // sndPlaySound(NULL,NULL); //停止 //#endif // ShowWindow(SW_HIDE); } CString CRealEventDlg::GetWeekStr( int iDayofWeek ) { CString sRet; switch( iDayofWeek ) { case 0: sRet = "日"; break; case 1: sRet = "一"; break; case 2: sRet = "二"; break; case 3: sRet = "三"; break; case 4: sRet = "四"; break; case 5: sRet = "五"; break; case 6: sRet = "六"; break; } return sRet; } void CRealEventDlg::AddEventInfoToList(CAlarmEvent *event) { ::SendMessage( g_pMainFrm->m_hbottomDockBar,WM_MY_INVALIDATE,0,0 ); CString sTime,sEventTye,sNormalData,sCurrentData,sContent,sDealStatus; sTime = event->strWarningTime;//.Format(g_strTime, event->time.wYear,event->time.wMonth,event->time.wDay,event->time.wHour, event->time.wMinute, event->time.wSecond,GetWeekStr( event->time.wDayOfWeek ) ); sEventTye = event->nStatus==0 ? g_strAlarm : g_strReturnNormal2; if( event->nUpperLimit>0 || event->nLowerLimit>0 || event->nUpperLimit>event->nLowerLimit ) { sNormalData.Format( "%d ≤ X ≤ %d",event->nLowerLimit,event->nUpperLimit );//sNormalData.Format( "%d<= X <=%d",event->nLowerLimit,event->nUpperLimit ); sCurrentData.Format( "%0.1f",event->dbParaValue ); } else { sNormalData.Format( "X = %d",event->nNormalState ); sCurrentData.Format( "%d",event->nAlarmState ); } sDealStatus.Format( " %s(%d)",g_strAC_WaitConfig,event->nNoticeDelay ); int nInsertIndex = m_ctrlGrid.GetItemCount(); m_ctrlGrid.InsertItem(nInsertIndex, sTime); m_ctrlGrid.SetItemText(nInsertIndex, 1, sEventTye ); m_ctrlGrid.SetItemText(nInsertIndex, 2, sNormalData); m_ctrlGrid.SetItemText(nInsertIndex, 3, sCurrentData); m_ctrlGrid.SetItemText(nInsertIndex, 4, " "+event->strContent); m_ctrlGrid.SetItemText(nInsertIndex, 5, sDealStatus ); if( event->nStatus==0 ) { //if( event->strContent.Find( "通信" )==-1 ) //{ m_ctrlGrid.SetItemColor( 0,nInsertIndex,RGB(211,63,45) ); m_ctrlGrid.SetItemColor( 1,nInsertIndex,RGB(211,63,45) ); m_ctrlGrid.SetItemColor( 2,nInsertIndex,RGB(211,63,45) ); m_ctrlGrid.SetItemColor( 3,nInsertIndex,RGB(211,63,45) ); m_ctrlGrid.SetItemColor( 4,nInsertIndex,RGB(211,63,45) ); m_ctrlGrid.SetItemColor( 5,nInsertIndex,RGB(211,63,45) ); m_ctrlGrid.SetItemTextColor( 0,nInsertIndex,RGB(255,255,255) ); m_ctrlGrid.SetItemTextColor( 1,nInsertIndex,RGB(255,255,255) ); m_ctrlGrid.SetItemTextColor( 2,nInsertIndex,RGB(255,255,255) ); m_ctrlGrid.SetItemTextColor( 3,nInsertIndex,RGB(255,255,255) ); m_ctrlGrid.SetItemTextColor( 4,nInsertIndex,RGB(255,255,255) ); m_ctrlGrid.SetItemTextColor( 5,nInsertIndex,RGB(255,255,255) ); //} //else //{ // m_ctrlGrid.SetItemColor( 0,nInsertIndex,RGB(215,215,0) ); // m_ctrlGrid.SetItemColor( 1,nInsertIndex,RGB(215,215,0) ); // m_ctrlGrid.SetItemColor( 2,nInsertIndex,RGB(215,215,0) ); // m_ctrlGrid.SetItemColor( 3,nInsertIndex,RGB(215,215,0) ); // m_ctrlGrid.SetItemColor( 4,nInsertIndex,RGB(215,215,0) ); // m_ctrlGrid.SetItemColor( 5,nInsertIndex,RGB(215,215,0) ); // m_ctrlGrid.SetItemTextColor( 0,nInsertIndex,RGB(0,0,0) ); // m_ctrlGrid.SetItemTextColor( 1,nInsertIndex,RGB(0,0,0) ); // m_ctrlGrid.SetItemTextColor( 2,nInsertIndex,RGB(0,0,0) ); // m_ctrlGrid.SetItemTextColor( 3,nInsertIndex,RGB(0,0,0) ); // m_ctrlGrid.SetItemTextColor( 4,nInsertIndex,RGB(0,0,0) ); // m_ctrlGrid.SetItemTextColor( 5,nInsertIndex,RGB(0,0,0) ); //} } else { m_ctrlGrid.SetItemColor( 0,nInsertIndex,RGB(80,128,30) ); m_ctrlGrid.SetItemColor( 1,nInsertIndex,RGB(80,128,30) ); m_ctrlGrid.SetItemColor( 2,nInsertIndex,RGB(80,128,30) ); m_ctrlGrid.SetItemColor( 3,nInsertIndex,RGB(80,128,30) ); m_ctrlGrid.SetItemColor( 4,nInsertIndex,RGB(80,128,30) ); m_ctrlGrid.SetItemColor( 5,nInsertIndex,RGB(80,128,30) ); } m_ctrlGrid.EnsureVisible(nInsertIndex, FALSE); if( g_nAlarmModeIsSound==1 ) { EnterCriticalSection( &g_csCreateWav ); CString strFileName; strFileName.Format("%s\\wav\\temp_%s_%d_%d_IDE.wav", g_strDirectory, event->strUid, event->nVarID,event->nAlarmIndex ); m_saWavPath.Add( strFileName ); m_saWavContent.Add( event->strContent ); LeaveCriticalSection( &g_csCreateWav ); } } CString CRealEventDlg::GetAlarmFile(int type) { #if 0 switch (type) { case YC_LOWALARM: case YC_UPALARM: case YC_BACK: return g_strYcWave; case LOGIN: case LOGOUT: return g_strLoginWave; case YK: return g_strYkWave; case YX_CHANGE: return g_strYxChangeWave; case SET: return g_strSetWave; } #endif return ""; } bool CRealEventDlg::IsCreateWavOK( CString sWavPath ) { bool bRet = true; CString sPath; for( int i=0;im_ctrlGrid.GetItemCount(); if( nSize > 0 ) { int nSec=0; CString sDeal,sContent; for( int i=0;im_ctrlGrid.GetItemText( i,4 ); sDeal = pDlg->m_ctrlGrid.GetItemText( i,5 ); sDeal = sDeal.TrimLeft(); //if( -1 != sDeal.Find( g_strAC_WaitConfig ) ) { nSize = pDlg->m_ctrlGrid.GetItemCount(); if( i>=nSize ) continue; EnterCriticalSection( &g_csCreateWav ); CAlarmEvent* pEvent = pEventServer->GetOneEvent( i ); LeaveCriticalSection( &g_csCreateWav ); if( pEvent->nSoundTimesnSoundTimes++; CString strFileName; if( g_nAlarmModeIsSound==1 && pEvent->nWarningLevel>=g_nCommWavLevel )//IDE生成 { strFileName.Format("%s\\wav\\temp_%s_%d_%d_IDE.wav", g_strDirectory, pEvent->strUid, pEvent->nVarID,pEvent->nAlarmIndex ); if( !pDlg->IsCreateWavOK( strFileName ) ) continue; if( pDlg->ExistFile(strFileName ) ) { pDlg->m_bStopSound = false; pDlg->PlaySoundTims( strFileName,1 ); LOG4C((LOG_NOTICE, "1:%s",strFileName )); } } else if( g_nAlarmModeIsSound==2 && pEvent->nWarningLevel>=g_nCommWavLevel )//IOServer生成 { strFileName.Format("%s\\wav\\temp_%s_%d_%d_IDE.wav", pDlg->m_sIoServerPath, pEvent->strUid, pEvent->nVarID,pEvent->nAlarmIndex ); //LOG4C((LOG_NOTICE, "strFileName = %s", strFileName )); if( !PathFileExists( strFileName ) ) { LOG4C((LOG_NOTICE, "不存在 %s", strFileName )); } if( pDlg->ExistFile( strFileName ) ) { pDlg->m_bStopSound = false; pDlg->PlaySoundTims( strFileName,1 ); LOG4C((LOG_NOTICE, "2:%s",strFileName )); } } } } nSize = pDlg->m_ctrlGrid.GetItemCount(); Sleep( 1000 ); } } }while( WaitForSingleObject( g_hRunObject, 125L ) == WAIT_TIMEOUT ); return 0; } DWORD WINAPI CRealEventDlg::ThreadCreateWav( CRealEventDlg *pDlg ) { do { static bool sbCreateNow = false; int nSize1 = pDlg->m_saWavPath.GetCount(); int nSize2 = pDlg->m_saWavContent.GetCount(); if( nSize1>0 && nSize2>0 && !sbCreateNow ) { if( g_nAlarmModeIsSound==1 && pStoneUDLLTxtToWav ) { sbCreateNow = true; EnterCriticalSection( &g_csCreateWav ); CString sPath = pDlg->m_saWavPath.GetAt(0); CString sContent = pDlg->m_saWavContent.GetAt(0); try { pStoneUDLLTxtToWav( (char *)(LPCTSTR)sContent, (char *)(LPCTSTR)sPath,g_nTTSType,-5,300 ); } catch(...) { LOG4C((LOG_NOTICE, "pDBMonitorDLLTxtToWav 出错")); } pDlg->m_saWavPath.RemoveAt(0); pDlg->m_saWavContent.RemoveAt(0); LeaveCriticalSection( &g_csCreateWav ); sbCreateNow = false; } } else if( nSize1==0 && nSize2==0 ) { CTime ctNow = CTime::GetCurrentTime(); int nHour; nHour = ctNow.GetHour(); static bool bCanDelWav = true; if( nHour == 23 && bCanDelWav ) { bCanDelWav = false; CString strDectory; strDectory.Format("%s\\wav", g_strDirectory ); DeleteWav( strDectory,"*.*",0 ); LOG4C((LOG_NOTICE, "清空语音文件" )); } else if( nHour != 23 ) { bCanDelWav = true; } } Sleep( 100 ); }while( WaitForSingleObject( g_hRunObject, 125L ) == WAIT_TIMEOUT ); return 0; } bool CRealEventDlg::ExistFile(CString strFileName) { CFileStatus status; CString msg; if(!CFile::GetStatus(strFileName,status)) { return false; } return true; } HBRUSH CRealEventDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: 在此更改 DC 的任何属性 // TODO: 如果默认的不是所需画笔,则返回另一个画笔 return hbr; } BOOL CRealEventDlg::OnEraseBkgnd(CDC* pDC) { CBrush br1; CRect rect; GetWindowRect(&rect); ScreenToClient(&rect); br1.CreateSolidBrush(RGB(230, 241, 249)); pDC->FillRect(rect,&br1); DeleteObject( br1 ); return TRUE; //return CDialog::OnEraseBkgnd(pDC); } //确认全部 void CRealEventDlg::OnHide() { int nSize = m_ctrlGrid.GetItemCount(); if( nSize==0 ) return; //if( MessageBox( g_strAC_ConfigAllEvent, g_strTip, MB_YESNO|MB_ICONINFORMATION)!=IDYES ) // return; int nSec=0; CString sDeal,sTemp1; for( int i=0;iGetOneEvent( i ); //pEventServer->SetOneEventInfo( i,1,1 ); m_bStopSound = true; sndPlaySound( NULL, SND_ASYNC ); sndPlaySound( NULL,NULL ); Sleep( 100 ); pDevicesManager->ConfigAlarm( pEvent->strUid,pEvent->nVarID,pEvent->nStatus,pEvent->nAlarmIndex ); //m_ctrlGrid.SetItemText( i,5," 确认成功" ); } } } //确认所选 void CRealEventDlg::OnConfirm() { int iListCount = m_ctrlGrid.GetItemCount(); POSITION pos = m_ctrlGrid.GetFirstSelectedItemPosition(); int nListSel = m_ctrlGrid.GetNextSelectedItem(pos); if(nListSel>=iListCount || nListSel==-1) { MessageBox( g_strMsgSelectDel, g_strTip, MB_ICONINFORMATION); return; } //if( MessageBox( g_strAC_ConfigChooseEvent, g_strTip, MB_YESNO|MB_ICONINFORMATION)!=IDYES ) // return; pos = m_ctrlGrid.GetFirstSelectedItemPosition(); if(NULL == pos) { } else { CString sDeal,sTemp1; while(pos) { int nItem = m_ctrlGrid.GetNextSelectedItem(pos); sDeal = m_ctrlGrid.GetItemText( nItem,5 ); if( -1 != sDeal.Find( g_strAC_WaitConfig ) ) { CAlarmEvent* pEvent = pEventServer->GetOneEvent( nItem ); //pEventServer->SetOneEventInfo( nItem,1,1 ); m_bStopSound = true; sndPlaySound( NULL, SND_ASYNC ); sndPlaySound( NULL,NULL ); Sleep( 100 ); pDevicesManager->ConfigAlarm( pEvent->strUid,pEvent->nVarID,pEvent->nStatus,pEvent->nAlarmIndex ); //m_ctrlGrid.SetItemText( nItem,5," 确认成功" ); } } } } //删除全部 void CRealEventDlg::OnDeleteall2() { bool bCanExit=true; int nSize = m_ctrlGrid.GetItemCount(); if( nSize>0 ) { //if( MessageBox( g_strAC_DelAllEvent, g_strTip, MB_YESNO|MB_ICONINFORMATION)!=IDYES ) // return; int nSec=0; CString sDeal,sTemp1; EnterCriticalSection( &g_csCreateWav ); for( int i=nSize-1;i>=0;i-- ) { sDeal = m_ctrlGrid.GetItemText( i,5 ); sDeal = sDeal.TrimLeft(); if( -1 == sDeal.Find( g_strAC_WaitConfig ) ) { pEventServer->DeleteOneEvent( i ); m_ctrlGrid.DeleteItem( i ); } } LeaveCriticalSection( &g_csCreateWav ); } } //删除所选 void CRealEventDlg::OnDeleteall() { int iListCount = m_ctrlGrid.GetItemCount(); POSITION pos = m_ctrlGrid.GetFirstSelectedItemPosition(); int nListSel = m_ctrlGrid.GetNextSelectedItem(pos); if(nListSel>=iListCount || nListSel==-1) { MessageBox( g_strMsgSelectDel, g_strTip, MB_ICONINFORMATION); return; } //if( MessageBox( g_strAC_DelChooseEvent, g_strTip, MB_YESNO|MB_ICONINFORMATION)!=IDYES ) // return; pos = m_ctrlGrid.GetFirstSelectedItemPosition(); if(NULL == pos) { } else { CString sDeal,sTemp1; EnterCriticalSection( &g_csCreateWav ); while(pos) { int nItem = m_ctrlGrid.GetNextSelectedItem(pos); sDeal = m_ctrlGrid.GetItemText( nItem,5 ); if( -1 == sDeal.Find( g_strAC_WaitConfig ) ) { pEventServer->DeleteOneEvent( nItem ); m_ctrlGrid.DeleteItem( nItem ); pos = m_ctrlGrid.GetFirstSelectedItemPosition(); } } LeaveCriticalSection( &g_csCreateWav ); } int a=0; } //关闭对话框 void CRealEventDlg::OnBtnEixt() { //bool bCanExit=true; //int nSize = m_ctrlGrid.GetItemCount(); //if( nSize>0 ) //{ // int nSec=0; // CString sDeal,sTemp1; // for( int i=0;i0 ) // { // for( int i=nSize-1;i>=0;i-- ) // { // pEventServer->DeleteOneEvent( i ); // m_ctrlGrid.DeleteItem( i ); // } // } // OnOK(); //} //else // MessageBox( "还有等待确认状态的事件尚未处理,不能关闭对话框", g_strTip, MB_ICONINFORMATION); } BOOL CRealEventDlg::PreTranslateMessage(MSG* pMsg) { // TODO: 在此添加专用代码和/或调用基类 if( pMsg->message == WM_KEYDOWN ) { if(pMsg->wParam==VK_RETURN||pMsg->wParam==VK_ESCAPE) { return TRUE; } } return CDialog::PreTranslateMessage(pMsg); } void CRealEventDlg::DeleteAllNotice() { bool bCanExit=true; int nSize = m_ctrlGrid.GetItemCount(); if( nSize>0 ) { int nSec=0; CString sDeal,sTemp1; for( int i=nSize-1;i>=0;i-- ) { pEventServer->DeleteOneEvent( i ); m_ctrlGrid.DeleteItem( i ); } } }