📄 gsfinder.cpp
字号:
// GSFinder.cpp : 僌儘乕僶儖娭悢掕媊
////////////////////////////////////////////////////////////////
//INCLUDE
#include "GSFinder.h"
#include "MainWnd.h"
#include "OptionDlg.h"
HINSTANCE g_hInst; // 尰嵼偺僀儞僗僞儞僗
CMainWnd g_MainWnd; //儊僀儞僂僀儞僪僂
HWND g_hwndPrev = NULL; //ADD TODA
BOOL g_bCmdParam = FALSE;
LPTSTR g_lpszFirstLoadFolder = NULL;
TCHAR g_szRootName[MAX_PATH] = {0}; //ADD TODA
TCHAR g_szDecSep[16] = _T("."); //彫悢揰嬫愗傝暥帤
//ADD START TODA
BOOL g_bMoving = FALSE;
BOOL g_bDraging = FALSE;
int g_nStartPos = 0;
int g_nLastWidth = 0;
int g_nLastHeight = 0;
//ADD END
#ifdef __POCKET_PC
SHACTIVATEINFO g_sai;
#endif
BOOL g_bIgureClick = FALSE; //ADD TODA (from GSFinder ver.1.99)
////////////////////////////////////////////////////////////////
int WINAPI WinMain( HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
//僐儅儞僪儔僀儞傪敾掕
if (wcsncmp(lpCmdLine, APP_CMD_PARAM, APP_CMD_PARAM_LEN) == 0)
g_lpszFirstLoadFolder = lpCmdLine + APP_CMD_PARAM_LEN;
else if (wcslen(lpCmdLine))
//MOD START TODA (僟僽儖僋僅乕僥乕僔儑儞偑偁傞応崌嶍彍)
{
if(*lpCmdLine == _T('\"'))
{
g_lpszFirstLoadFolder = lpCmdLine + 1;
LPTSTR lpszTemp = wcschr(g_lpszFirstLoadFolder, _T('\"'));
if(lpszTemp) *lpszTemp = 0x00;
}
else
g_lpszFirstLoadFolder = lpCmdLine;
}
//MOD END
//擇廳婲摦偺杊巭
HANDLE hMutex = CreateMutex(NULL, NULL, APP_MUTEX_NAME);
if (GetLastError() == ERROR_ALREADY_EXISTS)
{
HWND hPrevWnd = FindWindow(APP_MUTEX_NAME, NULL);
if (hPrevWnd)
{
SetForegroundWindow(hPrevWnd);
if (g_lpszFirstLoadFolder)
{
COPYDATASTRUCT cds;
cds.dwData = WM_DROPFILES;
cds.lpData = g_lpszFirstLoadFolder;
cds.cbData = (wcslen(g_lpszFirstLoadFolder) + 1) * sizeof(TCHAR);
SendMessage(hPrevWnd, WM_COPYDATA, NULL, (LPARAM)&cds);
}
}
return 0;
}
MSG msg;
HACCEL hAccelTable;
GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SDECIMAL, g_szDecSep, 16);
//ADD START TODA (僼傽僀儖曄峏捠抦 from Y.Nagamidori)
InitUpdateNotify();
//ADD END
//儊僀儞僂僀儞僪僂偺嶌惉
g_hInst = hInstance;
g_MainWnd.Init();
g_MainWnd.ShowWindow();
g_hwndPrev = g_MainWnd.m_ListView.m_hWnd; //ADD TODA
hAccelTable = LoadAccelerators(hInstance, (LPCTSTR)IDR_MAINFRAME);
// 儊僀儞 儊僢僙乕僕 儖乕僾:
while (GetMessage(&msg, NULL, 0, 0))
{
if (!TranslateAccelerator(g_MainWnd.m_hWnd, hAccelTable, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
//ADD START TODA (僼傽僀儖曄峏捠抦 from Y.Nagamidori)
UninitUpdateNotify();
//ADD END
return msg.wParam;
}
////////////////////////////////////////////////////////////////
LRESULT CALLBACK MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
//僉乕擖椡張棟
if(message == WM_NOTIFY) {
WPARAM wRtn = 0;
switch (((LPNMHDR)lParam)->code) {
//僣儕乕價儏乕/儕僗僩價儏乕忋偺僉乕擖椡偺応崌
case LVN_KEYDOWN:
wRtn = g_MainWnd.m_ListView.OnKeyDown((NMLVKEYDOWN*)lParam);
break;
case TVN_KEYDOWN:
wRtn = g_MainWnd.m_TreeView.OnKeyDown((NMTVKEYDOWN*)lParam);
break;
}
//儊僢僙乕僕曄姺敾掕
if(wRtn != 0) {
message = WM_COMMAND;
wParam = wRtn | (wParam&0xFFFF0000);
}
}
HWND hFocus = GetFocus();
int wmId, wmEvent;
switch (message)
{
case WM_COMMAND:
{
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
if (wmId >= ID_FILE_OPEN_APP && wmId < ID_FILE_OPEN_APP + MAX_OPENAPP)
{
g_MainWnd.m_ListView.OnFileOpenApp(wmId - ID_FILE_OPEN_APP);
break;
}
if (wmId >= ID_TOOL_USERPATH_MENU && wmId < ID_TOOL_USERPATH_MENU + MAX_OPENAPP)
{
g_MainWnd.m_ListView.OnToolUserPath(wmId - ID_TOOL_USERPATH_MENU);
break;
}
if (wmId >= ID_TOOL_FAVORITES_LNK && wmId < ID_TOOL_FAVORITES_LNK + g_MainWnd.m_ListView.m_nFavoritesCount)
{
g_MainWnd.m_ListView.OnToolFavoritesLnk(wmId - ID_TOOL_FAVORITES_LNK);
break;
}
//僞僢僾&儂乕儖僪梡慜張棟
g_MainWnd.m_ListView.OnSelectMenuLoop();
g_MainWnd.m_TreeView.OnSelectMenuLoop();
//儊僢僙乕僕ID敾掕
wmId=g_MainWnd.m_ListView.CheckMessageID(wmId);
switch (wmId)
{
//僼僅乕僇僗愝掕
case ID_KEY_TAB:
{
if (hFocus == g_MainWnd.m_ListView.m_hWnd)
{
if (g_MainWnd.m_CmdBands.m_Settings.bShowAddressBar)
SetFocus(g_MainWnd.m_CmdBands.m_hComboBox);
else
SetFocus(g_MainWnd.m_TreeView.m_hWnd);
}
else if (hFocus == g_MainWnd.m_TreeView.m_hWnd)
SetFocus(g_MainWnd.m_ListView.m_hWnd);
else
{
if (g_MainWnd.m_bShowFolder)
SetFocus(g_MainWnd.m_TreeView.m_hWnd);
else
SetFocus(g_MainWnd.m_ListView.m_hWnd);
}
break;
}
//僼僅乕僇僗愝掕(媡弴)
case ID_KEY_SFT_TAB:
{
if (hFocus == g_MainWnd.m_ListView.m_hWnd)
{
if (g_MainWnd.m_bShowFolder)
SetFocus(g_MainWnd.m_TreeView.m_hWnd);
else if (g_MainWnd.m_CmdBands.m_Settings.bShowAddressBar)
SetFocus(g_MainWnd.m_CmdBands.m_hComboBox);
}
else if (hFocus == g_MainWnd.m_TreeView.m_hWnd)
{
if (g_MainWnd.m_CmdBands.m_Settings.bShowAddressBar)
SetFocus(g_MainWnd.m_CmdBands.m_hComboBox);
else
SetFocus(g_MainWnd.m_ListView.m_hWnd);
}
else
{
SetFocus(g_MainWnd.m_ListView.m_hWnd);
}
break;
}
//僶乕僕儑儞忣曬
case ID_FILE_ABOUT:
DialogBox(g_hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About);
break;
//廔椆
case ID_FILE_EXIT:
g_MainWnd.OnClose();
break;
//CTRL僉乕傪ON
case ID_EDIT_CONTROL_ON:
g_MainWnd.OnEditCtrlOn();
break;
//SHIFT僉乕傪ON
case ID_EDIT_SHIFT_ON:
g_MainWnd.OnEditShiftOn();
break;
//僪儔僢僌&僪儘僢僾儌乕僪ON/OFF
case ID_EDIT_DRAGDROP:
g_MainWnd.OnDragDropMode();
break;
//愗傝庢傝
case ID_EDIT_CUT:
{
//MOD START TODA (僋儕僢僾儃乕僪張棟捛壛)
if(hFocus == g_MainWnd.m_ListView.m_hWnd) {
g_MainWnd.m_ListView.OnEditCut();
}
else
if(hFocus == g_MainWnd.m_TreeView.m_hWnd) {
g_MainWnd.m_TreeView.OnEditCut();
}
else {
SendMessage(hFocus, WM_CUT, 0x00, 0x00);
g_MainWnd.m_CmdBands.SetEnableEditPaste(TRUE, FALSE);
}
//MOD END
break;
}
//僐僺乕
case ID_EDIT_COPY:
{
//MOD START TODA (僋儕僢僾儃乕僪張棟捛壛)
if(hFocus == g_MainWnd.m_ListView.m_hWnd) {
g_MainWnd.m_ListView.OnEditCopy();
}
else
if(hFocus == g_MainWnd.m_TreeView.m_hWnd) {
g_MainWnd.m_TreeView.OnEditCopy();
}
else {
SendMessage(hFocus, WM_COPY, 0x00, 0x00);
g_MainWnd.m_CmdBands.SetEnableEditPaste(TRUE, FALSE);
}
//MOD END
break;
}
//揬傝晅偗
case ID_EDIT_PASTE:
{
//MOD START TODA (僋儕僢僾儃乕僪張棟捛壛)
if(hFocus == g_MainWnd.m_ListView.m_hWnd ||
hFocus == g_MainWnd.m_TreeView.m_hWnd)
g_MainWnd.m_ListView.OnEditPaste();
else
SendMessage(hFocus, WM_PASTE, 0x00, 0x00);
//MOD END
break;
}
// 僔儑乕僩僇僢僩偺揬傝晅偗
case ID_EDIT_PASTE_SHORTCUT:
g_MainWnd.m_ListView.OnEditPasteShortcut();
break;
//僼傽僀儖専嶕
case ID_EDIT_FILESEARCH:
g_MainWnd.m_ListView.OnFileSearch();
break;
//僗僥乕僞僗僶乕偺昞帵
case ID_VIEW_STATUSBAR:
g_MainWnd.OnViewStatusBar();
break;
//僣乕儖僶乕偺昞帵
case ID_VIEW_TOOLBAR:
g_MainWnd.m_CmdBands.OnViewToolBar();
break;
//傾僪儗僗僶乕偺昞帵
case ID_VIEW_ADDRESSBAR:
g_MainWnd.m_CmdBands.OnViewAddressBar();
break;
//儕僗僩偺僗僞僀儖
case ID_VIEW_LARGEICON:
g_MainWnd.m_ListView.OnChangeListStyle(ID_VIEW_LARGEICON);
break;
//昞帵宍幃->彫偝偄傾僀僐儞
case ID_VIEW_SMALLICON:
g_MainWnd.m_ListView.OnChangeListStyle(ID_VIEW_SMALLICON);
break;
//昞帵宍幃->堦棗
case ID_VIEW_LIST:
g_MainWnd.m_ListView.OnChangeListStyle(ID_VIEW_LIST);
break;
//昞帵宍幃->徻嵶
case ID_VIEW_REPORT:
g_MainWnd.m_ListView.OnChangeListStyle(ID_VIEW_REPORT);
break;
//昞帵宍幃->徻嵶(峴慖戰)
case ID_VIEW_REPORTLINE:
g_MainWnd.m_ListView.OnChangeListStyle(ID_VIEW_REPORTLINE);
break;
//昞帵宍幃偺曄峏
case ID_VIEW_STYLE:
g_MainWnd.m_ListView.OnListStyle();
break;
//儕僗僩偺暲傋懼偊(柤慜)
case ID_VIEW_SORT_NAME:
g_MainWnd.m_ListView.OnChangeSort(ID_VIEW_SORT_NAME);
break;
//儕僗僩偺暲傋懼偊(庬椶)
case ID_VIEW_SORT_EXT:
g_MainWnd.m_ListView.OnChangeSort(ID_VIEW_SORT_EXT);
break;
//儕僗僩偺暲傋懼偊(僒僀僘)
case ID_VIEW_SORT_SIZE:
g_MainWnd.m_ListView.OnChangeSort(ID_VIEW_SORT_SIZE);
break;
//儕僗僩偺暲傋懼偊(峏怴擔)
case ID_VIEW_SORT_TIME:
g_MainWnd.m_ListView.OnChangeSort(ID_VIEW_SORT_TIME);
break;
//儕僗僩偺暲傋懼偊(崀弴)
case ID_VIEW_SORT_NOT_RAISE:
g_MainWnd.m_ListView.OnChangeSort(ID_VIEW_SORT_NOT_RAISE);
break;
//嵟怴偺忣曬偵峏怴
case ID_VIEW_UPDATE:
g_MainWnd.OnViewUpdate();
break;
//堦偮忋偺僼僅儖僟傊
case ID_VIEW_UPFOLDER:
{
if(hFocus == g_MainWnd.m_ListView.m_hWnd)
g_MainWnd.m_ListView.OnViewUpFolder();
else
if(hFocus == g_MainWnd.m_TreeView.m_hWnd)
g_MainWnd.m_TreeView.OnViewUpFolder();
break;
}
//僼僅儖僟昞帵ON/OFF
case ID_VIEW_FOLDER:
g_MainWnd.OnViewFolder();
break;
//嵍塃偵暲傋傞
case ID_VIEW_SIDE:
g_MainWnd.OnViewSide();
break;
//僼傽僀儖傪奐偔
case ID_FILE_OPEN:
{
if(hFocus == g_MainWnd.m_ListView.m_hWnd)
g_MainWnd.m_ListView.OnFileOpen();
break;
}
//ADD START TODA (from GSFinder ver.1.99)
//傾僾儕働乕僔儑儞傊憲傞
case ID_FILE_TO_APP:
{
if(hFocus == g_MainWnd.m_ListView.m_hWnd)
g_MainWnd.m_ListView.OnFileToApp();
break;
}
//ADD END
//僷儔儊乕僞晅偒偱奐偔
case ID_FILE_OPEN_PARAM:
{
if(hFocus == g_MainWnd.m_ListView.m_hWnd)
g_MainWnd.m_ListView.OnFileOpenParam();
break;
}
//怴婯僼僅儖僟嶌惉
case ID_FILE_CREATEFOLDER:
SetFocus(g_MainWnd.m_ListView.m_hWnd);
g_MainWnd.m_ListView.OnFileCreateFolder();
break;
//僔儑乕僩僇僢僩嶌惉
case ID_FILE_CREATE_SHORTCUT:
{
if(hFocus == g_MainWnd.m_ListView.m_hWnd)
g_MainWnd.m_ListView.OnFileCreateShortcut();
else
if(hFocus == g_MainWnd.m_TreeView.m_hWnd)
g_MainWnd.m_TreeView.OnFileCreateShortcut();
break;
}
//嶍彍
case ID_FILE_DELETE:
{
if(hFocus == g_MainWnd.m_ListView.m_hWnd) {
g_MainWnd.m_ListView.OnFileDelete();
}
if(hFocus == g_MainWnd.m_TreeView.m_hWnd) {
g_MainWnd.m_TreeView.OnFileDelete();
}
break;
}
//柤慜偺曄峏
case ID_FILE_RENAME:
{
if(hFocus == g_MainWnd.m_ListView.m_hWnd)
g_MainWnd.m_ListView.OnFileRename();
else
if(hFocus == g_MainWnd.m_TreeView.m_hWnd)
g_MainWnd.m_TreeView.OnFileRename();
break;
}
//僾儘僷僥傿
case ID_FILE_PROPERTY:
{
if(hFocus == g_MainWnd.m_ListView.m_hWnd)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -