📄 myeditor.cpp
字号:
fChange=FALSE;
}
e.FontInitialize(hWndEdit); //字体初始
break;
case IDC_EDIT: //编辑框修改状态
/*if (HIWORD(lParam)==EN_CHANGE)*/fChange=TRUE;
break;
case IDM_OPEN: // 处理打开文件菜单
if(fChange==TRUE) //判断文件是否被修改
{
//如果被修改了,发送是否保存当前文件消息并处理
switch(MessageBox(hWnd,TEXT ("是否保存当前文件?"),"警告",MB_YESNOCANCEL))
{
case IDYES: //保存并打开文件
if (ofn.lpstrFileTitle == NULL)
{
e.FileInitialize(&ofn);
e.FileSaveDlg(&ofn ,szFileName ,szTitleName);
}
e.FileWrite(ofn.lpstrFile);
e.FileInitialize(&ofn);
if (e.FileOpenDlg(&ofn, szFileName , szTitleName))
{
e.FileRead ( ofn.lpstrFile);
SetWindowText(hWnd,ofn.lpstrFileTitle);
fChange=FALSE;
}
break;
case IDNO: //不保存,打开文件
e.FileInitialize(&ofn);
if (e.FileOpenDlg(&ofn, szFileName , szTitleName))
{
e.FileRead ( ofn.lpstrFile);
SetWindowText(hWnd,ofn.lpstrFileTitle);
fChange=FALSE;
}
break;
case IDCANCEL: //取消操作
fChange=TRUE;
break;
}
}
else //打开文件
{
e.FileInitialize(&ofn);
if (e.FileOpenDlg(&ofn, szFileName , szTitleName))
{
e.FileRead ( ofn.lpstrFile);
SetWindowText(hWnd,ofn.lpstrFileTitle);
fChange=FALSE;
}
}
e.FontInitialize(hWndEdit); //字体初始
break;
case IDM_SAVE: // 处理保存菜单
e.FileWrite(ofn.lpstrFile);
fChange=FALSE;
break;
case IDM_SAVEAS: // 处理另存为菜单
e.FileInitialize(&ofn);
e.FileSaveDlg(&ofn ,szFileName ,szTitleName);
e.FileWrite(ofn.lpstrFile);
SetWindowText(hWnd,ofn.lpstrFileTitle);
fChange=FALSE;
break;
case IDM_UNDO: // 处理撤消菜单
// 当有可撤消的操作时发送WM_UNDO消息
if (SendMessage(hWndEdit, EM_CANUNDO, 0, 0))
SendMessage(hWndEdit, WM_UNDO, 0, 0);
else
{
MessageBox(hWndEdit,
"没有可撤消的操作",
"撤消 消息", MB_OK);
}
break;
case IDM_DEL: // 处理删除菜单
SendMessage (hWndEdit, WM_CLEAR, 0, 0);
break;
case IDM_COPY: // 处理拷贝菜单
SendMessage (hWndEdit, WM_COPY, 0, 0) ;
break;
case IDM_CUT: // 处理剪切菜单
SendMessage (hWndEdit, WM_CUT, 0, 0) ;
break;
case IDM_PASTE: // 处理粘贴菜单
SendMessage (hWndEdit, WM_PASTE, 0, 0) ;
break;
case IDM_SETALL: // 处理全选菜单
SendMessage (hWndEdit, EM_SETSEL, 0, -1) ;
break;
case IDM_FIND: // 处理查找菜单
SendMessage (hWndEdit, EM_GETSEL, 0, (LPARAM) &iOffset) ;
hDlgModeless = e.FindFindDlg(&fr);
break;
case IDM_FINDNEXT: // 处理查找下一个菜单
SendMessage (hWndEdit, EM_GETSEL, 0, (LPARAM) &iOffset) ;
if(e.FindValidFind()) //判断是否有需查找的字符串
e.FindNextText(&iOffset,&fr);
else
hDlgModeless = e.FindFindDlg(&fr);
break;
case IDM_REPLACE: // 处理替换菜单
SendMessage (hWndEdit, EM_GETSEL, 0, (LPARAM) &iOffset) ;
//if (e.FindValidFind ())
hDlgModeless = e.FindReplaceDlg(&fr);
break;
case IDM_FONT: // 处理字体菜单
e.SetFont(&cf,hSetFont,&fChange);
fChange=TRUE;
break;
case IDM_EXIT: // 处理退出菜单
if(fChange==TRUE) //提示是否保存
{
switch(MessageBox(hWnd,TEXT ("是否保存当前文件?"),"警告",MB_YESNOCANCEL))
{
case IDYES:
if (ofn.lpstrFileTitle == NULL)
{
e.FileInitialize(&ofn);
e.FileSaveDlg(&ofn ,szFileName ,szTitleName);
}
e.FileWrite(ofn.lpstrFile);
DestroyWindow(hWnd);
break;
case IDNO:
DestroyWindow(hWnd);
break;
case IDCANCEL:
fChange=TRUE;
break;
}
}
else
DestroyWindow(hWnd);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
break;
case WM_SIZE: //rejust its size
MoveWindow(hWndEdit,0,0,LOWORD(lParam),HIWORD(lParam),true); // 调整滚动条位置
break;
case WM_SETFOCUS: // 光标初始
SetFocus(hWndEdit);
fChange=FALSE;
break;
case WM_CLOSE: //窗口关闭处理
// 创建消息窗口,确认是否退出
// 选“YES”的就关闭窗口
if (MessageBox(hWnd, "是否退出?", "确认", MB_YESNO) == IDYES)
DestroyWindow(hWnd);
return 0;
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default: // 处理"查找-替换"消息
if (message == messageFindReplace)
{
pfr = (LPFINDREPLACEA) lParam ;
if (pfr->Flags & FR_DIALOGTERM)
hDlgModeless = NULL ;
if (pfr->Flags & FR_FINDNEXT)
if (!e.FindFindText ( &iOffset, pfr))
MessageBox (hWnd, TEXT ("字符串未找到!"), TEXT (""),MB_OK) ;
if (pfr->Flags & FR_REPLACE || pfr->Flags & FR_REPLACEALL)
if (!e.FindReplaceText ( &iOffset, pfr))
MessageBox (hWnd, TEXT ("字符串未找到!"), TEXT (""),MB_OK) ;
if (pfr->Flags & FR_REPLACEALL)
while (e.FindReplaceText ( &iOffset, pfr)) ;
return 0 ;
}
return DefWindowProc(hWnd, message, wParam, lParam);
break;
}
return 0;
}
// Mesage handler for about box.
LRESULT CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) //关于信息框的处理
{
static SYSTEMTIME time;
static TCHAR szMsg[20] ;
switch (message)
{
case WM_INITDIALOG:
//获得并在ABOUT窗口显示系统日期
GetLocalTime(&time) ;
wsprintf(szMsg, TEXT("你好,今天是%u年%02u月%02u日。"), time.wYear, time.wMonth, time.wDay) ;
SetWindowText(GetDlgItem(hDlg,IDC_STATIC1),szMsg);
return TRUE;
case WM_COMMAND:
if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
{
EndDialog(hDlg, LOWORD(wParam));
return TRUE;
}
break;
}
return FALSE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -