#ifndef __TREEHANDLER_H__ #define __TREEHANDLER_H__ #include #include "atlbase.h" // must be before atlapp.h #include "atlapp.h" // must be before atlctrls.h #include "atlctrls.h" #include "tvn_debug.h" #include "treeitem.h" #include "debug.h" class TreeHandler { public: virtual ~TreeHandler() { } LRESULT OnItemExpanding(WPARAM wParam, NMHDR *nm, BOOL& bHandled) { NMTREEVIEW *tv= (NMTREEVIEW *)nm; debug("expanding+(%08lx %08lx) %s %08lx %08lx %s\n", wParam, nm, TvActionString(tv->action, TVN_ITEMEXPANDING).c_str(), tv->itemNew.hItem, tv->itemNew.lParam, TvStateString(tv->itemNew.state, tv->itemNew.mask).c_str()); if (tv->action==TVE_EXPAND) { TreeItem *item= (TreeItem*)tv->itemNew.lParam; if (item) item->populate(); } bHandled= true; return 0; } LRESULT OnItemExpanded(WPARAM wParam, NMHDR *nm, BOOL& bHandled) { NMTREEVIEW *tv= (NMTREEVIEW *)nm; debug("expanded(%08lx %08lx) %s %08lx %08lx %s\n", wParam, nm, TvActionString(tv->action, TVN_ITEMEXPANDED).c_str(), tv->itemNew.hItem, tv->itemNew.lParam, TvStateString(tv->itemNew.state, tv->itemNew.mask).c_str()); return 0; } LRESULT OnSelChanging(WPARAM wParam, NMHDR *nm, BOOL& bHandled) { NMTREEVIEW *tv= (NMTREEVIEW *)nm; debug("changing(%08lx %08lx) %s %08lx %08lx %s -> %08lx %08lx %s\n", wParam, nm, TvActionString(tv->action, TVN_SELCHANGING).c_str(), tv->itemOld.hItem, tv->itemOld.lParam, TvStateString(tv->itemOld.state, 0xfe).c_str(), tv->itemNew.hItem, tv->itemNew.lParam, TvStateString(tv->itemNew.state, 0xfe).c_str()); return 0; } LRESULT OnSelChanged(WPARAM wParam, NMHDR *nm, BOOL& bHandled) { NMTREEVIEW *tv= (NMTREEVIEW *)nm; debug("changed(%08lx %08lx) %s %08lx %08lx %s -> %08lx %08lx %s\n", wParam, nm, TvActionString(tv->action, TVN_SELCHANGING).c_str(), tv->itemOld.hItem, tv->itemOld.lParam, TvStateString(tv->itemOld.state, 0xfe).c_str(), tv->itemNew.hItem, tv->itemNew.lParam, TvStateString(tv->itemNew.state, 0xfe).c_str()); return 0; } LRESULT OnKeyDown(WPARAM wParam, NMHDR *nm, BOOL& bHandled) { NMTVKEYDOWN *tv= (NMTVKEYDOWN *)nm; debug("keydown(%08lx %08lx) %04x\n", wParam, nm, tv->wVKey); return 0; } LRESULT OnDeleteItem(WPARAM wParam, NMHDR *nm, BOOL& bHandled) { NMTREEVIEW *tv= (NMTREEVIEW *)nm; debug("deleteitem(%08lx %08lx) %08lx %08lx\n", wParam, nm, tv->itemOld.hItem, tv->itemOld.lParam); return 0; } }; #endif