⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mytreectrl.cpp

📁 是自己开发的程序
💻 CPP
📖 第 1 页 / 共 3 页
字号:
            case WXK_F13: key = wxT("F13"); break;            case WXK_F14: key = wxT("F14"); break;            case WXK_F15: key = wxT("F15"); break;            case WXK_F16: key = wxT("F16"); break;            case WXK_F17: key = wxT("F17"); break;            case WXK_F18: key = wxT("F18"); break;            case WXK_F19: key = wxT("F19"); break;            case WXK_F20: key = wxT("F20"); break;            case WXK_F21: key = wxT("F21"); break;            case WXK_F22: key = wxT("F22"); break;            case WXK_F23: key = wxT("F23"); break;            case WXK_F24: key = wxT("F24"); break;            case WXK_NUMLOCK: key = wxT("NUMLOCK"); break;            case WXK_SCROLL: key = wxT("SCROLL"); break;            case WXK_PAGEUP: key = wxT("PAGEUP"); break;            case WXK_PAGEDOWN: key = wxT("PAGEDOWN"); break;            case WXK_NUMPAD_SPACE: key = wxT("NUMPAD_SPACE"); break;            case WXK_NUMPAD_TAB: key = wxT("NUMPAD_TAB"); break;            case WXK_NUMPAD_ENTER: key = wxT("NUMPAD_ENTER"); break;            case WXK_NUMPAD_F1: key = wxT("NUMPAD_F1"); break;            case WXK_NUMPAD_F2: key = wxT("NUMPAD_F2"); break;            case WXK_NUMPAD_F3: key = wxT("NUMPAD_F3"); break;            case WXK_NUMPAD_F4: key = wxT("NUMPAD_F4"); break;            case WXK_NUMPAD_HOME: key = wxT("NUMPAD_HOME"); break;            case WXK_NUMPAD_LEFT: key = wxT("NUMPAD_LEFT"); break;            case WXK_NUMPAD_UP: key = wxT("NUMPAD_UP"); break;            case WXK_NUMPAD_RIGHT: key = wxT("NUMPAD_RIGHT"); break;            case WXK_NUMPAD_DOWN: key = wxT("NUMPAD_DOWN"); break;            case WXK_NUMPAD_PAGEUP: key = wxT("NUMPAD_PAGEUP"); break;            case WXK_NUMPAD_PAGEDOWN: key = wxT("NUMPAD_PAGEDOWN"); break;            case WXK_NUMPAD_END: key = wxT("NUMPAD_END"); break;            case WXK_NUMPAD_BEGIN: key = wxT("NUMPAD_BEGIN"); break;            case WXK_NUMPAD_INSERT: key = wxT("NUMPAD_INSERT"); break;            case WXK_NUMPAD_DELETE: key = wxT("NUMPAD_DELETE"); break;            case WXK_NUMPAD_EQUAL: key = wxT("NUMPAD_EQUAL"); break;            case WXK_NUMPAD_MULTIPLY: key = wxT("NUMPAD_MULTIPLY"); break;            case WXK_NUMPAD_ADD: key = wxT("NUMPAD_ADD"); break;            case WXK_NUMPAD_SEPARATOR: key = wxT("NUMPAD_SEPARATOR"); break;            case WXK_NUMPAD_SUBTRACT: key = wxT("NUMPAD_SUBTRACT"); break;            case WXK_NUMPAD_DECIMAL: key = wxT("NUMPAD_DECIMAL"); break;            default:            {               if ( keycode < 128 && wxIsprint((int)keycode) )                   key.Printf(wxT("'%c'"), (char)keycode);               else if ( keycode > 0 && keycode < 27 )                   key.Printf(_("Ctrl-%c"), wxT('A') + keycode - 1);               else                   key.Printf(wxT("unknown (%ld)"), keycode);            }        }    }    /*wxLogMessage( wxT("%s event: %s (flags = %c%c%c%c)"),                  name,                  key.c_str(),                  event.ControlDown() ? wxT('C') : wxT('-'),                  event.AltDown() ? wxT('A') : wxT('-'),                  event.ShiftDown() ? wxT('S') : wxT('-'),                  event.MetaDown() ? wxT('M') : wxT('-'));*/}void MyTreeCtrl::OnTreeKeyDown(wxTreeEvent& event){    //LogKeyEvent(wxT("Tree key down "), event.GetKeyEvent());    event.Skip();}void MyTreeCtrl::OnBeginDrag(wxTreeEvent& event){    // need to explicitly allow drag    if ( event.GetItem() != GetRootItem() )    {        m_draggedItem = event.GetItem();        wxPoint clientpt = event.GetPoint();        wxPoint screenpt = ClientToScreen(clientpt);        /*wxLogMessage(wxT("OnBeginDrag: started dragging %s at screen coords (%i,%i)"),                     GetItemText(m_draggedItem).c_str(),                     screenpt.x, screenpt.y);*/        event.Allow();    }    else    {        //wxLogMessage(wxT("OnBeginDrag: this item can't be dragged."));    }}void MyTreeCtrl::OnEndDrag(wxTreeEvent& event){    wxTreeItemId itemSrc = m_draggedItem,                 itemDst = event.GetItem();    m_draggedItem = (wxTreeItemId)0l;    // where to copy the item?    if ( itemDst.IsOk() && !ItemHasChildren(itemDst) )    {        // copy to the parent then        itemDst = GetItemParent(itemDst);    }    if ( !itemDst.IsOk() )    {        //(wxT("OnEndDrag: can't drop here."));        return;    }    wxString text = GetItemText(itemSrc);    /*wxLogMessage(wxT("OnEndDrag: '%s' copied to '%s'."),                 text.c_str(), GetItemText(itemDst).c_str());*/    // just do append here - we could also insert it just before/after the item    // on which it was dropped, but this requires slightly more work... we also    // completely ignore the client data and icon of the old item but could    // copy them as well.    //    // Finally, we only copy one item here but we might copy the entire tree if    // we were dragging a folder.    int image = m_showImages ? TreeCtrlIcon_File : -1;    AppendItem(itemDst, text, image);}void MyTreeCtrl::OnBeginLabelEdit(wxTreeEvent& event){    //wxLogMessage(wxT("OnBeginLabelEdit"));    // for testing, prevent this item's label editing    wxTreeItemId itemId = event.GetItem();    if ( IsTestItem(itemId) )    {        //wxMessageBox(wxT("You can't edit this item."));        event.Veto();    }    else if ( itemId == GetRootItem() )    {        // test that it is possible to change the text of the item being edited        SetItemText(itemId, _T("Editing root item"));    }}void MyTreeCtrl::OnEndLabelEdit(wxTreeEvent& event){    //wxLogMessage(wxT("OnEndLabelEdit"));    // don't allow anything except letters in the labels    if ( !event.GetLabel().IsWord() )    {        //wxMessageBox(wxT("The new label should be a single word."));        event.Veto();    }}void MyTreeCtrl::OnItemCollapsing(wxTreeEvent& event){    //wxLogMessage(wxT("OnItemCollapsing"));    // for testing, prevent the user from collapsing the first child folder    wxTreeItemId itemId = event.GetItem();    //if ( IsTestItem(itemId) )    //{        //wxMessageBox(wxT("You can't collapse this item."));    //    event.Veto();    //}}/*void MyTreeCtrl::OnItemActivated(wxTreeEvent& event){    // show some info about this item    wxTreeItemId itemId = event.GetItem();    MyTreeItemData *item = (MyTreeItemData *)GetItemData(itemId);    if ( item != NULL )    {        item->ShowInfo(this);    }	   // wxLogMessage(wxT("OnItemActivated"));}*/void MyTreeCtrl::OnItemMenu(wxTreeEvent& event){    wxTreeItemId itemId = event.GetItem();    //MyTreeItemData *item = itemId.IsOk() ? (MyTreeItemData *)GetItemData(itemId) : NULL;    wxPoint clientpt = event.GetPoint();    //wxPoint screenpt = ClientToScreen(clientpt);    //wxLogMessage(wxT("OnItemMenu for item \"%s\" at screen coords (%i, %i)"),     //             item ? item->GetDesc() : _T(""), screenpt.x, screenpt.y);    ShowMenu(itemId, clientpt);    event.Skip();}void MyTreeCtrl::OnContextMenu(wxContextMenuEvent& event){    wxPoint pt = event.GetPosition();    //wxLogMessage(wxT("OnContextMenu at screen coords (%i, %i)"), pt.x, pt.y);}void MyTreeCtrl::ShowMenu(wxTreeItemId id, const wxPoint& pt){    wxMenu menu;	wxCSConv conv(_("gb2312"));	MyTreeItemData *itemData;            if ( id.IsOk() )    {		itemData = (MyTreeItemData *)GetItemData(id);		wxString desc = itemData->GetDesc();		if(desc.Contains(_T("Root2")))		{			menu.Append(TreeTest_ToDev, wxString("按设备显示 ",conv));            menu.Append(TreeTest_ToReady, wxString("按预案显示 ",conv));			menu.Enable(TreeTest_ToDev,true);			menu.Enable(TreeTest_ToReady,false);		}		if(desc.Contains(_T("Root1"))){			menu.Append(TreeTest_ToDev, wxString("按设备显示 ",conv));            menu.Append(TreeTest_ToReady, wxString("按预案显示 ",conv));			menu.Enable(TreeTest_ToDev,false);			menu.Enable(TreeTest_ToReady,true);		}    }#if wxUSE_MENUS    PopupMenu(&menu, pt);#endif // wxUSE_MENUS}void MyTreeCtrl::OnItemRClick(wxTreeEvent& event){    wxTreeItemId itemId = event.GetItem();    //MyTreeItemData *item = itemId.IsOk() ? (MyTreeItemData *)GetItemData(itemId) : NULL;    //wxLogMessage(wxT("Item \"%s\" right clicked"), item ? item->GetDesc()    //                                                    : _T(""));    event.Skip();}void MyTreeCtrl::OnRMouseDown(wxMouseEvent& event){    //wxLogMessage(wxT("Right mouse button down"));    event.Skip();}void MyTreeCtrl::OnRMouseUp(wxMouseEvent& event){    //wxLogMessage(wxT("Right mouse button up"));    event.Skip();}void MyTreeCtrl::OnRMouseDClick(wxMouseEvent& event){    /*wxTreeItemId id = HitTest(event.GetPosition());    if ( !id )        wxLogMessage(wxT("No item under mouse"));    else    {        MyTreeItemData *item = (MyTreeItemData *)GetItemData(id);        if ( item )            wxLogMessage(wxT("Item '%s' under mouse"), item->GetDesc());    }*/    event.Skip();}static inline const wxChar *Bool2String(bool b){    return b ? wxT("") : wxT("not ");}void MyTreeItemData::ShowInfo(wxTreeCtrl *tree){    /*wxLogMessage(wxT("Item '%s': %sselected, %sexpanded, %sbold,\n")                 wxT("%u children (%u immediately under this item)."),                 m_desc.c_str(),                 Bool2String(tree->IsSelected(GetId())),                 Bool2String(tree->IsExpanded(GetId())),                 Bool2String(tree->IsBold(GetId())),                 unsigned(tree->GetChildrenCount(GetId())),                 unsigned(tree->GetChildrenCount(GetId(), false)));*/}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -