📄 mainwnd.cpp
字号:
{
TCHAR szPath[MAX_PATH];
wcscpy(szPath, m_ListView.m_szCurrentFolder);
//揬傝晅偗慜偺僨傿儗僋僩儕偑側偄応崌丄忋埵僨傿儗僋僩儕傊堏摦
while(GetFileAttributes(szPath) == 0xFFFFFFFF) {
LPTSTR lpszTemp = wcsrchr(szPath, _T('\\'));
if(lpszTemp) *lpszTemp = 0;
} // End of while
//昞帵傪峏怴
OnViewUpdate(szPath);
}
}
}
//ADD END
///////////////////////////////////////////////////////////////
void CMainWnd::OnToolPclink()
{
SHELLEXECUTEINFO sei;
sei.cbSize = sizeof(SHELLEXECUTEINFO);
sei.fMask = 0;
sei.hwnd = m_hWnd;
sei.lpVerb = _T("open");
sei.lpFile = _T("repllog.exe");
sei.lpParameters = NULL;
sei.lpDirectory = m_szWindowsPath;
sei.nShow = SW_SHOW;
sei.hInstApp = g_hInst;
ShellExecuteEx(&sei);
}
///////////////////////////////////////////////////////////////
void CMainWnd::OnToolActivesync()
{
SHELLEXECUTEINFO sei;
sei.cbSize = sizeof(SHELLEXECUTEINFO);
sei.fMask = 0;
sei.hwnd = m_hWnd;
sei.lpVerb = _T("open");
sei.lpFile = _T("async.asy");
sei.lpParameters = NULL;
sei.lpDirectory = m_szWindowsPath;
sei.nShow = SW_SHOW;
sei.hInstApp = g_hInst;
ShellExecuteEx(&sei);
}
///////////////////////////////////////////////////////////////
void CMainWnd::OnToolIRRecive()
{
//MOD START TODA (from GSFinder ver.1.99)
SHELLEXECUTEINFO sei;
sei.cbSize = sizeof(SHELLEXECUTEINFO);
sei.fMask = 0;
sei.hwnd = this->m_hWnd;
sei.lpVerb = _T("open");
sei.lpParameters = NULL;
sei.lpDirectory = m_szWindowsPath;
sei.nShow = SW_SHOW;
sei.hInstApp = g_hInst;
if (GetFileAttributes(_T("\\Windows\\beam.exe")) != 0xFFFFFFFF)
sei.lpFile = _T("beam.exe");
else
sei.lpFile = _T("irsquirt.exe");
ShellExecuteEx(&sei);
//MOD END
}
///////////////////////////////////////////////////////////////
void CMainWnd::SaveModulePath()
{
TCHAR szPath[MAX_PATH];
GetModuleFileName(g_hInst, szPath, MAX_PATH);
HKEY hKey = 0;
DWORD dwDisposition;
//MOD START TODA (from GSFiner ver.1.99)
if (RegCreateKeyEx(HKEY_CURRENT_USER, REG_KEY_GSF, 0,
_T(""), REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, &dwDisposition) == ERROR_SUCCESS)
//MOD END
{
BYTE lpData[MAX_PATH*2];
memcpy(lpData, &szPath, sizeof(szPath));
RegSetValueEx(hKey, _T("Path"), 0, REG_SZ, lpData, sizeof(szPath));
RegCloseKey(hKey);
}
}
///////////////////////////////////////////////////////////////
void CMainWnd::OnActivate(int nActive)
{
if (nActive == WA_INACTIVE) {
m_hwndPrev = GetFocus();
#ifdef __POCKET_PC
m_dwLastSipInfo = GetIMStatus();
#endif
}
else if (nActive == WA_ACTIVE) {
SetFocus(m_hwndPrev);
//DEL START TODA (from GSFiner ver.1.99)
//DWORD dwStatus = GetIMStatus();
//if (m_dwLastSipInfo != dwStatus)
//DEL END
RecalcLayout();
}
}
///////////////////////////////////////////////////////////////
void CMainWnd::OnSettingChange(int nFlag)
{
#ifdef __POCKET_PC
if (nFlag == SPI_SETSIPINFO)
RecalcLayout();
#endif
}
///////////////////////////////////////////////////////////////
void CMainWnd::RecalcLayout()
{
#ifdef __POCKET_PC
SIPINFO si;
memset(&si, 0, sizeof(si));
si.cbSize = sizeof(si);
if (SipGetInfo(&si)) {
if (si.fdwFlags & SIPF_ON) {
OnSize(RECT_WIDTH(&si.rcVisibleDesktop), RECT_HEIGHT(&si.rcVisibleDesktop));
//慖戰偟偰偄傞傕偺傪尒偊傞傛偆偵偡傞
for (int i = 0; i < ListView_GetItemCount(m_ListView.m_hWnd); i++)
{
if (ListView_GetItemState(m_ListView.m_hWnd, i, LVIS_FOCUSED) == LVIS_FOCUSED)
{
ListView_EnsureVisible(m_ListView.m_hWnd, i, FALSE);
break;
}
}
}
else
{
//ADD START TODA (儊僯儏乕偺崅偝傪摦揑偵庢摼)
DWORD y = GetSystemMetrics(SM_CYMENU) + 3;
//ADD END
OnSize(RECT_WIDTH(&si.rcVisibleDesktop), RECT_HEIGHT(&si.rcVisibleDesktop) - y); //MOD TODA (MENU_HEIGHT -> y)
}
}
m_dwLastSipInfo = si.fdwFlags;
#else
RECT rc;
GetClientRect(m_hWnd, &rc);
OnSize(RECT_WIDTH(&rc), RECT_HEIGHT(&rc));
#endif
}
//ADD START TODA
///////////////////////////////////////////////////////////////
void CMainWnd::RecalcBarLayout(WPARAM wParam, LPARAM lParam)
{
//僐儅儞僪僶乕偺僒僀僘挷惍
if(m_CmdBands.m_Settings.bShowToolBar ||
m_CmdBands.m_Settings.bShowAddressBar)
SendMessage(m_CmdBands.m_hWnd, WM_SIZE, wParam, lParam);
//僗僥乕僞僗僶乕偺僒僀僘挷惍
if(m_bShowStatusWnd) {
SendMessage(m_StatusWnd.m_hWnd, WM_SIZE, wParam, lParam);
m_StatusWnd.OnSize(LOWORD(lParam), HIWORD(lParam));
}
}
///////////////////////////////////////////////////////////////
void CMainWnd::OnMouseMove(LPARAM lParam, int nStartPos, int nLastWidth, int nLastHeight)
{
//MOD START TODA (堏摦斖埻愝掕 from Y.Nagamidori)
if(m_bViewSide)
{
int x = LOWORD(lParam);
//堏摦斖埻愝掕(壓尷/忋尷)
int min = 20;
int max = GetSystemMetrics(SM_CXSCREEN) - 20;
//堏摦斖埻僠僃僢僋
if (x > min && x < max)
{
m_nTreeViewWidth = nLastWidth + (x - nStartPos);
RecalcLayout();
}
}
else
{
int y = HIWORD(lParam);
//僣儕乕價儏乕偺嵗昗庢摼(壓尷)
RECT rc;
POINT pt;
GetWindowRect(m_TreeView.m_hWnd, &rc);
pt.x = rc.right;
pt.y = rc.top;
ScreenToClient(m_hWnd, &pt);
int min = pt.y + 20;
//儕僗僩價儏乕偺嵗昗庢摼(忋尷)
GetWindowRect(m_ListView.m_hWnd, &rc);
pt.x = rc.right;
pt.y = rc.bottom;
ScreenToClient(m_hWnd, &pt);
int max = pt.y - 20;
//堏摦斖埻僠僃僢僋
if (y > min && y < max)
{
m_nTreeViewHeight = nLastHeight + (y - nStartPos);
RecalcLayout();
}
}
//MOD END
}
///////////////////////////////////////////////////////////////
//ADD END
//ADD START TODA
///////////////////////////////////////////////////////////////
HIMAGELIST CMainWnd::ListViewImageCreate(LPNMLISTVIEW lpNMLV)
{
HWND hList = m_ListView.m_hWnd;
#ifdef __POCKET_PC
//僀儊乕僕儕僗僩嶌惉
POINT ptImg;
HIMAGELIST hDrag = ListView_CreateDragImage(hList, lpNMLV->iItem, &ptImg);
#else
//僀儊乕僕儕僗僩僗僞僀儖曄峏
DWORD dwStyle = GetWindowLong(hList, GWL_STYLE);
DWORD dwBack = dwStyle;
if((dwBack & LVS_TYPEMASK) == LVS_REPORT)
{
dwStyle &= ~LVS_TYPEMASK;
dwStyle |= LVS_LIST;
SetWindowLong(hList, GWL_STYLE, dwStyle);
}
//僀儊乕僕儕僗僩嶌惉
POINT ptImg;
HIMAGELIST hDrag = ListView_CreateDragImage(hList, lpNMLV->iItem, &ptImg);
//僀儊乕僕儕僗僩僗僞僀儖曄峏(尦偵栠偡)
if((dwBack & LVS_TYPEMASK) == LVS_REPORT)
SetWindowLong(hList, GWL_STYLE, dwBack);
#endif
//僪儔僢僌奐巒
if(ImageList_BeginDrag(hDrag, 0, 0, 0))
{
ImageList_DragEnter(NULL, lpNMLV->ptAction.x, lpNMLV->ptAction.y);
return hDrag;
}
//僄儔乕帪
return 0;
}
///////////////////////////////////////////////////////////////
HIMAGELIST CMainWnd::TreeViewImageCreate(LPNMTREEVIEW lpNMTV)
{
HWND hTree = m_TreeView.m_hWnd;
//僀儊乕僕儕僗僩嶌惉
HIMAGELIST hDrag = TreeView_CreateDragImage(hTree, lpNMTV->itemNew.hItem);
//僪儔僢僌奐巒
if(ImageList_BeginDrag(hDrag, 0, 0, 0))
{
ClientToScreen(hTree, &(lpNMTV->ptDrag));
ImageList_DragEnter(NULL, lpNMTV->ptDrag.x, lpNMTV->ptDrag.y);
return hDrag;
}
//僄儔乕帪
return 0;
}
///////////////////////////////////////////////////////////////
void CMainWnd::ImageLeave()
{
//堏摦慜偺僀儊乕僕儕僗僩傪攋婞
ImageList_DragLeave(NULL);
}
///////////////////////////////////////////////////////////////
void CMainWnd::ImageMove(POINT ptWnd)
{
//僀儊乕僕儕僗僩傪堏摦埵抲傊昤夋
ClientToScreen(m_hWnd, &ptWnd);
ImageList_DragMove(ptWnd.x, ptWnd.y);
ImageList_DragEnter(NULL, ptWnd.x, ptWnd.y);
}
///////////////////////////////////////////////////////////////
void CMainWnd::ImageDestory(HIMAGELIST hDrag)
{
//僀儊乕僕儕僗僩傪攋婞
ImageList_DragLeave(NULL);
ImageList_EndDrag();
ImageList_Destroy(hDrag);
}
///////////////////////////////////////////////////////////////
void CMainWnd::OnBeginDrag(NMHDR* lpNMH)
{
m_hDragWnd = lpNMH->hwndFrom;
//儅僂僗僉儍僾僠儍奐巒
SetCapture(m_hWnd);
//儕僗僩價儏乕偺僪儔僢僌仌僪儘僢僾幚峴敾掕
if(!m_bDragDrop && m_hDragWnd == m_ListView.m_hWnd)
{
if(!m_ListView.m_nSelectItem)
{
m_ListView.m_nSelectStart = ((LPNMLISTVIEW)lpNMH)->iItem;
m_bSelectFlg = TRUE;
return;
}
}
m_bSelectFlg = FALSE;
//僪儔僢僌拞偺僀儊乕僕儕僗僩嶌惉
if(m_hDragWnd == m_ListView.m_hWnd) {
m_hDragImg = ListViewImageCreate((LPNMLISTVIEW)lpNMH);
}
else
if(m_hDragWnd == m_TreeView.m_hWnd) {
LPNMTREEVIEW lpnmv = (LPNMTREEVIEW)lpNMH;
m_hDragImg = TreeViewImageCreate(lpnmv);
m_hDragTree = lpnmv->itemNew.hItem;
}
}
///////////////////////////////////////////////////////////////
void CMainWnd::OnMouseMove(POINT ptWnd)
{
//僪儔僢僌仌僪儘僢僾幚峴敾掕
if(m_bSelectFlg)
{
m_ListView.OnMouseMoveArea(ptWnd);
return;
}
//慜夞偺僀儊乕僕儕僗僩昞帵傪嶍彍
ImageLeave();
//僪儔僢僌拞偺僼僅乕僇僗張棟
m_ListView.OnMouseMove(ptWnd);
m_TreeView.OnMouseMove(ptWnd);
//崱偺嵗昗偱僀儊乕僕儕僗僩傪昞帵
ImageMove(ptWnd);
}
///////////////////////////////////////////////////////////////
void CMainWnd::OnLButtopUp()
{
//儅僂僗僉儍僾僠儍廔椆
ReleaseCapture();
//僪儔僢僌仌僪儘僢僾幚峴敾掕
if(m_bSelectFlg) return;
//僀儊乕僕儕僗僩嶍彍
ImageDestory(m_hDragImg);
//僪儘僢僾帪偺張棟
if(!m_TreeView.OnLButtonUp(m_hDragWnd)) {
m_TreeView.OnDropCansel();
} else {
return;
}
if(!m_ListView.OnLButtonUp(m_hDragWnd)) {
m_ListView.OnDropCansel();
}
}
///////////////////////////////////////////////////////////////
void CMainWnd::OnDropCansel()
{
//儅僂僗僉儍僾僠儍廔椆
ReleaseCapture();
//僪儔僢僌仌僪儘僢僾幚峴敾掕
if(m_bSelectFlg) return;
//僀儊乕僕儕僗僩嶍彍
ImageDestory(m_hDragImg);
//僪儔僢僌傾僀僥儉偺僉儍儞僙儖張棟
m_ListView.OnDropCansel();
m_TreeView.OnDropCansel();
}
///////////////////////////////////////////////////////////////
void CMainWnd::OnSetFocus(HWND hWnd)
{
static HWND hfcsWnd = 0;
//僼僅乕僇僗僂傿儞僪僂偑曄傢偭偨応崌偺傒
// if(hWnd != hfcsWnd) {
if (hWnd == m_TreeView.m_hWnd)
m_TreeView.OnSetFocus();
else
m_ListView.OnItemChanged();
//怴偟偄僴儞僪儖傪曐懚
hfcsWnd = hWnd;
// }
}
///////////////////////////////////////////////////////////////
void CMainWnd::OnDeviceChange(BOOL bDevice, BOOL bStart)
{
static BOOL bNoUpdate = FALSE;
if(bStart)
{
KillTimer(m_hWnd, ID_TIMER_DEVICECHANGE);
SetTimer(m_hWnd, ID_TIMER_DEVICECHANGE, 2000, NULL);
if(bDevice) bNoUpdate = TRUE;
}
else
{
KillTimer(m_hWnd, ID_TIMER_DEVICECHANGE);
//僣儕乕價儏乕偺峏怴(儖乕僩攝壓偺傒)
m_TreeView.SetCurrentFolder(_T(""), TRUE, FALSE);
//儕僗僩價儏乕偺峏怴
TCHAR szPath[MAX_PATH];
wcscpy(szPath, m_ListView.m_szCurrentFolder);
//旕峏怴僼儔僌偑OFF媦傃僷僗偑側偄応崌
if(!bNoUpdate || GetFileAttributes(szPath) == 0xFFFFFFFF)
{
//揬傝晅偗慜偺僨傿儗僋僩儕偑側偄応崌丄忋埵僨傿儗僋僩儕傊堏摦
while(GetFileAttributes(szPath) == 0xFFFFFFFF) {
LPTSTR lpszTemp = wcsrchr(szPath, _T('\\'));
if(lpszTemp)
*lpszTemp = 0;
else
break;
} // End of while
//儕僗僩價儏乕偺峏怴(儖乕僩傊堏摦)
m_ListView.LoadFolderItem(szPath);
}
else
//儖乕僩偺応崌
if(!wcslen(szPath) || wcsicmp(szPath, GetRootName()) == 0)
{
//儕僗僩價儏乕偺峏怴
m_ListView.LoadFolderItem(_T(""));
}
bNoUpdate = FALSE;
}
}
///////////////////////////////////////////////////////////////
void CMainWnd::OnBeginLabelEdit()
{
m_bPaste;
}
///////////////////////////////////////////////////////////////
void CMainWnd::OnEndLabelEdit()
{
}
///////////////////////////////////////////////////////////////
void CMainWnd::SetFont()
{
static HFONT hFont = 0;
int nHeight = 0;
if(hFont)
DeleteObject(hFont);
if(!m_bFontChange)
{
hFont = (HFONT)::GetStockObject(SYSTEM_FONT);
}
else
{
HDC hDC = GetDC(m_hWnd);
int nHeight = (m_nFontSize * GetDeviceCaps(hDC, LOGPIXELSY)) / 72;
ReleaseDC(m_hWnd, hDC);
hFont = MyCreateFont(nHeight, DEFAULT_CHARSET, m_szFontName);
}
SendMessage(m_ListView.m_hWnd, WM_SETFONT, (WPARAM)hFont, MAKELPARAM(TRUE, 0));
SendMessage(m_TreeView.m_hWnd, WM_SETFONT, (WPARAM)hFont, MAKELPARAM(TRUE, 0));
InvalidateRect(m_hWnd, NULL, FALSE);
}
//ADD END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -