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

📄 mainwnd.cpp

📁 PocketPC上很好用的文件管理器,而且里面的封装性很好,学windows mobile开发的兄弟,值得一看
💻 CPP
📖 第 1 页 / 共 3 页
字号:
#include "GSFinder.h"
#include "MainWnd.h"

///////////////////////////////////////////////////////////////
//僂傿儞僪僂 僋儔僗偺搊榐
ATOM CMainWnd::MainWndRegisterClass(HINSTANCE hInstance, LPTSTR szWindowClass)
{
	WNDCLASS	wc;

	wc.style			= CS_HREDRAW | CS_VREDRAW;
	wc.lpfnWndProc		= (WNDPROC) MainWndProc;
	wc.cbClsExtra		= 0;
	wc.cbWndExtra		= 0;
	wc.hInstance		= hInstance;
	wc.hIcon			= NULL;
	wc.hCursor			= 0;
	wc.hbrBackground	= CreateSolidBrush(GetSysColor(COLOR_BTNFACE));
	wc.lpszMenuName		= 0;
	wc.lpszClassName	= szWindowClass;

	return RegisterClass(&wc);
}

///////////////////////////////////////////////////////////////
CMainWnd::CMainWnd()
{
	m_bControlKey = FALSE;
	m_bShiftKey = FALSE;

	m_bShowStatusWnd = TRUE;
	m_bContextMenu = FALSE;			//ADD TODA
	m_bFontChange = FALSE;			//ADD TODA
	m_bDragDrop = TRUE;				//MOD TODA
	m_nFontSize = 12;				//ADD TODA
	m_szFontName[0]=0x00;			//ADD TODA

	wcscpy(m_szSendAppPath, _T("\\Windows\\SendTo"));
	m_bCheckQAdd = TRUE;

#if defined(__POCKET_PC)||defined(__PALMSIZE_PC)
	m_bShowFolder		= FALSE;	//ADD TODA
	m_nTreeViewWidth	= 100;		//ADD TODA
	m_nTreeViewHeight	= 100;		//ADD TODA
	m_bViewSide			= FALSE;	//ADD TODA
#	ifdef SIPF_OFF
	m_dwLastSipInfo		= SIPF_OFF;
#	else
	m_dwLastSipInfo		= 0;
#	endif
#else
	m_bShowFolder		= TRUE;		//ADD TODA
	m_nTreeViewWidth	= 200;		//ADD TODA
	m_nTreeViewHeight	= 0;		//ADD TODA
	m_bViewSide			= TRUE;		//ADD TODA
	m_dwLastSipInfo		= 0;
#endif
	m_hwndPrev			= NULL;
	m_nMainWndTop		= 0;		//ADD TODA
	m_nMainWndLeft		= 0;		//ADD TODA
	m_nMainWndWidth		= 640;		//ADD TODA
	m_nMainWndHeight	= 400;		//ADD TODA
	m_nMainWndStyle		= 92;		//ADD TODA
}

///////////////////////////////////////////////////////////////
CMainWnd::~CMainWnd()
{
	if (m_bControlKey)
		keybd_event(VK_CONTROL, 0x1e, KEYEVENTF_KEYUP, 1);
	if (m_bShiftKey)
		keybd_event(VK_SHIFT, 0x1e, KEYEVENTF_KEYUP, 1);
}

///////////////////////////////////////////////////////////////
void CMainWnd::Init()
{
#ifdef __POCKET_PC
	//IM
	m_dwLastSipInfo = GetIMStatus();
#endif
	SaveModulePath();

	//OS僶乕僕儑儞庢摼
	GetVersion();

	//僔僗僥儉僷僗偺庢摼
	GetSystemPath();

	//愝掕撉傒崬傒
	GetSettings();

	//僋儔僗偺搊榐
	MainWndRegisterClass(g_hInst, APP_MUTEX_NAME);

	//僂傿儞僪僂嶌惉
#if defined(__POCKET_PC) || (_WIN32_WCE < 400)
	m_hWnd = CreateWindow(APP_MUTEX_NAME, APP_MAINWND_TITLE, WS_VISIBLE,
				CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, g_hInst, NULL);
#else
	if(!m_bOverLapped)
		//捠忢僂傿儞僪僂
		m_hWnd = CreateWindow(APP_MUTEX_NAME, APP_MAINWND_TITLE, WS_VISIBLE,
				CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, g_hInst, NULL);

	else
		//僆乕僶乕儔僢僾僂傿儞僪僂
		m_hWnd = CreateWindow(APP_MUTEX_NAME, APP_MAINWND_TITLE,
				WS_OVERLAPPED | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX,
				m_nMainWndLeft, m_nMainWndTop, m_nMainWndWidth, m_nMainWndHeight, NULL, NULL, g_hInst, NULL);
#endif

	//傾僀僐儞偺愝掕
	SendMessage(m_hWnd, WM_SETICON , ICON_SMALL, 
				(LPARAM)LoadImage(g_hInst, MAKEINTRESOURCE(IDR_MAINFRAME), IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR));
	SendMessage(m_hWnd, WM_SETICON , ICON_BIG,
				(LPARAM)LoadIcon(g_hInst, MAKEINTRESOURCE(IDR_MAINFRAME)));
}

