wxwidgets проблема евентов в wxTreeCtrl
От: yuretskii  
Дата: 16.01.09 12:23
Оценка:
создал приложение в котором используется дерево (объект wxTreeCtrl)
имею 2 евента для нужной мне операции

EVT_TREE_ITEM_ACTIVATED(ID_GROUP_TREE, TestMainFrame::OnGroupTreeSelected)
EVT_MENU(ID_EDIT_GROUP, TestMainFrame::OnEditGroup)

вот функции


void TestMainFrame::OnEditGroup(wxCommandEvent & event)
{
    EditGroup();    
}


void TestMainFrame::OnGroupTreeSelected(wxTreeEvent & event)
{
    EditGroup();
}



а вот остальное


void TestMainFrame::EditGroup()
{

    item = m_GroupTree->GetSelection();
    
    if(item.IsOk()){
    
        MyTreeItemData * data = (MyTreeItemData *)m_GroupTree->GetItemData(item);
        int id = data->GetID();
        if(id > 0)
        {
            wxString grp_name = data->Get_name();
            wxString grp_desc = data->Get_desc();
            GroupForm * grp = new GroupForm(this);
            grp->SetGroupName(grp_name);
            if(grp_desc.size() > 0) grp->SetGroupDescription(grp_desc);
            if(grp->ShowModal() == wxID_OK)
            {
                int size_name = (grp->GetGroupName()).size();

                wxString name_to_save = grp->GetGroupName();
                wxString desc_to_save = grp->GetGroupDesc();

                if(size_name < 1 || (grp_name == name_to_save && grp_desc == desc_to_save)){
                    wxMessageBox(wxT("Пустые значения не допустимы."));
                }else{
                    db = new DB(db_filename, 0);
                                        
                    db->EditGroup(id, name_to_save, desc_to_save);

                    delete(db);

                    FillTreeGroup();
                }
            }
            grp->Destroy();
        }
    }
    
}




если метод вызывается по клику на меню — все нормально
если даблкликом на итем дерева, то по окончанию срабатывания метода выскакивает ошибка


Windows has triggered a breakpoint in Soft.exe.
This may be due to a corruption of the heap, which indicates a bug in Soft.exe or any of the DLLs it has loaded.
This may also be due to the user pressing F12 while Soft.exe has focus.
The output window may have more diagnostic information.

а в студии подгружается файл window.cpp с курсором в положении выхода из функции(строка 2238)


WXLRESULT wxWindowMSW::MSWDefWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam)
{
    if ( m_oldWndProc )
        return ::CallWindowProc(CASTWNDPROC m_oldWndProc, GetHwnd(), (UINT) nMsg, (WPARAM) wParam, (LPARAM) lParam);
    else
        return ::DefWindowProc(GetHwnd(), nMsg, wParam, lParam);
}



может кто сталкивался???
wxwidgets event wxtreectrl
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.