亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dbtreeview.cpp.txt

?? minidatabase一個小型的數據庫管理系統。有創建數據庫
?? TXT
?? 第 1 頁 / 共 3 頁
字號:
#ifdef _DEBUG    
void CDbTreeView::AssertValid() const   
{   
    CView::AssertValid();   
}   
   
void CDbTreeView::Dump(CDumpContext& dc) const   
{   
    CView::Dump(dc);   
}   
#endif //_DEBUG    
   
/////////////////////////////////////////////////////////////////////////////    
// CDbTreeView message handlers    
   
void CDbTreeView::OnUpdateIndicatorCRLF(CCmdUI* pCmdUI)   
{   
    pCmdUI->SetText(NULL);   
    pCmdUI->Enable(FALSE);   
}   
   
void CDbTreeView::OnUpdateIndicatorOvr(CCmdUI* pCmdUI)   
{   
    pCmdUI->Enable(FALSE);   
}   
   
int CDbTreeView::OnCreate(LPCREATESTRUCT lpCreateStruct)    
{   
    if (CView::OnCreate(lpCreateStruct) == -1)   
        return -1;   
       
    // TODO: Add your specialized creation code here    
    CRect rcClient;   
    GetClientRect(&rcClient);   
       
    // 創建樹形控件    
    DWORD dwStyles = WS_VISIBLE | WS_CHILD   
                   | TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT    
                   | TVS_SHOWSELALWAYS | TVS_INFOTIP | TVS_DISABLEDRAGDROP;   
    rcClient.left += 5;   
    rcClient.top += 5;   
    m_treeCtrl.Create(dwStyles, rcClient, this, IDC_TREE_CTRL);   
   
    m_imageList.Create(IDB_TREE_ICON, 16, 1, RGB(255, 255, 255));   
    m_treeCtrl.SetImageList(&m_imageList, TVSIL_NORMAL);   
   
    return 0;   
}   
   
void CDbTreeView::OnDestroy()    
{   
    ClearTree();   
    CView::OnDestroy();   
}   
   
void CDbTreeView::OnSize(UINT nType, int cx, int cy)    
{   
    CView::OnSize(nType, cx, cy);   
       
    // TODO: Add your message handler code here    
    CRect rcClient;   
    GetClientRect(&rcClient);   
       
    // Tree control    
    rcClient.left += 5;   
    rcClient.top += 5;   
    m_treeCtrl.MoveWindow(rcClient, TRUE);   
}   
   
// 樹事件處理    
void CDbTreeView::OnSelchangedTreeCtrl(NMHDR* pNMHDR, LRESULT* pResult)    
{   
    NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW *)pNMHDR;   
    // TODO: Add your control notification handler code here    
   
    if (pNMTreeView->itemNew.hItem)   
    {   
        NODE_DATA *nd = (NODE_DATA *)m_treeCtrl.GetItemData(pNMTreeView->itemNew.hItem);   
        if (nd)   
        {   
            if (nd->type != DATA_TYPE_TABLE)   
            {   
                HTREEITEM hItem = m_treeCtrl.GetParentItem(pNMTreeView->itemNew.hItem);   
                if (hItem)   
                    nd = (NODE_DATA *)m_treeCtrl.GetItemData(hItem);   
            }   
   
            if (nd->type == DATA_TYPE_TABLE)   
            {   
                CMainFrame *mf = (CMainFrame *)GetParentFrame();   
                mf->m_pEditDbView[1]->PostMessage(WM_SET_DATA, (WPARAM)nd->data, 0);   
            }   
        }   
    }   
       
    *pResult = 0;   
}   
   
void CDbTreeView::OnDblclkTreeCtrl(NMHDR* pNMHDR, LRESULT* pResult)    
{   
    // TODO: Add your control notification handler code here    
    HTREEITEM  hItem = m_treeCtrl.GetSelectedItem();   
    if (hItem)   
    {   
        NODE_DATA *nd = (NODE_DATA *)m_treeCtrl.GetItemData(hItem);   
        if (nd)   
        {   
            switch (nd->type)   
            {   
            case DATA_TYPE_TABLE:   
                PostMessage(WM_COMMAND, ID_EDIT_TABLE, 0);   
                break;   
            case DATA_TYPE_FIELD:   
                PostMessage(WM_COMMAND, ID_EDIT_FIELD, 0);   
                break;   
            case DATA_TYPE_KEY:   
                PostMessage(WM_COMMAND, ID_EDIT_KEY, 0);   
                break;   
            }   
        }   
    }   
       
    *pResult = 0;   
}   
   
void CDbTreeView::OnRclickTreeCtrl(NMHDR* pNMHDR, LRESULT* pResult)    
{   
    // TODO: Add your control notification handler code here    
    POINT ptCursor;   
    ::GetCursorPos(&ptCursor);   
    // 獲取當前鼠標指定的項目    
    {   
        CPoint ptWnd(ptCursor);   
        ::MapWindowPoints(NULL, m_treeCtrl.GetSafeHwnd(), &ptWnd, 1);   
        UINT flags;   
        HTREEITEM  hItem = m_treeCtrl.HitTest(ptWnd, &flags);   
        if (hItem)   
            m_treeCtrl.SelectItem(hItem);   
    }   
    // 彈出菜單    
    CMenu menu, *pSubMenu;   
    int nMenuHeight = GetSystemMetrics(SM_CYMENUSIZE) * 4, cy = GetSystemMetrics(SM_CYSCREEN);   
       
    // Clicking with right button brings up a context menu    
    if (!menu.LoadMenu(IDR_POPUP_FORM)) return;   
    if (!(pSubMenu = menu.GetSubMenu(0))) return;   
   
    // 可以進行的功能    
    HTREEITEM hItem = m_treeCtrl.GetSelectedItem();   
    NODE_DATA *nd = NULL;   
    if (hItem)   
        nd = (NODE_DATA *)m_treeCtrl.GetItemData(hItem);   
   
    if (nd == NULL)   
    {   
        pSubMenu->EnableMenuItem(0, MF_BYPOSITION | MF_GRAYED);   
        pSubMenu->EnableMenuItem(2, MF_BYPOSITION | MF_GRAYED);   
        pSubMenu->EnableMenuItem(4, MF_BYPOSITION | MF_GRAYED);   
        pSubMenu->EnableMenuItem(5, MF_BYPOSITION | MF_GRAYED);   
        pSubMenu->EnableMenuItem(6, MF_BYPOSITION | MF_GRAYED);   
        pSubMenu->EnableMenuItem(8, MF_BYPOSITION | MF_GRAYED);   
        pSubMenu->EnableMenuItem(9, MF_BYPOSITION | MF_GRAYED);   
        pSubMenu->EnableMenuItem(10, MF_BYPOSITION | MF_GRAYED);   
        pSubMenu->EnableMenuItem(12, MF_BYPOSITION | MF_GRAYED);   
        pSubMenu->EnableMenuItem(13, MF_BYPOSITION | MF_GRAYED);   
    }   
    else   
    {   
        HTREEITEM hNext;   
        switch (nd->type)   
        {   
        case DATA_TYPE_TABLE:   
            pSubMenu->EnableMenuItem(4, MF_BYPOSITION | MF_GRAYED);   
            pSubMenu->EnableMenuItem(6, MF_BYPOSITION | MF_GRAYED);   
            pSubMenu->EnableMenuItem(8, MF_BYPOSITION | MF_GRAYED);   
            pSubMenu->EnableMenuItem(10, MF_BYPOSITION | MF_GRAYED);   
            pSubMenu->EnableMenuItem(12, MF_BYPOSITION | MF_GRAYED);   
            pSubMenu->EnableMenuItem(13, MF_BYPOSITION | MF_GRAYED);   
            break;   
        case DATA_TYPE_FIELD:   
            pSubMenu->EnableMenuItem(0, MF_BYPOSITION | MF_GRAYED);   
            pSubMenu->EnableMenuItem(2, MF_BYPOSITION | MF_GRAYED);   
            pSubMenu->EnableMenuItem(8, MF_BYPOSITION | MF_GRAYED);   
            pSubMenu->EnableMenuItem(10, MF_BYPOSITION | MF_GRAYED);   
            if (m_treeCtrl.GetPrevSiblingItem(hItem) == NULL)   
                pSubMenu->EnableMenuItem(12, MF_BYPOSITION | MF_GRAYED);   
            if ((hNext = m_treeCtrl.GetNextSiblingItem(hItem)) == NULL)   
                pSubMenu->EnableMenuItem(13, MF_BYPOSITION | MF_GRAYED);   
            else   
            {   
                NODE_DATA *tmp = (NODE_DATA *)m_treeCtrl.GetItemData(hNext);   
                if (tmp == NULL || tmp->type != DATA_TYPE_FIELD)   
                    pSubMenu->EnableMenuItem(13, MF_BYPOSITION | MF_GRAYED);   
            }   
            break;   
        case DATA_TYPE_KEY:   
            pSubMenu->EnableMenuItem(0, MF_BYPOSITION | MF_GRAYED);   
            pSubMenu->EnableMenuItem(2, MF_BYPOSITION | MF_GRAYED);   
            pSubMenu->EnableMenuItem(4, MF_BYPOSITION | MF_GRAYED);   
            pSubMenu->EnableMenuItem(6, MF_BYPOSITION | MF_GRAYED);   
            pSubMenu->EnableMenuItem(12, MF_BYPOSITION | MF_GRAYED);   
            pSubMenu->EnableMenuItem(13, MF_BYPOSITION | MF_GRAYED);   
            break;   
        }   
    }   
       
    if ((ptCursor.y + nMenuHeight) > cy)   
        ptCursor.y = cy - nMenuHeight - 5;   
       
    // Display and track the popup menu    
    ::TrackPopupMenu(pSubMenu->m_hMenu, 0, ptCursor.x, ptCursor.y, 0,    
                     GetSafeHwnd(), NULL);   
   
    // BUGFIX: See "PRB: Menus for Notification Icons Don't Work Correctly"    
    PostMessage(WM_NULL, 0, 0);   
   
    menu.DestroyMenu();   
       
    *pResult = 0;   
}   
   
