📄 mainwnd.cpp
字号:
}
#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 + -