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

📄 notepaddlg.cpp

📁 在EVC下的记事本程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		g_DownRowflag --;
	if (g_DownRowflag == 0)
	{	
		g_UpPageflag = false;
		ptext = 0;
		InvalidateRect(&g_notebtn[NOTE_UPPAGE].rectbtn, true);
	}
	if (g_DownRowflag > 0)
		for (int i = ptext; i < g_DownRowflag*20; i ++)
		{
			if (0x0d == m_Text[i] && 0x0a == m_Text[i+1])
			{	
				ptext = i+2;
				break;
			}	
		}
}

void CNotepadDlg::OnBtnDownPage()
{
	if (g_DownRowflag < (g_Row - 9) && g_Row > 9)
		g_DownRowflag ++;
	if (g_DownRowflag > 0)
	{	
		g_UpPageflag = true;
		g_notebtn[NOTE_UPPAGE].status = DOWN;
		for (int i = ptext; i < g_DownRowflag*20; i ++)
		{
			if (0x0d == m_Text[i] && 0x0a == m_Text[i+1])
			{
				ptext = i+2;
				break;
			}	
		}
		InvalidateRect(&g_notebtn[NOTE_UPPAGE].rectbtn, true);
	}	
	


}

void CNotepadDlg::OnNotepadBtnText()
{
	if(pInputDlg)
	{
		pInputDlg->ShowWindow(SW_SHOW);
//		pInputDlg->SetActiveWindow(); //激活对话框
	}
	else		
	{		
		//创建非模态对话框	
		pInputDlg = new CInputMethddlg;
		pInputDlg->Create(IDD_INPUTMETHOD, this);
		pInputDlg->ShowWindow(SW_SHOW);
		g_Notetextlen = wcslen(m_Text);	
		if (g_Notetextlen > 0)
			pInputDlg->m_TextResult = m_Text;
	}

}

void CNotepadDlg::OnNotepadBtnNew()
{
	FILE * pFile = _wfopen(_T("\\ResidentFlash\\default.txt"),_T("wb"));
	memset(m_Text, 0, 5000);
	if (pInputDlg != NULL)
		pInputDlg->m_TextResult = m_Text;
	g_Notetextlen = 0;

	fclose(pFile);
}

void CNotepadDlg::OnNotepadBtnOpen()
{	
	if (0 < wcslen(NoteFileName))
	{
		memset(m_Text, 0, 5000);
		CString str;
		str.Format(_T("%s%s%s"),_T("\\ResidentFlash\\"), NoteFileName, _T(".txt"));
		FILE * pFile = _wfopen(str, _T("ab+"));
		int filelen = fread(m_Text,1,5000,pFile);
		if (pInputDlg != NULL)
			pInputDlg->m_TextResult = m_Text;
		g_Notetextlen = wcslen(m_Text);
		int j = 1;
		for (int i = 0; i < g_Notetextlen; i ++)
		{
			if (m_Text[i] == 0x0d && m_Text[i+1] == 0x0a)
				j++;
		}
		g_Row = j;

		ptext = 0;
		fclose(pFile);
		InvalidateRect(&g_notebtn[NOTE_TEXT].rectbtn, TRUE);
	}	

}

void CNotepadDlg::OnNotepadBtnSave()
{
	if (0 < wcslen(m_Text))
	{
		CString str = m_Text;
		int len = str.GetLength();
		if (len < 6)
			for (int i = len; i < 6; i ++)
				str += '.';
		str = str.Left(6);
		str += '\0';
			
		TCHAR FileName[8] = {0};
		wcscpy(FileName, str);
		FileName[6] = '\r';
		FileName[7] = '\n';
		FileName[8] = '\0';
		
		g_TitleCount ++;
		if (g_TitleCount > 0)
		{
			FILE * pFile = _wfopen(_T("\\ResidentFlash\\FileName.txt"),_T("ab+"));
			if (pFile == NULL)
			{
				MessageBox(_T("Fail"), _T("Write file Fail"));
				return;
			}	
			else 
			{	
				TCHAR TitleName[5000] = {0};
				int len = fread(TitleName, 1, 5000, pFile);
				TitleName[len] = 0;
				unsigned short * pos = wcsstr(TitleName, FileName);	//是否有同名文件
				if (pos == NULL)
				{	
					fwrite(FileName,1,16,pFile);
					fclose(pFile);
				}
				else
					g_TitleCount --;
				
			}	
			
			if (1 == g_TitleCount)
				wcscpy(m_Titleone, str);
			else if (2 == g_TitleCount)
				wcscpy(m_Titletwo, str);
			else if (3 == g_TitleCount)
				wcscpy(m_Titlethree, str);
			
			str.Format(_T("%s%s%s"), _T("\\ResidentFlash\\"), str, _T(".txt"));
			FILE * pf = _wfopen(str,_T("wb"));	
			str.Empty();
			int len = wcslen(m_Text);
			fwrite(m_Text,1,len*2,pf);
			fclose(pf);
			
			HKEY hkey;
			DWORD dwState = g_TitleCount;
			if (ERROR_SUCCESS == RegOpenKeyEx(HKEY_CURRENT_USER, _T("ControlPanel\\NotePad"), 0, 0, &hkey))
			{		
				RegSetValueEx(hkey, _T("TitleCount"), 0, REG_DWORD, (BYTE *)&dwState, sizeof(dwState));	
				RegCloseKey(hkey);
			}
		}	

	}		
}