void CDbTreeView::OnGetInfoTipTreeCtrl(NMHDR* pNMHDR, LRESULT* pResult)   
{   
    NMTVGETINFOTIP *tip = (NMTVGETINFOTIP *)pNMHDR;   
   
    if (tip->hItem)   
    {   
        NODE_DATA *nd = (NODE_DATA *)m_treeCtrl.GetItemData(tip->hItem);   
        if (nd)   
        {   
            m_strTip.Empty();   
            switch (nd->type)   
            {   
            case DATA_TYPE_TABLE:   
                {   
                    TABLE *table = (TABLE *)nd->data;   
                    m_strTip.Format(_T("表%s\n最大容量\t= %u條\n已使用\t\t= %u條\n記錄長度\t= %u字節\n字段個數\t= %u個\n索引個數\t= %u個"),    
                        table->name, table->max_rows, table->used_rows, table->record_size,   
                        table->field_count, table->key_count);   
                }   
                break;   
            case DATA_TYPE_FIELD:   
                {   
                    FIELD *f = (FIELD *)nd->data;   
                    m_strTip.Format(_T("類型:%s"), GetFieldType(f));   
                }   
                break;   
            case DATA_TYPE_KEY:   
                {   
                    KEY *k = (KEY *)nd->data;   
                    m_strTip.Format(_T("%s索引"), (k->flags & KF_NO_SAME) ? _T("唯一") : _T("普通"));   
                }   
                break;   
            }   
            tip->pszText = (LPTSTR)(LPCTSTR)m_strTip;   
            tip->cchTextMax = m_strTip.GetLength();   
        }   
    }   
   
    *pResult = 0;   
}   
   
