ciw_blue吧 关注:22贴子:259
  • 2回复贴,共1

【源代码】闹钟

只看楼主收藏回复

void CMFC_TimerDlg::OnTimer(UINT nIDEvent) 
{
// TODO: Add your message handler code here and/or call default
    GetLocalTime( &m_nowTime );
if( nIDEvent == 100 )
{
for( vector<Time>::iterator iter = m_timeIter; iter != m_time.end() ; iter ++)
{

if( m_nowTime.wHour == iter->hour && m_nowTime.wMinute == iter->minute )
{
if( iter->isCloseCptr != 0 )
{
KillTimer( 100 );
KillTimer( 101 );
ExitWindowsEx( EWX_SHUTDOWN, NULL);
}
else
{
if( strcmp( iter->message, "\0" ) != 0 && m_isShowMsg == true )
{
m_isShowMsg = false;
CShowMsg dlg;
dlg.m_msg = iter->message;
dlg.m_musicPath = iter->musicPath;
dlg.DoModal();
m_isShowMsg = true;
}
}
}
}
}

if( nIDEvent == 101 )
{
CString time;
time.Format( "%d:%d:%d", m_nowTime.wHour, m_nowTime.wMinute, m_nowTime.wSecond );
SetDlgItemText( IDC_EDIT4, time);
}
CDialog::OnTimer(nIDEvent);
}

void CMFC_TimerDlg::OnAdd() 
{
// TODO: Add your control notification handler code here
Time t;
    CString str,str1;
UpdateData();

GetDlgItemText( IDC_EDIT1, str);
GetDlgItemText( IDC_EDIT2, str1);
if( str == "" || str1 == "" )
{
MessageBox( "请输入时间,然后继续." );
return ;
}
t.hour = GetDlgItemInt( IDC_EDIT1 );
t.minute = GetDlgItemInt( IDC_EDIT2 );
    GetDlgItemText( IDC_EDIT3, str );
GetDlgItemText( IDC_EDIT5, str1 );

if( t.hour >= 0 && t.hour <= 23  && t.minute >= 0 && t.minute <=59 && str != "" )
{
memset( t.message, 0, sizeof( t.message ) );
for(int i=0; i<str.GetLength(); i++)
{
t.message[i] = str[i];
}

memset( t.musicPath, 0, sizeof( t.musicPath ) );
for( i=0; i<str1.GetLength(); i++)
{
t.musicPath[i] = str1[i];
}
        UpdateData(FALSE);
t.isCloseCptr = (bool)m_isCloseCptr;

m_time.push_back( t );
        m_timeIter = m_time.begin();
if( MessageBox( "这个设置是否要保存?", "消息提示", MB_YESNO ) == IDYES )
{
WriteConfig();
m_time.clear();
ReadConfig();
}
m_timeIter = m_time.begin();
MoveList();
}
else
{
MessageBox( "请填写正确的时间.", "错误提示" );
}

    SetDlgItemText( IDC_EDIT1, "" );
SetDlgItemText( IDC_EDIT2, "" );
}

void CMFC_TimerDlg::WriteConfig()
{
    m_timeIter = m_time.begin();
char file[150];
memset( file, 0, 150);
strcat( file, m_myPath);
    strcat( file, "\\config.czw");
ifstream in(file);
ofstream out(file,ios::trunc);
for( vector<Time>::iterator iter = m_timeIter; iter != m_time.end() ; iter ++)
{
out<< iter->hour << " " << iter->minute << " " << iter->message << " "
<< iter->musicPath << " " << iter->isCloseCptr <<endl;
}
out.close();
}

void CMFC_TimerDlg::ReadConfig()
{
char file[150];
memset( file, 0, 150);
strcat( file, m_myPath);
    strcat( file, "\\config.czw");
ifstream in(file);

Time t;
m_timeIter = NULL;
while( !in.eof() )
{
memset( &t, 0, sizeof( Time ) );
in>> t.hour >> t.minute >> t.message >> t.musicPath >> t.isCloseCptr ;
if( strcmp( t.message, "\0" ) == 0)
{
break;
}
m_time.push_back( t );
}
    
m_timeIter = m_time.begin();
in.close();
}



1楼2008-04-05 21:19回复
    void CMFC_TimerDlg::MoveList()
    {
    ((CListBox*)GetDlgItem(IDC_LIST1))->ResetContent();
    m_timeIter = m_time.begin();
    int i =0; 
    CString str;
     for( vector<Time>::iterator iter = m_timeIter; iter != m_time.end() ; iter ++)
    {
    i++;
    str.Format( "%d-> 时间:%d:%d, 提示:%s ", i, iter->hour, iter->minute, iter->message );
    ((CListBox*)GetDlgItem(IDC_LIST1))->AddString( str );
    UpdateData( false );
    }
    }

    void CMFC_TimerDlg::OnButton2() 
    {
    // TODO: Add your control notification handler code here
    int pos =-1;
    pos = m_list.GetCurSel();
    if( pos >= 0)
    {
    if( MessageBox( "真的要删除这个设置吗?", "消息提示", MB_YESNO ) == IDYES )
    {
    vector<Time>::iterator t = &m_time[pos];
    m_time.erase( t );
    m_timeIter = m_time.begin();
    WriteConfig();
    m_time.clear();
    ReadConfig();
    m_timeIter = m_time.begin();
    MoveList();
    }
    }
    }

    void CMFC_TimerDlg::OnButton3() 
    {
    // TODO: Add your control notification handler code here
    CFileDialog fileDlg(TRUE,_T("mp3"),_T("*.mp3"),OFN_HIDEREADONLY||OFN_OVERWRITEPROMPT,"MP3文件(*.mp3)|*.mp3|");
    fileDlg.DoModal();
    CString fileName=fileDlg.GetPathName();
    for( int i=0; i<fileName.GetLength(); i++)
    {
    if( fileName[i] == ' ' )
    {
    MessageBox( "音乐路径非法,请重新选择(不能包含空格键)." );
    m_musicPath = "";
    return ;
    }
    }
    // ((CEdit*)GetDlgItem(IDC_EDIT5))->SetWindowText(m_fileName);
    m_musicPath = fileName;
    UpdateData(false);
    }

    void CMFC_TimerDlg::OnOK() 
    {
    // TODO: Add extra validation here
    }

    void CMFC_TimerDlg::OnClose() 
    {
    // TODO: Add your message handler code here and/or call default
    if( MessageBox( "真的要退出程序吗?", "退出提示", MB_YESNO ) ==IDYES )
    {
    Shell_NotifyIcon(NIM_DELETE,&nid);//在托盘区添加图标
    CDialog::OnClose();
    }
    }


    2楼2008-04-05 21:19
    回复
      void CMFC_TimerDlg::WriteReg()

      unsigned char ch[100];
      char ch1[300]; //要写入的内容
      GetModuleFileName(NULL,ch1,100);
      HKEY hkey=HKEY_LOCAL_MACHINE; 
      strcpy((char*)ch,ch1);

      if(RegOpenKeyEx(hkey,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", //要写人的键值
      NULL,KEY_ALL_ACCESS,&hkey)==ERROR_SUCCESS)
      {
      RegSetValueEx
      (hkey,
      "CMM",
      NULL,
      REG_SZ,
      ch,
      100
      );
      }

      }

      void CMFC_TimerDlg::OnMenu1() 
      {
      // TODO: Add your command handler code here
      WriteReg();
      }

      void CMFC_TimerDlg::OnButton4() 
      {
      // TODO: Add your control notification handler code here
       if( m_formType == 1 )
      {
      SetWindowPos( &wndTopMost, 0, 0, 300, 400, SWP_NOMOVE | SWP_SHOWWINDOW );
      m_formType = 0;
      ((CButton*)GetDlgItem( IDC_BUTTON4 ))->SetWindowText("隐藏任务");
      }
      else
      {
      SetWindowPos( &wndTopMost, 0, 0, 300, 250, SWP_NOMOVE | SWP_SHOWWINDOW );
      m_formType = 1;
      ((CButton*)GetDlgItem( IDC_BUTTON4 ))->SetWindowText("显示任务");
      }
      }

      void CMFC_TimerDlg::OnDblclkList1() 
      {
      // TODO: Add your control notification handler code here
      int pos =-1;
      pos = m_list.GetCurSel();
      if( pos >= 0)
      {
      vector<Time>::iterator t = &m_time[pos];
      CString msg;
      char str[4];
      memset( str, 0, sizeof( str ) );
      if( t->isCloseCptr != 0)
      {
      strcpy( str, "是");
      }
      else
      {
      strcpy( str, "否");
      }
      msg.Format( "时间 :%d:%d\n消息提示:%s\n音乐路径:%s\n是否关机:%s", 
      t->hour, t->minute, t->message, t->musicPath, str );
      MessageBox( msg );
      }
      }


      3楼2008-04-05 21:20
      回复