void CNotepadDlg::OnNotepadBtnDel()
{
	if (0 < wcslen(NoteFileName))
	{
		FILE * pFile = _wfopen(_T("\\ResidentFlash\\FileName.txt"),_T("rb"));
		if (pFile == NULL)
		{
			MessageBox(_T("Fail"), _T("Write file Fail"));
			return;
		}	
		else 
		{	
			TCHAR TitleName[5000] = {0};
			int len = fread(TitleName, 1, 5000, pFile);
			fclose(pFile);
			TitleName[len] = 0;
			NoteFileName[6] = '\r';
			NoteFileName[7] = '\n';
			NoteFileName[8] = '\0';
			unsigned short * pos = wcsstr(TitleName, NoteFileName);
			if (pos != NULL)
			{
				g_TitleCount --;
				int result = pos - TitleName;	//
				len = wcslen(TitleName);
				for (; result < len - 8; result ++)	
					TitleName[result] = TitleName[result + 8];
				TitleName[result] = 0;
				len = wcslen(TitleName);
				pFile = _wfopen(_T("\\ResidentFlash\\FileName.txt"),_T("wb"));
				if (NULL == pFile)
					return;
				else
				{
					fwrite(TitleName,1,len*2,pFile);
					fclose(pFile);
				}

				if (g_TitleCount >= 0)
				{
					pFile = _wfopen(_T("\\ResidentFlash\\FileName.txt"),_T("rb"));
					TCHAR TitleName[5000] = {0};
					if (g_TitleCount == 0)
					{
						memset(m_Titlethree, 0, sizeof(m_Titleone));
						memset(m_Titletwo, 0, sizeof(m_Titletwo));
						memset(m_Titlethree, 0, sizeof(m_Titlethree));
					}	
					if (g_TitleCount == 1)
					{
						int len = fread(TitleName, 1, 16, pFile);
						TitleName[len] = 0;
						CString str = TitleName;
						wcscpy(m_Titleone, str.Left(6));
						memset(m_Titletwo, 0, sizeof(m_Titletwo));
						memset(m_Titlethree, 0, sizeof(m_Titlethree));
					}	
					else if (g_TitleCount == 2)
					{	
						int len = fread(TitleName, 1, 2*16, pFile);
						TitleName[len] = 0;
						CString str = TitleName;
						wcscpy(m_Titleone, str.Left(6));
						str = str.Right(8);
						wcscpy(m_Titletwo, str.Left(6));
						memset(m_Titlethree, 0, sizeof(m_Titlethree));
					}	
					else if (g_TitleCount == 3)
					{
						int len = fread(TitleName, 1, 3*16, pFile);
						TitleName[len] = 0;
						CString str = TitleName;
						wcscpy(m_Titleone, str.Left(6));
						str = str.Right(16);
						wcscpy(m_Titletwo, str.Left(6));
						str = str.Right(8);
						wcscpy(m_Titlethree, str.Left(6));
						if (g_downtitleflag > 0)
							g_downtitleflag --;
					}
					else
					{
						int len = fread(TitleName, 1, 5000, pFile);
						TitleName[len] = 0;
						CString str = TitleName;	
						unsigned short * pos2 = NULL;
						if ((pos2 = wcsstr(NoteFileName, m_Titleone)) != NULL)
						{
							wcscpy(m_Titleone, m_Titletwo);
							wcscpy(m_Titletwo, m_Titlethree);
							if (g_TitleCount - g_downtitleflag <= 2 && g_downtitleflag > 0)
								memset(m_Titlethree, 0, sizeof(m_Titlethree));
							else
							{
								str = str.Left(g_downtitleflag*8 + 24);
								str = str.Right(8);
								wcscpy(m_Titlethree, str.Left(6));
							}
						}
						else if ((pos2 = wcsstr(NoteFileName, m_Titletwo)) != NULL)
						{
							wcscpy(m_Titletwo, m_Titlethree);
							if (g_TitleCount - g_downtitleflag <= 2 && g_downtitleflag > 0)
								memset(m_Titlethree, 0, sizeof(m_Titlethree));
							else
							{
								str = str.Left(g_downtitleflag*8 + 24);
								str = str.Right(8);
								wcscpy(m_Titlethree, str.Left(6));
							}
						}
						else if ((pos2 = wcsstr(NoteFileName, m_Titlethree)) != NULL)
						{
							if (g_TitleCount - g_downtitleflag <= 2 && g_downtitleflag > 0)
								memset(m_Titlethree, 0, sizeof(m_Titlethree));
							else
							{
								str = str.Left(g_downtitleflag*8 + 24);
								str = str.Right(8);
								wcscpy(m_Titlethree, str.Left(6));
							}
						}
						if (g_downtitleflag > 0)
							g_downtitleflag --;
					}

					fclose(pFile);
					memset(m_Text, 0, sizeof(m_Text));
					InvalidateRect(&g_notebtn[NOTE_TITLEONE].rectbtn, TRUE);
					InvalidateRect(&g_notebtn[NOTE_TEXT].rectbtn, TRUE);
				}

			}		
		}
		HKEY hkey;
		DWORD dwState = g_TitleCount;
		if (ERROR_SUCCESS == RegOpenKeyEx(HKEY_CURRENT_USER, _T("ControlPanel\\NotePad"), 0, 0, &hkey))
		{		
			RegSetValueEx(hkey, _T("TitleCount"), 0, REG_DWORD, (BYTE *)&dwState, sizeof(dwState));	
			RegCloseKey(hkey);
		}
	}	
}

