📄 notepad2.c
字号:
break;
ZeroMemory(&sei,sizeof(SHELLEXECUTEINFO));
sei.cbSize = sizeof(SHELLEXECUTEINFO);
sei.fMask = SEE_MASK_NOCLOSEPROCESS;
sei.hwnd = hwnd;
sei.lpVerb = NULL;
sei.lpFile = szCurFile;
sei.lpParameters = NULL;
sei.lpDirectory = NULL;
sei.nShow = SW_SHOWNORMAL;
ShellExecuteEx(&sei);
}
break;
case IDM_FILE_RUN:
{
char tchCmdLine[MAX_PATH+4];
if (bSaveBeforeRunningTools && !FileSave(FALSE,TRUE,FALSE,FALSE))
break;
lstrcpy(tchCmdLine,szCurFile);
PathQuoteSpaces(tchCmdLine);
RunDlg(hwnd,tchCmdLine);
}
break;
case IDM_FILE_OPENWITH:
if (bSaveBeforeRunningTools && !FileSave(FALSE,TRUE,FALSE,FALSE))
break;
OpenWithDlg(hwnd,szCurFile);
break;
case IDM_FILE_PAGESETUP:
EditPrintSetup(hwndEdit);
break;
case IDM_FILE_PRINT:
{
SHFILEINFO shfi;
char *pszTitle;
char tchUntitled[32];
char tchPageFmt[32];
if (lstrlen(szCurFile)) {
SHGetFileInfo2(szCurFile,0,&shfi,sizeof(SHFILEINFO),SHGFI_DISPLAYNAME);
pszTitle = shfi.szDisplayName;
}
else {
GetString(IDS_UNTITLED,tchUntitled,COUNTOF(tchUntitled));
pszTitle = tchUntitled;
}
GetString(IDS_PRINT_PAGENUM,tchPageFmt,COUNTOF(tchPageFmt));
if (!EditPrint(hwndEdit,pszTitle,tchPageFmt))
MsgBox(MBWARN,IDS_PRINT_ERROR,pszTitle);
}
break;
case IDM_FILE_PROPERTIES:
{
SHELLEXECUTEINFO sei;
if (lstrlen(szCurFile) == 0)
break;
ZeroMemory(&sei,sizeof(SHELLEXECUTEINFO));
sei.cbSize = sizeof(SHELLEXECUTEINFO);
sei.fMask = SEE_MASK_INVOKEIDLIST | SEE_MASK_NOCLOSEPROCESS;
sei.hwnd = hwnd;
sei.lpVerb = "properties";
sei.lpFile = szCurFile;
sei.nShow = SW_SHOWNORMAL;
ShellExecuteEx(&sei);
}
break;
case IDM_FILE_CREATELINK:
{
if (!lstrlen(szCurFile))
break;
if (!PathCreateDeskLnk(szCurFile))
MsgBox(MBWARN,IDS_ERR_CREATELINK);
}
break;
case IDM_FILE_OPENFAV:
if (FileSave(FALSE,TRUE,FALSE,FALSE)) {
char tchSelItem[MAX_PATH];
if (FavoritesDlg(hwnd,tchSelItem))
{
if (PathIsLnkToDirectory(tchSelItem,NULL,0))
PathGetLnkPath(tchSelItem,tchSelItem,COUNTOF(tchSelItem));
if (PathIsDirectory(tchSelItem))
{
char tchFile[MAX_PATH];
if (OpenFileDlg(hwndMain,tchFile,COUNTOF(tchFile),tchSelItem))
FileLoad(TRUE,FALSE,FALSE,FALSE,tchFile);
}
else
FileLoad(TRUE,FALSE,FALSE,FALSE,tchSelItem);
}
}
break;
case IDM_FILE_ADDTOFAV:
if (lstrlen(szCurFile)) {
SHFILEINFO shfi;
SHGetFileInfo2(szCurFile,0,&shfi,sizeof(SHFILEINFO),SHGFI_DISPLAYNAME);
AddToFavDlg(hwnd,shfi.szDisplayName,szCurFile);
}
break;
case IDM_FILE_MANAGEFAV:
{
SHELLEXECUTEINFO sei;
ZeroMemory(&sei,sizeof(SHELLEXECUTEINFO));
sei.cbSize = sizeof(SHELLEXECUTEINFO);
sei.fMask = SEE_MASK_NOCLOSEPROCESS;
sei.hwnd = hwnd;
sei.lpVerb = NULL;
sei.lpFile = tchFavoritesDir;
sei.lpParameters = NULL;
sei.lpDirectory = NULL;
sei.nShow = SW_SHOWNORMAL;
// Run favorites directory
ShellExecuteEx(&sei);
}
break;
case IDM_FILE_RECENT:
if (MRU_Enum(pFileMRU,0,NULL,0) > 0) {
if (FileSave(FALSE,TRUE,FALSE,FALSE)) {
char tchFile[MAX_PATH];
if (FileMRUDlg(hwnd,tchFile))
FileLoad(TRUE,FALSE,FALSE,FALSE,tchFile);
}
}
break;
case IDM_FILE_EXIT:
SendMessage(hwnd,WM_CLOSE,0,0);
break;
case IDM_ENCODING_ANSI:
case IDM_ENCODING_UNICODE:
case IDM_ENCODING_UNICODEREV:
case IDM_ENCODING_UTF8:
case IDM_ENCODING_UTF8SIGN:
{
int iNewCodePage = iEncodings[LOWORD(wParam)-IDM_ENCODING_ANSI];
if (SendMessage(hwndEdit,SCI_GETLENGTH,0,0) == 0) {
if (iCodePage != 0 && iNewCodePage != 0 || InfoBox(MBYESNO,IDS_ASK_ENCODING2,"MsgConv2") == IDYES) {
EditConvertText(hwndEdit,
(iCodePage == NCP_DEFAULT) ? iDefaultCodePage : SC_CP_UTF8,
(iNewCodePage == NCP_DEFAULT) ? iDefaultCodePage : SC_CP_UTF8,
(lstrlen(szCurFile) == 0));
iCodePage = iNewCodePage;
iInitialCP = iNewCodePage;
UpdateToolbar();
UpdateStatusbar();
SetWindowTitle(hwnd,uidsAppTitle,IDS_UNTITLED,szCurFile,
iPathNameFormat,bModified || iCodePage != iInitialCP,
IDS_READONLY,bReadOnly);
}
}
else if (iCodePage != iNewCodePage)
{
if (iCodePage != 0 && iNewCodePage != 0 || InfoBox(MBYESNO,IDS_ASK_ENCODING,"MsgConv1") == IDYES) {
BeginWaitCursor();
EditConvertText(hwndEdit,
(iCodePage == NCP_DEFAULT) ? iDefaultCodePage : SC_CP_UTF8,
(iNewCodePage == NCP_DEFAULT) ? iDefaultCodePage : SC_CP_UTF8,
FALSE);
iInitialCP = iCodePage;
iCodePage = iNewCodePage;
EndWaitCursor();
}
UpdateToolbar();
UpdateStatusbar();
SetWindowTitle(hwnd,uidsAppTitle,IDS_UNTITLED,szCurFile,
iPathNameFormat,bModified || iCodePage != iInitialCP,
IDS_READONLY,bReadOnly);
}
}
break;
case IDM_ENCODING_SETDEFAULT:
SelectEncodingDlg(hwnd,&iDefaultEncoding);
break;
case IDM_LINEENDINGS_CRLF:
case IDM_LINEENDINGS_LF:
case IDM_LINEENDINGS_CR:
{
int iNewEOLMode = iLineEndings[LOWORD(wParam)-IDM_LINEENDINGS_CRLF];
iEOLMode = iNewEOLMode;
SendMessage(hwndEdit,SCI_SETEOLMODE,iEOLMode,0);
SendMessage(hwndEdit,SCI_CONVERTEOLS,iEOLMode,0);
UpdateToolbar();
UpdateStatusbar();
SetWindowTitle(hwnd,uidsAppTitle,IDS_UNTITLED,szCurFile,
iPathNameFormat,bModified || iCodePage != iInitialCP,
IDS_READONLY,bReadOnly);
}
break;
case IDM_LINEENDINGS_SETDEFAULT:
SelectLineEndingDlg(hwnd,&iDefaultEOLMode);
break;
case IDM_EDIT_UNDO:
SendMessage(hwndEdit,SCI_UNDO,0,0);
break;
case IDM_EDIT_REDO:
SendMessage(hwndEdit,SCI_REDO,0,0);
break;
case IDM_EDIT_CUT:
if (flagPasteBoard)
bLastCopyFromMe = TRUE;
SendMessage(hwndEdit,SCI_CUT,0,0);
break;
case IDM_EDIT_COPY:
if (flagPasteBoard)
bLastCopyFromMe = TRUE;
SendMessage(hwndEdit,SCI_COPY,0,0);
UpdateToolbar();
break;
case IDM_EDIT_COPYALL:
if (flagPasteBoard)
bLastCopyFromMe = TRUE;
SendMessage(hwndEdit,SCI_COPYRANGE,0,SendMessage(hwndEdit,SCI_GETLENGTH,0,0));
UpdateToolbar();
break;
case IDM_EDIT_PASTE:
SendMessage(hwndEdit,SCI_PASTE,0,0);
break;
case IDM_EDIT_SWAP:
if (SendMessage(hwndEdit,SCI_GETSELECTIONEND,0,0) -
SendMessage(hwndEdit,SCI_GETSELECTIONSTART,0,0) == 0) {
int iNewPos = -1;
int iPos = SendMessage(hwndEdit,SCI_GETCURRENTPOS,0,0);
SendMessage(hwndEdit,SCI_PASTE,0,0);
iNewPos = SendMessage(hwndEdit,SCI_GETCURRENTPOS,0,0);
SendMessage(hwndEdit,SCI_SETSEL,iPos,iNewPos);
SendMessage(hwnd,WM_COMMAND,MAKELONG(IDM_EDIT_CLEARCLIPBOARD,1),0);
}
else {
int iPos = SendMessage(hwndEdit,SCI_GETCURRENTPOS,0,0);
int iAnchor = SendMessage(hwndEdit,SCI_GETANCHOR,0,0);
LPSTR pClip = EditGetClipboardText(hwndEdit);
if (flagPasteBoard)
bLastCopyFromMe = TRUE;
SendMessage(hwndEdit,SCI_CUT,0,0);
SendMessage(hwndEdit,SCI_REPLACESEL,(WPARAM)0,(LPARAM)pClip);
if (iPos > iAnchor)
SendMessage(hwndEdit,SCI_SETSEL,iAnchor,iAnchor + lstrlen(pClip));
else
SendMessage(hwndEdit,SCI_SETSEL,iPos + lstrlen(pClip),iPos);
LocalFree(pClip);
}
break;
case IDM_EDIT_CLEAR:
SendMessage(hwndEdit,SCI_CLEAR,0,0);
break;
case IDM_EDIT_CLEARALL:
SendMessage(hwndEdit,SCI_CLEARALL,0,0);
break;
case IDM_EDIT_CLEARCLIPBOARD:
if (OpenClipboard(hwnd)) {
if (CountClipboardFormats() > 0) {
EmptyClipboard();
UpdateToolbar();
UpdateStatusbar();
}
CloseClipboard();
}
break;
case IDM_EDIT_SELECTALL:
SendMessage(hwndEdit,SCI_SELECTALL,0,0);
//SendMessage(hwndEdit,SCI_SETSEL,0,(LPARAM)-1);
break;
case IDM_EDIT_SELECTWORD:
{
int iSel =
SendMessage(hwndEdit,SCI_GETSELECTIONEND,0,0) -
SendMessage(hwndEdit,SCI_GETSELECTIONSTART,0,0);
int iPos = SendMessage(hwndEdit,SCI_GETCURRENTPOS,0,0);
if (iSel == 0) {
int iWordStart = SendMessage(hwndEdit,SCI_WORDSTARTPOSITION,iPos,TRUE);
int iWordEnd = SendMessage(hwndEdit,SCI_WORDENDPOSITION,iPos,TRUE);
if (iWordStart == iWordEnd) // we are in whitespace salad...
{
iWordStart = SendMessage(hwndEdit,SCI_WORDENDPOSITION,iPos,FALSE);
iWordEnd = SendMessage(hwndEdit,SCI_WORDENDPOSITION,iWordStart,TRUE);
if (iWordStart != iWordEnd) {
//if (SCLEX_HTML == SendMessage(hwndEdit,SCI_GETLEXER,0,0) &&
// SCE_HPHP_VARIABLE == SendMessage(hwndEdit,SCI_GETSTYLEAT,(WPARAM)iWordStart,0) &&
// '$' == (char)SendMessage(hwndEdit,SCI_GETCHARAT,(WPARAM)iWordStart-1,0))
// iWordStart--;
SendMessage(hwndEdit,SCI_SETSEL,iWordStart,iWordEnd);
}
}
else {
//if (SCLEX_HTML == SendMessage(hwndEdit,SCI_GETLEXER,0,0) &&
// SCE_HPHP_VARIABLE == SendMessage(hwndEdit,SCI_GETSTYLEAT,(WPARAM)iWordStart,0) &&
// '$' == (char)SendMessage(hwndEdit,SCI_GETCHARAT,(WPARAM)iWordStart-1,0))
// iWordStart--;
SendMessage(hwndEdit,SCI_SETSEL,iWordStart,iWordEnd);
}
iSel =
SendMessage(hwndEdit,SCI_GETSELECTIONEND,0,0) -
SendMessage(hwndEdit,SCI_GETSELECTIONSTART,0,0);
if (iSel == 0) {
int iLine = SendMessage(hwndEdit,SCI_LINEFROMPOSITION,iPos,0);
int iLineStart = SendMessage(hwndEdit,SCI_GETLINEINDENTPOSITION,iLine,0);
int iLineEnd = SendMessage(hwndEdit,SCI_GETLINEENDPOSITION,iLine,0);
SendMessage(hwndEdit,SCI_SETSEL,iLineStart,iLineEnd);
}
}
else {
int iLine = SendMessage(hwndEdit,SCI_LINEFROMPOSITION,iPos,0);
int iLineStart = SendMessage(hwndEdit,SCI_GETLINEINDENTPOSITION,iLine,0);
int iLineEnd = SendMessage(hwndEdit,SCI_GETLINEENDPOSITION,iLine,0);
SendMessage(hwndEdit,SCI_SETSEL,iLineStart,iLineEnd);
}
}
break;
case IDM_EDIT_MOVELINEUP:
{
int iCurPos = SendMessage(hwndEdit,SCI_GETCURRENTPOS,0,0);
int iCurLine = SendMessage(hwndEdit,SCI_LINEFROMPOSITION,(WPARAM)iCurPos,0);
int iLinePos = iCurPos - SendMessage(hwndEdit,SCI_POSITIONFROMLINE,(WPARAM)iCurLine,0);
if (iCurLine > 0) {
SendMessage(hwndEdit,SCI_BEGINUNDOACTION,0,0);
SendMessage(hwndEdit,SCI_LINETRANSPOSE,0,0);
//SendMessage(hwndEdit,SCI_GOTOLINE,(WPARAM)iCurLine-1,0);
SendMessage(hwndEdit,SCI_GOTOPOS,(WPARAM)SendMessage(hwndEdit,SCI_POSITIONFROMLINE,(WPARAM)iCurLine-1,0)+iLinePos,0);
SendMessage(hwndEdit,SCI_CHOOSECARETX,0,0);
SendMessage(hwndEdit,SCI_ENDUNDOACTION,0,0);
}
}
break;
case IDM_EDIT_MOVELINEDOWN:
{
int iCurPos = SendMessage(hwndEdit,SCI_GETCURRENTPOS,0,0);
int iCurLine = SendMessage(hwndEdit,SCI_LINEFROMPOSITION,(WPARAM)iCurPos,0);
int iLinePos = iCurPos - SendMessage(hwndEdit,SCI_POSITIONFROMLINE,(WPARAM)iCurLine,0);
if (iCurLine < SendMessage(hwndEdit,SCI_GETLINECOUNT,0,0) - 1) {
SendMessage(hwndEdit,SCI_BEGINUNDOACTION,0,0);
SendMessage(hwndEdit,SCI_GOTOLINE,(WPARAM)iCurLine+1,0);
SendMessage(hwndEdit,SCI_LINETRANSPOSE,0,0);
SendMessage(hwndEdit,SCI_GOTOPOS,(WPARAM)SendMessage(hwndEdit,SCI_POSITIONFROMLINE,(WPARAM)iCurLine+1,0)+iLinePos,0);
SendMessage(hwndEdit,SCI_CHOOSECARETX,0,0);
SendMessage(hwndEdit,SCI_ENDUNDOACTION,0,0);
}
}
break;
case IDM_EDIT_DUPLICATELINE:
SendMessage(hwndEdit,SCI_LINEDUPLICATE,0,0);
break;
case IDM_EDIT_CUTLINE:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -