⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 supernotepaddlg.cpp

📁 非比寻常的超级记事本 1.日历控件的使用 2.托盘技术 3.开机后应用程序自动启动 4.非模态对话框的创建和关闭 5.Singleton类的使用 6.文件的读写 7.弹出式菜单的创建
💻 CPP
📖 第 1 页 / 共 2 页
字号:
			DoClickEvent();  // 执行单击事件
			break;

		case FLAG_TWO:
			KillTimer( FLAG_TWO );
            KillTimer( FLAG_ONE );
            
			DoDbClickEvent();   // 执行双击事件             
			break;

		case FLAG_THREE:
			if (bIsJustDateTime)
			{
				KillTimer( FLAG_THREE );
				ShowTipInfo(); // 显示提示信息
			}			        			                
			break;
				
		default:
			break;
		}		
	}
	catch ( ... ) 
	{
		KillTimer( nIDEvent );
	}

	CDialog::OnTimer( nIDEvent );
}

// 单击日历控件,设置定时器1
void CSuperNotepadDlg::OnDateClickMonthview(DATE DateClicked) 
{	
    UINT uTimeID = this->SetTimer( FLAG_ONE, 200, NULL ); 
}

// 双击日历控件,设置定时器2
void CSuperNotepadDlg::OnDateDblClickMonthview(DATE DateDblClicked) 
{	
    UINT uTimeID = this->SetTimer( FLAG_TWO, 100, NULL );    
}

// 单击事件
void CSuperNotepadDlg::DoClickEvent()
{
    m_nYear = m_ctrMonthView.GetYear();  // 取得年
	m_nMonth = m_ctrMonthView.GetMonth();  // 取得月
	m_nDay = m_ctrMonthView.GetDay();  // 取得日

	m_csTimeData.Format( _T("%d年%d月%d日"), m_nYear, m_nMonth, m_nDay );
    m_csEventEdit = m_csTimeData; 
    CString csFilePath = _T("");
    csFilePath = SAVE_FILE_FOLDER;
    csFilePath += _T("\\");
    csFilePath += m_csTimeData;    
    csFilePath += _T(".sav");  
	
	GetDlgItem( IDC_EDIT_EVENT )->EnableWindow( TRUE );
	GetDlgItem( IDC_EDIT_EVENT )->SetFocus();
	BOOL bSetReadOnlyEdit = m_ctrlEditEvent.SetReadOnly( TRUE );  
    
	// 打开文件
	if ( myFileSave.Open(csFilePath, CFile::modeRead|CFile::typeText, NULL) )
	{
		m_csBufferTime = ReadFromSaveFile();  // 读文件
		m_csEventEdit = m_csBufferTime;
        UpdateData(FALSE);            

		GetDlgItem( IDC_STATIC_HIP_CONTENTS)->SetWindowText( _T("") );
		GetDlgItem( IDC_STATIC_HIP_CONTENTS)->SetWindowText( _T("^_^ 你选定的这一天有纪录噢!") );
		GetDlgItem( IDC_BUTTON_EDIT)->EnableWindow( TRUE );
	}
	else  // 没有被保存的事件
    {    
        m_csEventEdit = _T("");
        UpdateData( FALSE );
            
		GetDlgItem( IDC_STATIC_HIP_CONTENTS)->SetWindowText( _T("") );
		GetDlgItem( IDC_STATIC_HIP_CONTENTS)->SetWindowText( _T("^_^ 你选定的这一天没有纪录!") );
			
        return;
    } 
}

// 双击事件
void CSuperNotepadDlg::DoDbClickEvent()
{
    GetDlgItem( IDC_EDIT_EVENT )->EnableWindow( TRUE );
    GetDlgItem( IDC_EDIT_EVENT )->SetFocus();
    m_btnSave.EnableWindow( TRUE );
	m_btnGiveUp.EnableWindow( TRUE );

    if ( !m_csEventEdit.IsEmpty() )  // 存在事件
    {
        m_csEventEdit = _T("");
        UpdateData( FALSE );
    }
	
	GetDlgItem( IDC_STATIC_HIP_CONTENTS)->SetWindowText( _T("") );
	GetDlgItem( IDC_STATIC_HIP_CONTENTS)->SetWindowText( _T("^_^ 开始记录新的内容啦!") );
	BOOL bSetReadOnlyEdit = m_ctrlEditEvent.SetReadOnly( FALSE );

    m_nYear = m_ctrMonthView.GetYear(); // 取得年
	m_nMonth = m_ctrMonthView.GetMonth();  // 取得月
	m_nDay = m_ctrMonthView.GetDay();  // 取得日
    m_csCurrentTime.Format( _T("%d年%d月%d日"), m_nYear, m_nMonth, m_nDay );
}