void CNotepadDlg::DrawTextToBackforTZ(CDC *pDC, int charHigh, int charWidth, int left, int top, int right, int bottom, COLORREF crColor, UINT format, unsigned short *text, unsigned short *type)
{
	CFont font;
	CRect rcClient;
	font.CreateFont(charHigh,charWidth,0,0,
		FW_SEMIBOLD,FALSE,FALSE,0,
		ANSI_CHARSET,OUT_DEFAULT_PRECIS,
		CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,
		DEFAULT_PITCH | FF_SWISS, type);	//FW_SEMIBOLD;600;FW_DEMIBOLD;600;粗体
	
	CFont* def_font = pDC->SelectObject(&font);
	
	rcClient.left = left;
	rcClient.top = top;
	rcClient.right = right;
	rcClient.bottom = bottom;
	pDC->SetTextColor(crColor);
	pDC->SetBkMode(TRANSPARENT);
	pDC->DrawText(text, &rcClient, format);
	pDC->SelectObject(def_font);
	font.DeleteObject();
}

BOOL CNotepadDlg::DestroyWindow() 
{
	// TODO: Add your specialized code here and/or call the base class
	bitmapback.DeleteObject();
	ExitbmpSel.DeleteObject();
	ExitbmpUnsel.DeleteObject();
	NoteTextbmp.DeleteObject();
	DownpagebmpSel.DeleteObject();
	DownpagebmpUnsel.DeleteObject();
	DownpagebmpDis.DeleteObject();
	UppagebmpSel.DeleteObject();
	UppagebmpUnsel.DeleteObject();
	UppagebmpDis.DeleteObject();
	TitleDownbmp.DeleteObject();
	TitleUpbmp.DeleteObject();
	TitleBarbmp.DeleteObject();
	NoteBtnSel.DeleteObject();
	NoteBtnUnsel.DeleteObject();
	delete pArray;
	delete m_Text;
// 	HWND temphwnd = ::FindWindow(_T("HHTaskBar"), NULL);
// 	if (temphwnd != NULL)
// 		::ShowWindow(temphwnd, SW_SHOW);

	return CDialog::DestroyWindow();
}

