📄 notepaddlg.cpp
字号:
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 + -