// 保存信息
void CSuperNotepadDlg::OnButtonSave() 
{    
    CFileFind finder;
	BOOL bFinded = finder.FindFile( SAVE_FILE_FOLDER ); // 查找保存文件夹
    if ( !bFinded )
    {
        BOOL bSuccCreate = CreateDirectory( SAVE_FILE_FOLDER, NULL ) ;
        if ( !bSuccCreate ) // 创建保存文件夹失败
        {
			GetDlgItem(IDC_STATIC_HIP_CONTENTS)->SetWindowText( _T("") );
			GetDlgItem(IDC_STATIC_HIP_CONTENTS)->SetWindowText( _T("^_^ 创建文件夹失败!") );

        }
    }

    UpdateData( TRUE );

    if ( m_csEventEdit.IsEmpty() )  // 事件编辑框为空
    {
		GetDlgItem(IDC_STATIC_HIP_CONTENTS)->SetWindowText( _T("") );
		GetDlgItem(IDC_STATIC_HIP_CONTENTS)->SetWindowText( _T("^_^ 你没有写内容,保存没有意义!") );
        GetDlgItem( IDC_EDIT_EVENT )->SetFocus();
        return;
    }

	if ( m_bIsEdit )  // 需要编辑
	{
		m_nYear = m_ctrMonthView.GetYear();
		m_nMonth = m_ctrMonthView.GetMonth();
		m_nDay = m_ctrMonthView.GetDay();
		m_csTimeData.Format( _T("%d年%d月%d日"), m_nYear, m_nMonth, m_nDay );
		
		CString csFilePath = _T("");
		csFilePath = SAVE_FILE_FOLDER;
		csFilePath += _T("\\");
		csFilePath += m_csTimeData;    
		csFilePath += _T(".sav"); 
		
		// 打开文件
		if( !myFileSave.Open( csFilePath, CFile::modeCreate|CFile::modeWrite|
			CFile::typeText|CFile::modeNoTruncate,NULL) )
		{
			GetDlgItem(IDC_STATIC_HIP_CONTENTS)->SetWindowText( _T("") );
			GetDlgItem(IDC_STATIC_HIP_CONTENTS)->SetWindowText( _T("^_^ 打开文件失败!") );

			return;
		}

		myFileSave.SetLength( 0 );  // 清空原来的文件内容
	}
	else  // 用户新输入的事件
	{
		CString csFilePath = _T("");
		csFilePath = SAVE_FILE_FOLDER;
		csFilePath += _T("\\");
		csFilePath += m_csCurrentTime;
		csFilePath += _T(".sav");
		
		// 打开文件
		if( !myFileSave.Open( csFilePath, CFile::modeCreate|CFile::modeWrite|
			CFile::typeText|CFile::modeNoTruncate,NULL) )
		{
			GetDlgItem(IDC_STATIC_HIP_CONTENTS)->SetWindowText( _T("") );
			GetDlgItem(IDC_STATIC_HIP_CONTENTS)->SetWindowText( _T("^_^ 打开文件失败!") );

			return;
		}

		myFileSave.SeekToEnd(); // 文件句柄移动到文件最后
	}
    
    m_csEventEdit = m_csEventEdit + _T("\r\n");   
    myFileSave.WriteString( m_csEventEdit );  // 写文件   
    myFileSave.Close();   // 关闭文件    

	m_btnSave.EnableWindow(FALSE);
	m_btnGiveUp.EnableWindow(FALSE);
	m_bSave = true;  
	
	GetDlgItem(IDC_STATIC_HIP_CONTENTS)->SetWindowText( _T("") );
	GetDlgItem(IDC_STATIC_HIP_CONTENTS)->SetWindowText( _T("^_^ 保存成功!") );

	GetDlgItem( IDC_BUTTON_EDIT)->EnableWindow( TRUE );
	m_bIsEdit = false;
}

// 不保存信息
void CSuperNotepadDlg::OnButtonGiveup() 
{
	GetDlgItem(IDC_STATIC_HIP_CONTENTS)->SetWindowText( _T("") );
	GetDlgItem(IDC_STATIC_HIP_CONTENTS)->SetWindowText( _T("^_^ 你没有保存内容!") );
}

// 清空编辑框中的信息
void CSuperNotepadDlg::OnButtonClearEvent() 
{
    UpdateData();

    if ( !m_csEventEdit.IsEmpty() )  // 编辑框不为空
    {        
        m_csEventEdit = _T("");
        UpdateData( FALSE );

        GetDlgItem( IDC_EDIT_EVENT )->SetFocus();
		GetDlgItem(IDC_STATIC_HIP_CONTENTS)->SetWindowText( _T("") );
		GetDlgItem(IDC_STATIC_HIP_CONTENTS)->SetWindowText( _T("^_^ 你已经将文本框里的内容清空了!") );
    }
    else  // 编辑框为空
    {
		GetDlgItem(IDC_STATIC_HIP_CONTENTS)->SetWindowText( _T("") );
		GetDlgItem(IDC_STATIC_HIP_CONTENTS)->SetWindowText( _T("^_^ 没有内容,点击清除没有意义!") );
		
    }
}

// 用户使用说明
void CSuperNotepadDlg::OnMenuitemHelpExplain() 
{
	CUseExplain UseWindow;
    UseWindow.DoModal();
}

// 介绍开发人员
void CSuperNotepadDlg::OnMenuitemHelpAboutDeveloper() 
{
	CAboutSuperNotepad AboutDlg;
    AboutDlg.DoModal();	
}

// 编辑信息
void CSuperNotepadDlg::OnButtonEdit() 
{
	UpdateData( TRUE );
	if ( m_csEventEdit.IsEmpty() )  // 事件编辑框为空
	{
		GetDlgItem(IDC_STATIC_HIP_CONTENTS)->SetWindowText( _T("") );
		GetDlgItem(IDC_STATIC_HIP_CONTENTS)->SetWindowText( _T("^_^ 没有内容,点击编辑没有意义!") );
		return;
	}

	m_bIsEdit = true;
	
	GetDlgItem(IDC_STATIC_HIP_CONTENTS)->SetWindowText( _T("") );
	GetDlgItem(IDC_STATIC_HIP_CONTENTS)->SetWindowText( _T("^_^ 开始编辑内容啦!") );

	BOOL bSetReadOnlyEdit = m_ctrlEditEvent.SetReadOnly( FALSE );
	GetDlgItem( IDC_EDIT_EVENT )->SetFocus();
	
	// 改变其他按钮的状态,变为可用
	m_btnSave.EnableWindow( TRUE );
	m_btnGiveUp.EnableWindow( TRUE );
    m_btnClear.EnableWindow( TRUE );	
}

// 随着文本框中文字的变化,改变保存和放弃按钮的状态
void CSuperNotepadDlg::OnChangeEditEvent() 
{
    m_btnSave.EnableWindow( TRUE );
	m_btnGiveUp.EnableWindow( TRUE );		
}

// 取得一周的天数
CString CSuperNotepadDlg::GetDayInOneWeek(int nDayofWeek)
{
    CString csWeekDay = _T("");

    switch ( nDayofWeek )
    {
    case 1:
        csWeekDay = _T("星期天");
        break;
    case 2:
        csWeekDay = _T("星期一");
        break;
    case 3:
        csWeekDay = _T("星期二");
        break;
    case 4:
        csWeekDay = _T("星期三");
        break;
    case 5:
        csWeekDay = _T("星期四");
        break;
    case 6:
        csWeekDay = _T("星期五");
        break;
    case 7:
        csWeekDay = _T("星期六");
        break;
    default:
        break;

    }    

    return csWeekDay;
}

// 显示定时提醒
void CSuperNotepadDlg::OnButtonRegularTip() 
{
	// TODO: Add your control notification handler code here
	// 设置定时器
	SetTimer( FLAG_THREE, 1000, NULL );

	GetDlgItem(IDC_STATIC_HIP_CONTENTS)->SetWindowText( _T("") );
	GetDlgItem(IDC_STATIC_HIP_CONTENTS)->SetWindowText( _T("^_^ 你打算让系统定时提醒你啦!") );

	// 显示定时提醒对话框
	CRegularTipDlg RegularTipDlg;
	RegularTipDlg.DoModal();
}

// 显示提示信息
void CSuperNotepadDlg::ShowTipInfo()
{
	CTipInfoDlg TipInfoDlg;
	TipInfoDlg.DoModal();
}

// 时间比较函数, 判断时间是否已到
BOOL CSuperNotepadDlg::CompareDateTime()
{
	CTime CurrentTime = CTime::GetCurrentTime(); // 取得当前时间
	CString csTime = CurrentTime.Format("%H:%M:%S");
	CString csDate = _T("");
	csDate.Format(_T("%d-%d-%d"), 
		          CurrentTime.GetYear(), 
				  CurrentTime.GetMonth(), 
		          CurrentTime.GetDay());
	
	CString csTempDate = _T("");
	CString csTempTime = _T("");
	CMySingletonClass *pMyInstance = CMySingletonClass::GetInstance();
	csTempDate = pMyInstance->m_csTipDate;
	if (csTempDate.CompareNoCase(csDate) == 0) // 比较日期
	{
		csTempTime = pMyInstance->m_csTipTime;
		if (csTempTime.CompareNoCase(csTime) == 0) // 比较时间
		{
			return TRUE;
		}
	}

	return FALSE;
}

// 菜单中的退出
void CSuperNotepadDlg::OnMenuSystemQuit() 
{
	DestroyWindow();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -