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

📄 mainwnd.cpp

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

///////////////////////////////////////////////////////////////
void CMainWnd::OnClose()
{
	SaveSettings();
	m_CmdBands.Destroy();
	m_StatusWnd.Destroy();
	m_ListView.Destroy();
	m_TreeView.Destroy();	//ADD TODA
	DestroyWindow(m_hWnd);
}

///////////////////////////////////////////////////////////////
void CMainWnd::OnEditCtrlOn()
{
	if (m_bShiftKey)
	{
		keybd_event(VK_SHIFT, 0x1e, KEYEVENTF_KEYUP, 1);
		m_bShiftKey = !m_bShiftKey;
	}

	keybd_event(VK_CONTROL, 0x1e, m_bControlKey?KEYEVENTF_KEYUP:0, 1);
	m_bControlKey = !m_bControlKey;

	m_CmdBands.SetCheckKeyOn(m_bControlKey, m_bShiftKey);
}
///////////////////////////////////////////////////////////////
void CMainWnd::OnEditShiftOn()
{
	if (m_bControlKey)
	{
		keybd_event(VK_CONTROL, 0x1e, KEYEVENTF_KEYUP, 1);
		m_bControlKey = !m_bControlKey;
	}

	keybd_event(VK_SHIFT, 0x1e, m_bShiftKey?KEYEVENTF_KEYUP:0, 1);
	m_bShiftKey = !m_bShiftKey;

	m_CmdBands.SetCheckKeyOn(m_bControlKey, m_bShiftKey);
}
//ADD START TODA
///////////////////////////////////////////////////////////////
void CMainWnd::OnDragDropMode()
{
	m_bDragDrop = !m_bDragDrop;
	m_CmdBands.SetCheckDragDrop(m_bDragDrop);
}
//ADD END
///////////////////////////////////////////////////////////////
void CMainWnd::SaveSettings()
{
	HKEY hKey = 0;
	DWORD dwDisposition;

	//僉乕愝掕
	if (RegCreateKeyEx(HKEY_CURRENT_USER, REG_KEY_SETTINGS,
			0, _T(""), REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, &dwDisposition) == ERROR_SUCCESS)
	{
		BYTE lpData[MAX_PATH*2];

#if !defined(__POCKET_PC) && (_WIN32_WCE >= 400)
		//僂傿儞僪僂埵抲丒僒僀僘丒忬懺庢摼
		//仸尰忬偆傑偔摦嶌偟偰偄側偄偺偱巄掕斉
		if(m_bOverLapped && m_nMainWndStyle <= 2)
		{
			//僂傿儞僪僂忬懺庢摼
			LONG style = GetWindowLong(m_hWnd, GWL_STYLE);
			if((style & WS_THICKFRAME) == 0) {
				m_nMainWndStyle = MAINWND_MAXIMUM;	//嵟戝壔
			} else {
				m_nMainWndStyle = MAINWND_NOMAL;	//捠忢
			}
			//堦抂僂傿儞僪僂傪旕昞帵偵偟偰儕僗僩傾偡傞
			::ShowWindow(m_hWnd, SW_HIDE);
			::ShowWindow(m_hWnd, SW_RESTORE);
			//僂傿儞僪僂埵抲庢摼
			RECT rc;
			if(GetWindowRect(m_hWnd, &rc)) {
				m_nMainWndTop = rc.top;
				m_nMainWndLeft = rc.left;
				m_nMainWndWidth = rc.right - rc.left;
				m_nMainWndHeight = rc.bottom - rc.top;
			}
		}
		else
		{
			if(m_nMainWndStyle <= 2) m_nMainWndStyle += 90;
		}
		//m_nMainWndTop
		memcpy(lpData, &m_nMainWndTop, sizeof(DWORD));
		RegSetValueEx(hKey, _T("MainWndTop"), 0, REG_DWORD, lpData, sizeof(DWORD));
		//m_nMainWndLeft
		memcpy(lpData, &m_nMainWndLeft, sizeof(DWORD));
		RegSetValueEx(hKey, _T("MainWndLeft"), 0, REG_DWORD, lpData, sizeof(DWORD));
		//m_nMainWndWidth
		memcpy(lpData, &m_nMainWndWidth, sizeof(DWORD));
		RegSetValueEx(hKey, _T("MainWndWidth"), 0, REG_DWORD, lpData, sizeof(DWORD));
		//m_nMainWndHeight
		memcpy(lpData, &m_nMainWndHeight, sizeof(DWORD));
		RegSetValueEx(hKey, _T("MainWndHeight"), 0, REG_DWORD, lpData, sizeof(DWORD));
		//m_nMainWndStyle
		memcpy(lpData, &m_nMainWndStyle, sizeof(DWORD));
		RegSetValueEx(hKey, _T("MainWndStyle"), 0, REG_DWORD, lpData, sizeof(DWORD));
#endif

		//m_nTreeViewWidth;
		memcpy(lpData, &m_nTreeViewWidth, sizeof(DWORD));
		RegSetValueEx(hKey, _T("TreeViewWidth"), 0, REG_DWORD, lpData, sizeof(DWORD));

		//m_nTreeViewHeight;
		memcpy(lpData, &m_nTreeViewHeight, sizeof(DWORD));
		RegSetValueEx(hKey, _T("TreeViewHeight"), 0, REG_DWORD, lpData, sizeof(DWORD));

		//m_bShowStatusWnd
		memcpy(lpData, &m_bShowStatusWnd, sizeof(DWORD));
		RegSetValueEx(hKey, _T("ShowStatusWnd"), 0, REG_DWORD, lpData, sizeof(DWORD));

		//m_bShowFolder
		memcpy(lpData, &m_bShowFolder, sizeof(DWORD));
		RegSetValueEx(hKey, _T("ShowFolder"), 0, REG_DWORD, lpData, sizeof(DWORD));

		//m_bViewSide
		memcpy(lpData, &m_bViewSide, sizeof(DWORD));
		RegSetValueEx(hKey, _T("ViewSide"), 0, REG_DWORD, lpData, sizeof(DWORD));

		//m_bDragDrop
		memcpy(lpData, &m_bDragDrop, sizeof(DWORD));
		RegSetValueEx(hKey, _T("DragDrop"), 0, REG_DWORD, lpData, sizeof(DWORD));

		//m_bCheckQAdd
		memcpy(lpData, &m_bCheckQAdd, sizeof(DWORD));
		RegSetValueEx(hKey, _T("CheckQAdd"), 0, REG_DWORD, lpData, sizeof(DWORD));

		//m_bOverLapped
		memcpy(lpData, &m_bOverLapped, sizeof(DWORD));
		RegSetValueEx(hKey, _T("OverLapped"), 0, REG_DWORD, lpData, sizeof(DWORD));

		//m_bContextMenu
		memcpy(lpData, &m_bContextMenu, sizeof(DWORD));
		RegSetValueEx(hKey, _T("ContextMenu"), 0, REG_DWORD, lpData, sizeof(DWORD));

		//m_bFontChange
		memcpy(lpData, &m_bFontChange, sizeof(DWORD));
		RegSetValueEx(hKey, _T("FontChange"), 0, REG_DWORD, lpData, sizeof(DWORD));

		//m_nFontSize;
		memcpy(lpData, &m_nFontSize, sizeof(DWORD));
		RegSetValueEx(hKey, _T("FontSize"), 0, REG_DWORD, lpData, sizeof(DWORD));

		//m_szFontName
		memcpy(lpData, &m_szFontName, sizeof(m_szFontName));
		RegSetValueEx(hKey, _T("FontName"), 0, REG_SZ, lpData, ((wcslen(m_szFontName)+1) * sizeof(TCHAR)));

		//m_szFavoritesPath
		memcpy(lpData, &m_szFavoritesPath, sizeof(m_szFavoritesPath));
		RegSetValueEx(hKey, _T("FavoritesPath"), 0, REG_SZ, lpData, ((wcslen(m_szFavoritesPath)+1) * sizeof(TCHAR)));

		//m_szDesktopPath
		memcpy(lpData, &m_szDesktopPath, sizeof(m_szDesktopPath));
		RegSetValueEx(hKey, _T("DesktopPath"), 0, REG_SZ, lpData, ((wcslen(m_szDesktopPath)+1) * sizeof(TCHAR)));

		//m_szStartMenuPath
		memcpy(lpData, &m_szStartMenuPath, sizeof(m_szStartMenuPath));
		RegSetValueEx(hKey, _T("StartMenuPath"), 0, REG_SZ, lpData, ((wcslen(m_szStartMenuPath)+1) * sizeof(TCHAR)));

		//m_szMyDocumentPath
		memcpy(lpData, &m_szMyDocumentPath, sizeof(m_szMyDocumentPath));
		RegSetValueEx(hKey, _T("MyDocumentPath"), 0, REG_SZ, lpData, ((wcslen(m_szMyDocumentPath)+1) * sizeof(TCHAR)));

		//m_szNetworkPath
		memcpy(lpData, &m_szNetworkPath, sizeof(m_szNetworkPath));
		RegSetValueEx(hKey, _T("NetworkPath"), 0, REG_SZ, lpData, ((wcslen(m_szNetworkPath)+1) * sizeof(TCHAR)));

		//m_szSendAppPath[MAX_PATH];
		memcpy(lpData, &m_szSendAppPath, sizeof(m_szSendAppPath));
		RegSetValueEx(hKey, _T("SendAppPath"), 0, REG_SZ, lpData, ((wcslen(m_szSendAppPath)+1) * sizeof(TCHAR)));

		RegCloseKey(hKey);
	}
}

///////////////////////////////////////////////////////////////
void CMainWnd::GetSettings()
{
	HKEY hKey = 0;
	DWORD dwDisposition;

	//僉乕抣庢摼
	if (RegCreateKeyEx(HKEY_CURRENT_USER, REG_KEY_SETTINGS,
				0, _T(""), REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, &dwDisposition) == ERROR_SUCCESS)
	{
		DWORD dwType;
		DWORD dwDataSize;
		BYTE bData[MAX_PATH*2];

#if !defined(__POCKET_PC) && (_WIN32_WCE >= 400)
		//m_nMainWndTop
		dwType = REG_DWORD;
		dwDataSize = sizeof(bData);
		if (RegQueryValueEx(hKey, _T("MainWndTop"), 0, &dwType, bData, &dwDataSize) == ERROR_SUCCESS)
			memcpy(&m_nMainWndTop, bData, dwDataSize);

		//m_nMainWndLeft
		dwType = REG_DWORD;
		dwDataSize = sizeof(bData);
		if (RegQueryValueEx(hKey, _T("MainWndLeft"), 0, &dwType, bData, &dwDataSize) == ERROR_SUCCESS)
			memcpy(&m_nMainWndLeft, bData, dwDataSize);
		
		//m_nMainWndWidth
		dwType = REG_DWORD;
		dwDataSize = sizeof(bData);
		if (RegQueryValueEx(hKey, _T("MainWndWidth"), 0, &dwType, bData, &dwDataSize) == ERROR_SUCCESS)
			memcpy(&m_nMainWndWidth, bData, dwDataSize);

		//m_nMainWndHeight
		dwType = REG_DWORD;
		dwDataSize = sizeof(bData);
		if (RegQueryValueEx(hKey, _T("MainWndHeight"), 0, &dwType, bData, &dwDataSize) == ERROR_SUCCESS)
			memcpy(&m_nMainWndHeight, bData, dwDataSize);

		//m_nMainWndStyle
		dwType = REG_DWORD;
		dwDataSize = sizeof(bData);
		if (RegQueryValueEx(hKey, _T("MainWndStyle"), 0, &dwType, bData, &dwDataSize) == ERROR_SUCCESS)
			memcpy(&m_nMainWndStyle, bData, dwDataSize);
#endif

		//m_nTreeViewWidth
		dwType = REG_DWORD;
		dwDataSize = sizeof(bData);
		if (RegQueryValueEx(hKey, _T("TreeViewWidth"), 0, &dwType, bData, &dwDataSize) == ERROR_SUCCESS)
			memcpy(&m_nTreeViewWidth, bData, dwDataSize);

		//m_nTreeViewHeight
		dwType = REG_DWORD;
		dwDataSize = sizeof(bData);
		if (RegQueryValueEx(hKey, _T("TreeViewHeight"), 0, &dwType, bData, &dwDataSize) == ERROR_SUCCESS)
			memcpy(&m_nTreeViewHeight, bData, dwDataSize);

		//m_bShowStatusWnd
		dwType = REG_DWORD;
		dwDataSize = sizeof(bData);
		if (RegQueryValueEx(hKey, _T("ShowStatusWnd"), 0, &dwType, bData, &dwDataSize) == ERROR_SUCCESS)
			memcpy(&m_bShowStatusWnd, bData, dwDataSize);

		//m_bShowFolder
		dwType = REG_DWORD;
		dwDataSize = sizeof(bData);
		if (RegQueryValueEx(hKey, _T("ShowFolder"), 0, &dwType, bData, &dwDataSize) == ERROR_SUCCESS)
			memcpy(&m_bShowFolder, bData, dwDataSize);

		//m_bViewSide
		dwType = REG_DWORD;
		dwDataSize = sizeof(bData);
		if (RegQueryValueEx(hKey, _T("ViewSide"), 0, &dwType, bData, &dwDataSize) == ERROR_SUCCESS)
			memcpy(&m_bViewSide, bData, dwDataSize);

		//m_bDragDrop
		dwType = REG_DWORD;
		dwDataSize = sizeof(bData);
		if (RegQueryValueEx(hKey, _T("DragDrop"), 0, &dwType, bData, &dwDataSize) == ERROR_SUCCESS)
			memcpy(&m_bDragDrop, bData, dwDataSize);

		//m_bCheckQAdd
		dwType = REG_DWORD;
		dwDataSize = sizeof(bData);
		if (RegQueryValueEx(hKey, _T("CheckQAdd"), 0, &dwType, bData, &dwDataSize) == ERROR_SUCCESS)
			memcpy(&m_bCheckQAdd, bData, dwDataSize);

		//m_bOverLapped
		dwType = REG_DWORD;
		dwDataSize = sizeof(bData);
		if (RegQueryValueEx(hKey, _T("OverLapped"), 0, &dwType, bData, &dwDataSize) == ERROR_SUCCESS)
			memcpy(&m_bOverLapped, bData, dwDataSize);

		//m_bContextMenu
		dwType = REG_DWORD;
		dwDataSize = sizeof(bData);
		if (RegQueryValueEx(hKey, _T("ContextMenu"), 0, &dwType, bData, &dwDataSize) == ERROR_SUCCESS)
			memcpy(&m_bContextMenu, bData, dwDataSize);

		//m_bFontChange
		dwType = REG_DWORD;
		dwDataSize = sizeof(bData);
		if (RegQueryValueEx(hKey, _T("FontChange"), 0, &dwType, bData, &dwDataSize) == ERROR_SUCCESS)
			memcpy(&m_bFontChange, bData, dwDataSize);

		//m_nFontSize
		dwType = REG_DWORD;
		dwDataSize = sizeof(bData);
		if (RegQueryValueEx(hKey, _T("FontSize"), 0, &dwType, bData, &dwDataSize) == ERROR_SUCCESS)
			memcpy(&m_nFontSize, bData, dwDataSize);

		//m_szFontName
		dwType = REG_SZ;
		dwDataSize = sizeof(bData);
		if (RegQueryValueEx(hKey, _T("FontName"), 0, &dwType, bData, &dwDataSize) == ERROR_SUCCESS)
			memcpy(&m_szFontName, bData, dwDataSize);

		//m_szFavoritesPath
		dwType = REG_SZ;
		dwDataSize = sizeof(bData);
		if (RegQueryValueEx(hKey, _T("FavoritesPath"), 0, &dwType, bData, &dwDataSize) == ERROR_SUCCESS)
			memcpy(&m_szFavoritesPath, bData, dwDataSize);

		//m_szDesktopPath
		dwType = REG_SZ;
		dwDataSize = sizeof(bData);
		if (RegQueryValueEx(hKey, _T("DesktopPath"), 0, &dwType, bData, &dwDataSize) == ERROR_SUCCESS)
			memcpy(&m_szDesktopPath, bData, dwDataSize);

		//m_szStartMenuPath
		dwType = REG_SZ;
		dwDataSize = sizeof(bData);
		if (RegQueryValueEx(hKey, _T("StartMenuPath"), 0, &dwType, bData, &dwDataSize) == ERROR_SUCCESS)
			memcpy(&m_szStartMenuPath, bData, dwDataSize);

		//m_szNetworkPath
		dwType = REG_SZ;
		dwDataSize = sizeof(bData);
		if (RegQueryValueEx(hKey, _T("NetworkPath"), 0, &dwType, bData, &dwDataSize) == ERROR_SUCCESS)
			memcpy(&m_szNetworkPath, bData, dwDataSize);

		//m_szMyDocumentPath
		dwType = REG_SZ;
		dwDataSize = sizeof(bData);
		if (RegQueryValueEx(hKey, _T("MyDocumentPath"), 0, &dwType, bData, &dwDataSize) == ERROR_SUCCESS) {
			memcpy(&m_szMyDocumentPath, bData, dwDataSize);
			if(wcslen(m_szMyDocumentPath)!=0)
				m_lpszMyDocument = wcsrchr(m_szMyDocumentPath, _T('\\'))+1;
		}

		//m_szSendAppPath
		dwType = REG_SZ;
		dwDataSize = sizeof(bData);
		if (RegQueryValueEx(hKey, _T("SendAppPath"), 0, &dwType, bData, &dwDataSize) == ERROR_SUCCESS) {
			memcpy(&m_szSendAppPath, bData, dwDataSize);
			if(wcslen(m_szStartMenuPath)!=0)
				m_lpszStartMenu = wcsrchr(m_szStartMenuPath, _T('\\'))+1;
		}

		RegCloseKey(hKey);
	}
}
///////////////////////////////////////////////////////////////
void CMainWnd::OnViewStatusBar()
{
	m_bShowStatusWnd = !m_bShowStatusWnd;
	::ShowWindow(m_StatusWnd.m_hWnd, m_bShowStatusWnd?SW_SHOW:SW_HIDE);

	//儊僯儏乕偵僠僃僢僋傪偮偗傞
	m_CmdBands.SetCheckViewStatusWnd(m_bShowStatusWnd);

	//昞帵僒僀僘偺挷惍
	RecalcLayout();
}
//ADD START TODA
///////////////////////////////////////////////////////////////
void CMainWnd::OnViewFolder()
{
	m_bShowFolder = !m_bShowFolder;

	if (m_bShowFolder)
		::ShowWindow(m_TreeView.m_hWnd, SW_SHOW);
	else {
		::ShowWindow(m_TreeView.m_hWnd, SW_HIDE);
		SetFocus(m_ListView.m_hWnd);
	}

	//儊僯儏乕偵僠僃僢僋傪偮偗傞
	m_CmdBands.SetCheckViewFolder(m_bShowFolder);

	//昞帵僒僀僘偺挷惍
	RecalcLayout();
}
///////////////////////////////////////////////////////////////
void CMainWnd::OnViewSide()
{
#if defined(__POCKET_PC)||defined(__PALMSIZE_PC)
	m_bViewSide = !m_bViewSide;

	//儊僯儏乕偵僠僃僢僋傪偮偗傞
	m_CmdBands.SetCheckViewSide(m_bViewSide);		//ADD TODA

	//昞帵僒僀僘偺挷惍
	RecalcLayout();
#endif
}
///////////////////////////////////////////////////////////////
void CMainWnd::OnViewUpdate(LPCTSTR lpszPath)
{
	//僣儕乕價儏乕峏怴
	m_TreeView.LoadFolderTree();
	
	//儕僗僩價儏乕峏怴
	m_ListView.OnViewUpdate(lpszPath);

	//憲傞儊僯儏乕峏怴
	m_ListView.InitOpenAppMenu();

	//偍婥偵擖傝儊僯儏乕峏怴
	m_ListView.InitFavoritesMenu();

	//夋柺峏怴
	InvalidateRect(m_hWnd, NULL, FALSE);
}

///////////////////////////////////////////////////////////////
BOOL CMainWnd::NetworkFolderCreate(BOOL bMsg)
{
	HKEY hKey = 0;
	DWORD dwDisposition;
	DWORD dwFSRoot=0;

	//撉傒崬傒
	if (RegCreateKeyEx(HKEY_LOCAL_MACHINE, _T("Comm\\Redir"),
			0, _T(""), REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, &dwDisposition) == ERROR_SUCCESS)
	{
		DWORD dwType = REG_DWORD;
		BYTE bData[MAX_PATH*2];
		DWORD dwDataSize = sizeof(bData);
		if (RegQueryValueEx(hKey, _T("RegisterFSRoot"), 0, &dwType, bData, &dwDataSize) == ERROR_SUCCESS)
			memcpy(&dwFSRoot, bData, dwDataSize);
	}

	//愝掕嵪傒偺応崌
	if(dwFSRoot) return TRUE;

	//儊僢僙乕僕昞帵桳傝偺応崌
	if(bMsg)
	{
		if(IDNO==MessageBox(m_hWnd, IDS_MSG_NETFOLDER_YESNO, IDS_TITLE_NETFOLDER, MB_YESNO|MB_ICONQUESTION))
			return FALSE;
	}

	//愝掕
	if (RegCreateKeyEx(HKEY_LOCAL_MACHINE, _T("Comm\\Redir"),
			0, _T(""), REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, &dwDisposition) == ERROR_SUCCESS)
	{
		BYTE lpData[MAX_PATH*2];
		dwFSRoot = 1;
		memcpy(lpData, &dwFSRoot, sizeof(DWORD));
		RegSetValueEx(hKey, _T("RegisterFSRoot"), 0, REG_DWORD, lpData, sizeof(DWORD));

		//儊僢僙乕僕昞帵桳傝偺応崌
		if(bMsg)
		{
			MessageBox(m_hWnd, IDS_MSG_NETFOLDER_DONE, IDS_TITLE_NETFOLDER, MB_OK|MB_ICONWARNING);
		}
	}

	return FALSE;
}

///////////////////////////////////////////////////////////////
void CMainWnd::OnNetworkDriveConnect()
{
	//僱僢僩儚乕僋僼僅儖僟僠僃僢僋張棟
	if(!NetworkFolderCreate(TRUE)) return;

	//僷儔儊乕僞弶婜壔
	NETRESOURCE nr;
	nr.dwType = RESOURCETYPE_DISK;
	nr.lpRemoteName = NULL;
	nr.lpLocalName = NULL;
	nr.lpProvider = NULL;
	CONNECTDLGSTRUCT cs;
	cs.cbStructure = sizeof(cs);
	cs.hwndOwner = m_hWnd;
	cs.lpConnRes = &nr;
	cs.dwFlags = 0;

	//僱僢僩儚乕僋愙懕僟僀傾儘僌昞帵
	DWORD dwResult;
	if(0xFFFFFFFF != (dwResult=WNetConnectionDialog1(&cs)))
	{
		//僄儔乕帪
		if(dwResult != WN_SUCCESS)
			MessageBox(m_hWnd, IDS_MSG_NTDRIVE_CON, NULL, MB_OK|MB_ICONSTOP);
		//惓忢帪
		else
			//昞帵傪峏怴
			OnViewUpdate();
	}
}
///////////////////////////////////////////////////////////////
void CMainWnd::OnNetworkDriveDisconnect()
{
	//僱僢僩儚乕僋愗抐僟僀傾儘僌昞帵
	DWORD dwResult;
	if(0xFFFFFFFF != (dwResult=WNetDisconnectDialog(m_hWnd, 0)))
	{
		//僄儔乕帪
		if(dwResult != ERROR_SUCCESS)
			MessageBox(m_hWnd, IDS_MSG_NTDRIVE_DCON, NULL, MB_OK|MB_ICONSTOP);
		//惓忢帪
		else

⌨️ 快捷键说明

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