BOOL CNotepadDlg::PreTranslateMessage(MSG* pMsg) 
{
	// TODO: Add your specialized code here and/or call the base class
	if(pMsg->message == WM_INPUT_CHARACTER)
	{
		if(1 == pMsg->wParam)
		{	
			if (pInputDlg != NULL)
				if (g_Notetextlen < pInputDlg->m_TextResult.GetLength())
				{
					int len = pInputDlg->m_TextResult.GetLength();
					for (int i = g_Notetextlen; i < len; i ++)
					{	
						if ('\r' == pInputDlg->m_TextResult.GetAt(i) && '\n' == pInputDlg->m_TextResult.GetAt(i+1))
						{	
							g_templen = i + 2;
							g_Row ++;
							pArray = new int[g_Row];
							pArray[g_Row - 1] = g_templen;
							break;
						}	
						else if ((0 == (len-g_templen)%18) && g_templen >= 0)
						{
							pInputDlg->m_TextResult += '\r';
							pInputDlg->m_TextResult += '\n';
							g_templen = len+2;
							g_Row ++;
							pArray = new int[g_Row];
							pArray[g_Row - 1] = g_templen;
						}
// 						else
// 							break;	
					}

					wcscpy(m_Text, pInputDlg->m_TextResult);
					g_Notetextlen = wcslen(m_Text);
// 					int j = 1;
// 					for (int k = 0; k < g_Notetextlen; k ++)
// 					{	
// 						if (0x0d == m_Text[k] && 0x0a == m_Text[k+1])
// 						{	
// 							j ++;						
// 						}	
// 					}	
//					g_Row = j;
					InvalidateRect(&g_notebtn[NOTE_TEXT].rectbtn, TRUE);
				}		
		}
		if (2 == pMsg->wParam)
		{
			if (pInputDlg != NULL)
				if (g_Notetextlen > pInputDlg->m_TextResult.GetLength())
				{
					wcscpy(m_Text, pInputDlg->m_TextResult);
					g_Notetextlen = wcslen(m_Text);	
					InvalidateRect(&g_notebtn[NOTE_TEXT].rectbtn, TRUE);
				}
		}
	}

	if (pMsg->message == WM_MOUSEMOVE)
	{
		int nID = GetBtnIDFormPoint(pMsg->pt);
		for (int i = 0; i < NOTEPAD_END; i++)
		{
			if (i == nID)
			{
				g_notebtn[i].status = DOWN;
			}
			else
				g_notebtn[i].status = UP;

			if (i == NOTE_UPPAGE)
				if (!g_UpPageflag)
					g_notebtn[i].status = DISABLE;
			if (i == NOTE_DOWNPAGE)
				if (!g_DownPageflag)
					g_notebtn[i].status = DISABLE;
			InvalidateRect(&g_notebtn[i].rectbtn, TRUE);	
			
		}
 	}

	return CDialog::PreTranslateMessage(pMsg);
}


void CNotepadDlg::OnLButtonUp(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	int nID = GetBtnIDFormPoint(point);
	
	for (int i = 0; i < NOTEPAD_END; i ++)
	{
		if (i == nID)
		{
			g_notebtn[i].status = DOWN;
			switch(i)
			{
			case NOTE_TITLEUP:
				if (g_downtitleflag > 0)
					OnBtnTitleUp();
				break;
			case NOTE_TITLEDOWN:
				if (g_TitleCount > 3)
					OnBtnTitleDown();
				break;
			case NOTE_TITLEONE:
				OnBtnTitleOne();
				break;
			case NOTE_TITLETWO:
				OnBtnTitleTwo();
				break;
			case NOTE_TITLETHREE:
				OnBtnTitleThree();
				break;
			case NOTE_EXIT:
				{
					CDialog::OnOK();
				}	
				break;
			case NOTE_UPPAGE:
				if (g_UpPageflag)
					OnBtnUpPage();
				break;
			case NOTE_DOWNPAGE:
				if (g_DownPageflag)
					OnBtnDownPage();
				break;
			case NOTE_TEXT:
				OnNotepadBtnText();
			    break;
			case NOTE_SAVE:
				OnNotepadBtnSave();
				break;
			case NOTE_NEW:
				OnNotepadBtnNew();
				break;
//			case NOTE_OPEN:
//				OnNotepadBtnOpen();
//				break;
			case NOTE_DEL:
				OnNotepadBtnDel();
				break;	
			default:
			    break;
			}

		}
		else
			g_notebtn[i].status = UP;
		
		if (i == NOTE_UPPAGE)
			if (!g_UpPageflag)
				g_notebtn[i].status = DISABLE;
		if (i == NOTE_DOWNPAGE)
			if (!g_DownPageflag)
				g_notebtn[i].status = DISABLE;
		InvalidateRect(&g_notebtn[i].rectbtn, TRUE);
	}

	CDialog::OnLButtonUp(nFlags, point);
}

⌨️ 快捷键说明

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