LRESULT CALLBACK Explorerplusplus::EditSubclass(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam) { switch(msg) { case WM_KEYDOWN: switch(wParam) { case VK_RETURN: SendMessage(m_hContainer,CBN_KEYDOWN,VK_RETURN,0); return 0; break; } break; case WM_SETFOCUS: HandleToolbarItemStates(); break; case WM_MOUSEWHEEL: if(OnMouseWheel(MOUSEWHEEL_SOURCE_OTHER,wParam,lParam)) { return 0; } break; } return DefSubclassProc(hwnd,msg,wParam,lParam); }
void Explorerplusplus::UpdateWindowStates(void) { m_pActiveShellBrowser->QueryCurrentDirectory(SIZEOF_ARRAY(m_CurrentDirectory),m_CurrentDirectory); HandleMainWindowText(); HandleAddressBarText(); HandleToolbarItemStates(); HandleTabText(); HandleTreeViewSelection(); HandleStatusText(); HandleTabToolbarItemStates(); HandleFileSelectionDisplay(); if(m_bShowFolders) SendMessage(m_hMainToolbar,TB_CHECKBUTTON,(WPARAM)TOOLBAR_FOLDERS,(LPARAM)TRUE); }
LRESULT CALLBACK Explorerplusplus::TreeViewSubclass(HWND hwnd,UINT uMsg, WPARAM wParam,LPARAM lParam) { switch(uMsg) { case WM_SETFOCUS: HandleToolbarItemStates(); break; case WM_MBUTTONDOWN: { TVHITTESTINFO tvhi; tvhi.pt.x = LOWORD(lParam); tvhi.pt.y = HIWORD(lParam); TreeView_HitTest(m_hTreeView,&tvhi); if(tvhi.flags != LVHT_NOWHERE && tvhi.hItem != NULL) { m_hTVMButtonItem = tvhi.hItem; } else { m_hTVMButtonItem = NULL; } } break; case WM_MBUTTONUP: { TVHITTESTINFO tvhi; LPITEMIDLIST pidl = NULL; tvhi.pt.x = LOWORD(lParam); tvhi.pt.y = HIWORD(lParam); TreeView_HitTest(m_hTreeView,&tvhi); if(tvhi.flags != LVHT_NOWHERE && tvhi.hItem != NULL) { /* Only open an item if it was the one on which the middle mouse button was initially clicked on. */ if(tvhi.hItem == m_hTVMButtonItem) { pidl = m_pMyTreeView->BuildPath(tvhi.hItem); BrowseFolder(pidl,SBSP_ABSOLUTE,TRUE,FALSE,FALSE); CoTaskMemFree(pidl); } } } break; case WM_MOUSEWHEEL: if(OnMouseWheel(MOUSEWHEEL_SOURCE_TREEVIEW,wParam,lParam)) { return 0; } break; } return DefSubclassProc(hwnd,uMsg,wParam,lParam); }