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

📄 gsfinder.cpp

📁 PocketPC上很好用的文件管理器,而且里面的封装性很好,学windows mobile开发的兄弟,值得一看
💻 CPP
📖 第 1 页 / 共 4 页
字号:
// 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 + -