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