void CDbTreeView::OnFileNew(WPARAM wParam, LPARAM lParam)   
{   
    // 清除原來的數據庫    
    ClearTree();   
    // 設置當前使用的內存    
    if (m_pEditMemory == NULL)   
    {   
        MessageBox(_T("內存分配失?。?quot;), _T("提示信息"), MB_ICONSTOP | MB_OK);   
        return;   
    }   
    RestartMemory();   
    // 初始化一個表    
    init_my_db(&m_hashEditDb, NULL);   
}   
   
void CDbTreeView::OnFileOpen(WPARAM wParam, LPARAM lParam)   
{   
    // 設置當前使用的內存    
    if (m_pEditMemory == NULL)   
    {   
        MessageBox(_T("內存分配失??!"), _T("提示信息"), MB_ICONSTOP | MB_OK);   
        return;   
    }   
    RestartMemory();   
   
    UINT r = init_my_db(&m_hashEditDb, (char *)(LPCTSTR)m_strDbFile);   
    if (r > 0) // 錯誤    
    {   
        CString str;   
        str.Format(_T("數據庫錯誤:\n%s"), my_get_last_error());   
        MessageBox(str, _T("提示信息"), MB_ICONSTOP | MB_OK);   
    }   
    else   
        LoadDb();   
}   
   
void CDbTreeView::OnEditTable()    
{   
    // TODO: Add your command handler code here    
    HTREEITEM  hItem = m_treeCtrl.GetSelectedItem();   
    if (hItem == NULL)   
        return;   
   
    NODE_DATA *nd = (NODE_DATA *)m_treeCtrl.GetItemData(hItem);   
    if (nd == NULL)   
        return;   
   
    TABLE *table = (TABLE *)nd->data;   
    CTableDlg dlg(this, table);   
    if (dlg.DoModal() == IDOK)   
    {   
        if (stricmp(table->name, dlg.m_strTableName) != 0)   
        {   
            if (_PM(table->name))   
                delete table->name;   
               
            table->name = new char[dlg.m_strTableName.GetLength() + 1];   
            strcpy(table->name, dlg.m_strTableName);   
            table->name_length = dlg.m_strTableName.GetLength();   
   
            m_treeCtrl.SetItemText(hItem, dlg.m_strTableName);   
        }   
   
        table->max_rows = dlg.m_nMaxRows;   
        table->flags &= ~TF_TABLE_LOCK;   
        table->flags |= dlg.m_bIsLockTable ? TF_TABLE_LOCK : 0;   
    }   
}   
   
void CDbTreeView::OnCreateTable()    
{   
    // TODO: Add your command handler code here    
    CTableDlg dlg(this, NULL);   
    if (dlg.DoModal() == IDOK)   
    {   
        TABLE *table = new TABLE;   
        if (table == NullS)   
            return;   
        memset(table, 0, sizeof(TABLE));   
   
        table->name = new char[dlg.m_strTableName.GetLength() + 1];   
        table->name_length = (ushort)dlg.m_strTableName.GetLength();   
        strcpy(table->name, dlg.m_strTableName);   

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲午夜视频在线| 国产一区二区三区av电影| 韩国欧美国产一区| 久久亚洲精品小早川怜子| 美国av一区二区| 久久久久久久久久久99999| 久久99热这里只有精品| 久久久久国产精品免费免费搜索| 国产精品主播直播| 亚洲欧美偷拍卡通变态| 欧美日韩中文一区| 麻豆成人久久精品二区三区红 | 91网站最新网址| 亚洲一区二区视频在线| 91精品国产aⅴ一区二区| 蜜桃精品视频在线| 国产精品乱码人人做人人爱| 色综合天天综合网天天看片| 亚洲va天堂va国产va久| 精品剧情v国产在线观看在线| 粉嫩aⅴ一区二区三区四区五区 | 国产精品传媒视频| 欧美色手机在线观看| 久久精品国产99国产| 国产精品午夜电影| 欧美精品高清视频| 国产成人高清在线| 婷婷久久综合九色综合绿巨人| 精品国产自在久精品国产| 99久久99久久精品免费观看| 日韩电影免费一区| 综合欧美一区二区三区| 日韩欧美在线综合网| 91在线观看地址| 蜜桃久久久久久| 亚洲欧美一区二区三区孕妇| 精品国产亚洲在线| 欧美图区在线视频| 国产精品996| 日韩成人午夜精品| 亚洲精品菠萝久久久久久久| 精品奇米国产一区二区三区| 色综合久久66| 国产成人精品免费| 麻豆91在线播放免费| 悠悠色在线精品| 国产精品区一区二区三| 26uuuu精品一区二区| 欧美日韩极品在线观看一区| fc2成人免费人成在线观看播放| 美女精品自拍一二三四| 亚洲国产另类精品专区| 最新不卡av在线| 国产欧美一区二区三区鸳鸯浴 | 精品免费日韩av| 欧美日韩电影在线| 在线观看三级视频欧美| av电影一区二区| 成人午夜视频福利| 国产精品一二三四五| 蜜桃一区二区三区在线观看| 亚洲夂夂婷婷色拍ww47 | 亚洲一区av在线| 中文字幕一区二| 国产精品久久久久久久久免费相片| 337p日本欧洲亚洲大胆色噜噜| 91精品国产一区二区人妖| 91亚洲男人天堂| eeuss鲁一区二区三区| 懂色av一区二区三区蜜臀| 国产一区二区伦理| 国产资源在线一区| 国产一区二区网址| 国产精品一区在线| 国产 日韩 欧美大片| 成人丝袜18视频在线观看| 国产成人自拍高清视频在线免费播放| 久久精品国产亚洲a| 美女在线一区二区| 久久成人麻豆午夜电影| 狠狠色伊人亚洲综合成人| 青椒成人免费视频| 久久国产成人午夜av影院| 久久91精品久久久久久秒播| 精品一区二区在线视频| 国产中文字幕一区| 国产91清纯白嫩初高中在线观看| 国产在线麻豆精品观看| 粉嫩蜜臀av国产精品网站| 高清不卡一二三区| 一本到一区二区三区| 欧美综合天天夜夜久久| 欧美日韩精品电影| 精品国产伦一区二区三区观看方式 | 欧美r级电影在线观看| 欧美mv和日韩mv国产网站| 久久久久国产精品厨房| 国产精品国产馆在线真实露脸| 中文字幕精品三区| 亚洲精品欧美综合四区| 日韩精品国产欧美| 国产美女一区二区三区| 99视频超级精品| 欧美美女喷水视频| 精品久久久久久最新网址| 中文字幕欧美激情一区| 伊人色综合久久天天人手人婷| 日韩影院在线观看| 国产河南妇女毛片精品久久久| 91香蕉视频污在线| 亚洲丝袜自拍清纯另类| 亚洲一区二区三区四区在线| 免费在线观看精品| 国产精品久久网站| 日本一区二区三区在线不卡| 亚洲成av人**亚洲成av**| 久久免费午夜影院| 青草av.久久免费一区| 99久久久久久99| 一区二区三区在线观看国产| 91在线观看高清| 天天色 色综合| 国产无遮挡一区二区三区毛片日本| 成人午夜激情视频| 中文字幕免费一区| 国产精品麻豆视频| 欧美日韩成人在线| 国产成人在线看| 亚洲高清久久久| 国产日产精品一区| 欧美日韩三级一区| youjizz国产精品| 精品一区二区三区蜜桃| 亚洲免费毛片网站| 精品国精品国产尤物美女| 色吧成人激情小说| 国产成人精品一区二区三区四区 | 激情五月婷婷综合| 亚洲日本一区二区三区| 最近日韩中文字幕| 久久久99精品久久| 精品久久久久久久人人人人传媒| 日本丶国产丶欧美色综合| 国产ts人妖一区二区| 久久国内精品自在自线400部| 亚洲国产精品精华液网站| 日韩久久一区二区| 日韩毛片一二三区| 亚洲一区二区三区四区的| 亚洲欧美日韩中文播放 | 欧美精品乱码久久久久久按摩| aaa欧美色吧激情视频| 午夜免费欧美电影| 一区二区激情小说| 国产精品―色哟哟| 国产精品成人在线观看| 国产免费观看久久| 国产精品国产三级国产普通话三级| 欧美精品一区二区三区蜜桃视频| 欧美日韩一区二区在线观看| 日本韩国一区二区三区视频| 色综合亚洲欧洲| 色婷婷综合五月| 成人激情小说乱人伦| 色综合久久六月婷婷中文字幕| av午夜一区麻豆| 欧美高清视频www夜色资源网| 欧美www视频| 国产精品久久久久桃色tv| 亚洲视频综合在线| 麻豆精品在线播放| 99re热视频这里只精品| 欧美视频在线观看一区二区| 中文字幕一区视频| 综合久久给合久久狠狠狠97色| 日韩精品一区二区在线| 91欧美一区二区| 欧美日韩精品专区| 欧美一区二区网站| 日韩精品资源二区在线| 制服丝袜在线91| 欧美日韩国产色站一区二区三区| 欧美人与禽zozo性伦| 91精品午夜视频| 久久在线免费观看| 亚洲成人一区二区在线观看| 久久国产综合精品| 在线亚洲精品福利网址导航| 在线观看91av| 精品日韩一区二区三区| 国产日韩欧美电影| 精品一区二区三区免费播放| 91在线一区二区三区| 欧美日韩不卡一区二区| 国产精品久久福利| 看国产成人h片视频| 99re亚洲国产精品| 国产天堂亚洲国产碰碰| 亚洲成人资源网| 福利一区福利二区|