//ADD START TODA
///////////////////////////////////////////////////////////////
void CMainWnd::GetSystemPath()
{
	//Windows
	wcscpy(m_szWindowsPath, IDS_WINDOWS_PATH);

	//僱僢僩儚乕僋
	wcscpy(m_szNetworkPath, IDS_NETWORK_PATH);
	m_lpszNetwork = wcsrchr(m_szNetworkPath, _T('\\'))+1;

#if defined(__POCKET_PC) || (_WIN32_WCE >= 400)
	//儅僀僪僉儏儊儞僩僷僗
	if(SHGetSpecialFolderPath(NULL, m_szMyDocumentPath,CSIDL_PERSONAL, FALSE))
		m_lpszMyDocument = wcsrchr(m_szMyDocumentPath, _T('\\'))+1;
	else
	{
		wcscpy(m_szMyDocumentPath, _T("\\My Documents"));
		m_lpszMyDocument = wcsrchr(m_szMyDocumentPath, _T('\\'))+1;
	}
	
	//僗僞乕僩儊僯儏乕僷僗
#ifdef CSIDL_STARTMENU
	if(SHGetSpecialFolderPath(NULL, m_szStartMenuPath,CSIDL_STARTMENU, FALSE))
	{
#else
	if(SHGetSpecialFolderPath(NULL, m_szStartMenuPath,CSIDL_PROGRAMS, FALSE))
	{
#ifdef __POCKET_PC
		wcscpy(m_szStartMenuPath, IDS_STARTMENU_PATH);
#endif
#endif
		m_lpszStartMenu = wcsrchr(m_szStartMenuPath, _T('\\'))+1;
	}
	//MOD END
	else
	{
		//僗僞乕僩儊僯儏乕僷僗
		wcscpy(m_szStartMenuPath, IDS_STARTMENU_PATH);
		m_lpszStartMenu = wcsrchr(m_szStartMenuPath, _T('\\'))+1;
	}

	//偍婥偵擖傝
	if(!SHGetSpecialFolderPath(NULL, m_szFavoritesPath,	CSIDL_FAVORITES, FALSE))
	{
		//偍婥偵擖傝
		wcscpy(m_szFavoritesPath, IDS_FAVORITES_PATH);
	}

#	ifndef __POCKET_PC
	//僨僗僋僩僢僾僷僗
	if(!SHGetSpecialFolderPath(NULL, m_szDesktopPath, CSIDL_DESKTOP, FALSE))
	{
		wcscpy(m_szDesktopPath, IDS_DESKTOP_PATH);
	}
#	endif
#else
	//儅僀僪僉儏儊儞僩
	wcscpy(m_szMyDocumentPath, _T("\\My Documents"));
	m_lpszMyDocument = wcsrchr(m_szMyDocumentPath, _T('\\'))+1;

	//僗僞乕僩儊僯儏乕僷僗
	wcscpy(m_szStartMenuPath, IDS_STARTMENU_PATH);
	m_lpszStartMenu = wcsrchr(m_szStartMenuPath, _T('\\'))+1;

	//偍婥偵擖傝
	wcscpy(m_szFavoritesPath, IDS_FAVORITES_PATH);

	//僨僗僋僩僢僾
	wcscpy(m_szDesktopPath, IDS_DESKTOP_PATH);
#endif
}
//ADD END

///////////////////////////////////////////////////////////////
void CMainWnd::OnCreate()
{
	//弶婜壔
	INITCOMMONCONTROLSEX	iccex;
	iccex.dwSize = sizeof (INITCOMMONCONTROLSEX);
	iccex.dwICC = ICC_BAR_CLASSES | ICC_COOL_CLASSES;
	InitCommonControlsEx (&iccex);
}

///////////////////////////////////////////////////////////////
void CMainWnd::ShowWindow()
{
//	HCURSOR hCursor = SetCursor(LoadCursor(NULL, IDC_WAIT));	//DEL TODA

	//愝掕撉傒崬傒
//	GetSettings();									//DEL TODA

	//巕僂僀儞僪僂弶婜壔
	m_CmdBands.Init(m_hWnd);
	m_CmdBands.SetCheckViewStatusWnd(m_bShowStatusWnd);
	m_CmdBands.SetCheckViewFolder(m_bShowFolder);	//ADD TODA
#ifdef __POCKET_PC
	m_CmdBands.SetCheckViewSide(m_bViewSide);		//ADD TODA
#endif
	m_CmdBands.SetCheckDragDrop(m_bDragDrop);		//ADD TODA
	m_StatusWnd.Init(m_hWnd);
	m_ListView.Init(m_hWnd);
	m_TreeView.Init(m_hWnd);						//ADD TODA

	//僼僅儞僩愝掕
	SetFont();										//ADD TODA

	//昞帵
//	::ShowWindow(m_hWnd, SW_SHOW);					//DEL TODA
//ADD START TODA
	//僂傿儞僪僂昞帵
	//僆乕僶乕儔僢僾僂傿儞僪僂
	if(m_bOverLapped)
	{
		//僂傿儞僪僂忬懺愝掕
		if(m_nMainWndStyle > 2) {
			m_nMainWndStyle -= 90;
		}
		switch(m_nMainWndStyle) {
		//嵟彫壔
		case MAINWND_MINIMUM:
			::ShowWindow(m_hWnd, SW_SHOW);
			::ShowWindow(m_hWnd, SW_MINIMIZE);
			break;
		//捠忢
		case MAINWND_NOMAL:
			::ShowWindow(m_hWnd, SW_SHOWNORMAL);
			break;
		//嵟戝壔
		case MAINWND_MAXIMUM:
		default:
			m_nMainWndStyle = 2;
			::ShowWindow(m_hWnd, SW_SHOW);
			::ShowWindow(m_hWnd, SW_MAXIMIZE);
			break;
		}
	//捠忢僂傿儞僪僂
	} else {
		::ShowWindow(m_hWnd, SW_SHOW);
	}
//ADD END

	m_StatusWnd.ShowStatusWnd(m_bShowStatusWnd);

	//昞帵僒僀僘偺挷惍
	RecalcLayout();
	
	//僼僅儖僟撉傒崬傒
	//ADD START TODA	
	SetFocus(m_ListView.m_hWnd);
	//ADD END
	m_ListView.LoadFolderItem(m_ListView.m_szCurrentFolder);
//	SetCursor(hCursor);								//DEL TODA
	m_hwndPrev = m_ListView.m_hWnd;
}

///////////////////////////////////////////////////////////////
void CMainWnd::OnDestroy()
{
	PostQuitMessage(0);
}

///////////////////////////////////////////////////////////////
void CMainWnd::OnSize(int nWidth, int nHeight)
{
#ifdef __POCKET_PC
	//MOD START TODA (from GSFinder ver.1.99)
	//僒僀僘傪挷惍
	RECT rctSB, rctTB, rctAB;
	if (m_StatusWnd.m_hWnd)
		GetWindowRect(m_StatusWnd.m_hWnd, &rctSB);
	if (m_CmdBands.m_hToolbar)
		GetWindowRect(m_CmdBands.m_hToolbar, &rctTB);
	if (m_CmdBands.m_hAddressbar)
		GetWindowRect(m_CmdBands.m_hAddressbar, &rctAB);
	if (m_CmdBands.m_Settings.bShowAddressBar)
		MoveWindow(m_CmdBands.m_hAddressbar, 0, 0, RECT_WIDTH(&rctAB), RECT_HEIGHT(&rctAB), TRUE);
	if (m_CmdBands.m_Settings.bShowToolBar)
		MoveWindow(m_CmdBands.m_hToolbar, 0,
			nHeight - RECT_HEIGHT(&rctTB), RECT_WIDTH(&rctTB), RECT_HEIGHT(&rctTB), TRUE);
	if (m_bShowStatusWnd)
	{
		if (m_CmdBands.m_Settings.bShowToolBar)
			MoveWindow(m_StatusWnd.m_hWnd, 0,
				nHeight - RECT_HEIGHT(&rctSB) - RECT_HEIGHT(&rctTB),
				RECT_WIDTH(&rctSB), RECT_HEIGHT(&rctSB), TRUE);
		else
			MoveWindow(m_StatusWnd.m_hWnd, 0,
				nHeight - RECT_HEIGHT(&rctSB), RECT_WIDTH(&rctSB), RECT_HEIGHT(&rctSB), TRUE);
	}
	int nLVTop, nLVBottom;
	if (m_CmdBands.m_Settings.bShowAddressBar)
		nLVTop = RECT_HEIGHT(&rctAB);
	else
		nLVTop = 0;

	if (m_CmdBands.m_Settings.bShowToolBar &&
		m_bShowStatusWnd &&
		m_CmdBands.m_Settings.bShowAddressBar)
		nLVBottom = nHeight - RECT_HEIGHT(&rctAB) - RECT_HEIGHT(&rctSB) - RECT_HEIGHT(&rctTB);
	else if (!m_CmdBands.m_Settings.bShowToolBar &&
		m_bShowStatusWnd &&
		m_CmdBands.m_Settings.bShowAddressBar)
		nLVBottom = nHeight - RECT_HEIGHT(&rctAB) - RECT_HEIGHT(&rctSB);
	else if (!m_CmdBands.m_Settings.bShowToolBar &&
		!m_bShowStatusWnd &&
		m_CmdBands.m_Settings.bShowAddressBar)
		nLVBottom = nHeight - RECT_HEIGHT(&rctAB);
	else if (!m_CmdBands.m_Settings.bShowToolBar &&
		!m_bShowStatusWnd &&
		!m_CmdBands.m_Settings.bShowAddressBar)
		nLVBottom = nHeight + 1;
	else if (m_CmdBands.m_Settings.bShowToolBar &&
		!m_bShowStatusWnd &&
		m_CmdBands.m_Settings.bShowAddressBar)
		nLVBottom = nHeight - RECT_HEIGHT(&rctAB) - RECT_HEIGHT(&rctTB);
	else if (m_CmdBands.m_Settings.bShowToolBar &&
		!m_bShowStatusWnd &&
		!m_CmdBands.m_Settings.bShowAddressBar)
		nLVBottom = nHeight - RECT_HEIGHT(&rctTB);
	else if (m_CmdBands.m_Settings.bShowToolBar &&
		m_bShowStatusWnd &&
		!m_CmdBands.m_Settings.bShowAddressBar)
		nLVBottom = nHeight - RECT_HEIGHT(&rctSB) - RECT_HEIGHT(&rctTB);
	else if (!m_CmdBands.m_Settings.bShowToolBar &&
		m_bShowStatusWnd &&
		!m_CmdBands.m_Settings.bShowAddressBar)
		nLVBottom = nHeight - RECT_HEIGHT(&rctSB);
	//MOD END

//MOD START TODA
//	if (m_CmdBands.m_Settings.bShowAddressBar)
//		SetWindowPos(m_ListView.m_hWnd, HWND_TOP, 0, nLVTop - 2 , nWidth, nLVBottom + 3, SWP_SHOWWINDOW);
//	else
//		MoveWindow(m_ListView.m_hWnd, 0, nLVTop , nWidth, nLVBottom, TRUE);
	if (m_CmdBands.m_Settings.bShowAddressBar)
	{
		if (m_bShowFolder)
		{
			if(m_bViewSide)
			{
				SetWindowPos(m_TreeView.m_hWnd, HWND_TOP,
					0,
					nLVTop - 2,
					m_nTreeViewWidth,
					nLVBottom + 2, SWP_SHOWWINDOW);
				SetWindowPos(m_ListView.m_hWnd, HWND_TOP,
					0 + (m_nTreeViewWidth + APP_SPLIT_SIZE),
					nLVTop - 2,
					nWidth - (m_nTreeViewWidth + APP_SPLIT_SIZE),
					nLVBottom + 2, SWP_SHOWWINDOW);
			}
			else
			{
				SetWindowPos(m_TreeView.m_hWnd, HWND_TOP,
					0,
					nLVTop - 2,
					nWidth,
					m_nTreeViewHeight, SWP_SHOWWINDOW);
				SetWindowPos(m_ListView.m_hWnd, HWND_TOP,
					0,
					(nLVTop - 2) + (m_nTreeViewHeight + APP_SPLIT_SIZE),
					nWidth,
					(nLVBottom + 2) - (m_nTreeViewHeight + APP_SPLIT_SIZE), SWP_SHOWWINDOW);
			}
		}
		else
			SetWindowPos(m_ListView.m_hWnd, HWND_TOP, 0, nLVTop - 2 , nWidth, nLVBottom + 2, SWP_SHOWWINDOW);
	
	}
	else
	{
		if (m_bShowFolder)
		{
			if(m_bViewSide)
			{
				MoveWindow(m_TreeView.m_hWnd,
					0,
					nLVTop,
					m_nTreeViewWidth,
					nLVBottom, TRUE);
				MoveWindow(m_ListView.m_hWnd,
					0 + (m_nTreeViewWidth + APP_SPLIT_SIZE),
					nLVTop,
					nWidth - (m_nTreeViewWidth + APP_SPLIT_SIZE),
					nLVBottom, TRUE);
			}
			else
			{
				MoveWindow(m_TreeView.m_hWnd,
					0,
					nLVTop,
					nWidth,
					m_nTreeViewHeight, TRUE);
				MoveWindow(m_ListView.m_hWnd,
					0,
					nLVTop + (m_nTreeViewHeight + APP_SPLIT_SIZE),
					nWidth,
					nLVBottom - (m_nTreeViewHeight + APP_SPLIT_SIZE), TRUE);
			}
		}
		else
			MoveWindow(m_ListView.m_hWnd, 0, nLVTop , nWidth, nLVBottom, TRUE);
	}
//MOD END
#else
	//僒僀僘傪挷惍
	RECT rctCB, rctSB;

	GetWindowRect(m_CmdBands.m_hWnd, &rctCB);
	if (m_bShowStatusWnd)
	{
		GetWindowRect(m_StatusWnd.m_hWnd, &rctSB);
		if (m_bShowFolder) {

			//MOD START TODA
			if(m_bViewSide) {
				MoveWindow(m_TreeView.m_hWnd,
								0,
								RECT_HEIGHT(&rctCB),
								m_nTreeViewWidth,
								nHeight - RECT_HEIGHT(&rctCB) - RECT_HEIGHT(&rctSB), TRUE);
				MoveWindow(m_ListView.m_hWnd,
								m_nTreeViewWidth + APP_SPLIT_SIZE,
								RECT_HEIGHT(&rctCB),
								nWidth - (m_nTreeViewWidth + APP_SPLIT_SIZE),
								nHeight - RECT_HEIGHT(&rctCB) - RECT_HEIGHT(&rctSB), TRUE);
			} else {
				MoveWindow(m_TreeView.m_hWnd,
								0,
								RECT_HEIGHT(&rctCB),
								nWidth,
								m_nTreeViewHeight, TRUE);
				MoveWindow(m_ListView.m_hWnd,
								0,
								RECT_HEIGHT(&rctCB) + (m_nTreeViewHeight + APP_SPLIT_SIZE),
								nWidth,
								nHeight - RECT_HEIGHT(&rctCB) - RECT_HEIGHT(&rctSB) - (m_nTreeViewHeight + APP_SPLIT_SIZE), TRUE);
			}
			//MOD END
		}
		else {
			MoveWindow(m_ListView.m_hWnd, 0, RECT_HEIGHT(&rctCB),
							nWidth, nHeight - RECT_HEIGHT(&rctCB) - RECT_HEIGHT(&rctSB), TRUE);
		}
		//ADD TODA (僗僥乕僞僗僶乕偺僒僀僘/埵抲挷惍)
		MoveWindow(m_StatusWnd.m_hWnd, 0, nHeight - (rctSB.bottom - rctSB.top),
					nWidth, (rctSB.bottom - rctSB.top), TRUE);
	}
	else
	{
		if (m_bShowFolder) {
			//MOD START TODA
			if(m_bViewSide) {
				MoveWindow(m_TreeView.m_hWnd,
							0,
							RECT_HEIGHT(&rctCB),
							m_nTreeViewWidth,
							nHeight - RECT_HEIGHT(&rctCB), TRUE);
				MoveWindow(m_ListView.m_hWnd,
							m_nTreeViewWidth + APP_SPLIT_SIZE,
							rctCB.bottom - rctCB.top,
							nWidth  - (m_nTreeViewWidth + APP_SPLIT_SIZE),
							nHeight - RECT_HEIGHT(&rctCB), TRUE);
			} else {
				MoveWindow(m_TreeView.m_hWnd,
							0,
							RECT_HEIGHT(&rctCB),
							nWidth,
							m_nTreeViewHeight, TRUE);
				MoveWindow(m_ListView.m_hWnd,
							0,
							RECT_HEIGHT(&rctCB) + (m_nTreeViewHeight + APP_SPLIT_SIZE),
							nWidth,
							nHeight - RECT_HEIGHT(&rctCB) - (m_nTreeViewHeight + APP_SPLIT_SIZE), TRUE);
			}
			//MOD END
		}
		else {
			MoveWindow(m_ListView.m_hWnd, 0, RECT_HEIGHT(&rctCB),
							nWidth, nHeight - RECT_HEIGHT(&rctCB), TRUE);
		}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -