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

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

?? gridctrl.cpp

?? 收錄《Visual C++ 編程技巧典型案例解析——圖形圖像處理與數據庫篇》 中43個源代碼。
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
        {
            if (next.col > m_nFixedCols) 
                next.col--;
            else if (next.col == m_nFixedCols && next.row > m_nFixedRows) 
            {
                next.row--; 
                next.col = GetColumnCount() - 1; 
                bChangeLine = TRUE;
            }
            else
                CWnd::OnKeyDown(nChar, nRepCnt, nFlags);
        }
        else
        {
            if (next.col <(GetColumnCount() - 1)) 
                next.col++;
            else if (next.col == (GetColumnCount() - 1) && 
                next.row <(GetRowCount() - 1))
            {
                next.row++; 
                next.col = m_nFixedCols; 
                bChangeLine = TRUE;
            }
            else
                CWnd::OnKeyDown(nChar, nRepCnt, nFlags);
        } 
        break;
        
    case VK_DOWN:   
            // don't let user go to a hidden row
            bFoundVisible = FALSE;
            iOrig = next.row;
            next.row++;
            while( next.row < GetRowCount())
            {
                if( GetRowHeight( next.row) > 0)
                {
                    bFoundVisible = TRUE;
                    break;
                }
                next.row++;
            }
            if( !bFoundVisible)
                next.row = iOrig;

            break;
        
    case VK_UP:     
            // don't let user go to a hidden row
            bFoundVisible = FALSE;
            iOrig = next.row;
            next.row--;
            while( next.row >= m_nFixedRows)
            {
                if( GetRowHeight( next.row) > 0)
                {
                    bFoundVisible = TRUE;
                    break;
                }
                next.row--;
            }
            if( !bFoundVisible)
                next.row = iOrig;

            break;
        
    case VK_RIGHT:  
            // don't let user go to a hidden column
            bFoundVisible = FALSE;
            iOrig = next.col;
            next.col++;
            while( next.col < GetColumnCount())
            {
                if( GetColumnWidth( next.col) > 0)
                {
                    bFoundVisible = TRUE;
                    break;
                }
                next.col++;
            }
            if( !bFoundVisible)
                next.col = iOrig;

            break;
        
    case VK_LEFT:   
            // don't let user go to a hidden column
            bFoundVisible = FALSE;
            iOrig = next.col;
            next.col--;
            while( next.col >= m_nFixedCols)
            {
                if( GetColumnWidth( next.col) > 0)
                {
                    bFoundVisible = TRUE;
                    break;
                }
                next.col--;
            }
            if( !bFoundVisible)
                next.col = iOrig;

            break;
        
    case VK_NEXT:   
        {
            CCellID idOldTopLeft = GetTopleftNonFixedCell();
            SendMessage(WM_VSCROLL, SB_PAGEDOWN, 0);
            CCellID idNewTopLeft = GetTopleftNonFixedCell();

            int increment = idNewTopLeft.row - idOldTopLeft.row;
            if (increment)
            {
                next.row += increment;
                if (next.row >(GetRowCount() - 1))
                    next.row = GetRowCount() - 1;
            }
            else
                next.row = GetRowCount() - 1;
            break;
        }

    case VK_PRIOR:  
        {
            CCellID idOldTopLeft = GetTopleftNonFixedCell();
            SendMessage(WM_VSCROLL, SB_PAGEUP, 0);
            CCellID idNewTopLeft = GetTopleftNonFixedCell();
            
            int increment = idNewTopLeft.row - idOldTopLeft.row;
            if (increment) 
            {
                next.row += increment;
                if (next.row < m_nFixedRows) 
                    next.row = m_nFixedRows;
            }
            else
                next.row = m_nFixedRows;
            break;
        }
        
    case VK_HOME:   
            // Home and Ctrl-Home work more like Excel
            //  and don't let user go to a hidden cell
            if (IsCTRLpressed())
            {
                SendMessage(WM_VSCROLL, SB_TOP, 0);
                SendMessage(WM_HSCROLL, SB_LEFT, 0);
                next.row = m_nFixedRows;
                next.col = m_nFixedCols;
            }
            else
            {
                SendMessage(WM_HSCROLL, SB_LEFT, 0);
                next.col = m_nFixedCols;
            }
            // adjust column to avoid hidden columns and rows
            while( next.col < GetColumnCount() - 1)
            {
                if( GetColumnWidth( next.col) > 0)
                    break;
                next.col++;
            }
            while( next.row < GetRowCount() - 1)
            {
                if( GetRowHeight( next.row) > 0)
                    break;
                next.row++;
            }
            break;
        
    case VK_END:    
        // End and Ctrl-End work more like Excel
        //  and don't let user go to a hidden cell
        if (IsCTRLpressed())
        {
            SendMessage(WM_VSCROLL, SB_BOTTOM, 0);
            SendMessage(WM_HSCROLL, SB_RIGHT, 0);
            next.row = GetRowCount() - 1;
            next.col = GetColumnCount() - 1;
        }
        else
        {
            SendMessage(WM_HSCROLL, SB_RIGHT, 0);
            next.col = GetColumnCount() - 1;
        }
        // adjust column to avoid hidden columns and rows
        while( next.col > m_nFixedCols + 1)
        {
            if( GetColumnWidth( next.col) > 0)
                break;
            next.col--;
        }
        while( next.row > m_nFixedRows + 1)
        {
            if( GetRowHeight( next.row) > 0)
                break;
            next.row--;
        }

        break;
        
    case VK_F2:
        OnEditCell(m_idCurrentCell.row, m_idCurrentCell.col, CPoint( -1, -1), VK_LBUTTON);
        break;

    default:
        CWnd::OnKeyDown(nChar, nRepCnt, nFlags);
        return;
    }

    if (next != m_idCurrentCell)
    {
        // While moving with the Cursorkeys the current ROW/CELL will get selected
        // OR Selection will get expanded when SHIFT is pressed
        // Cut n paste from OnLButtonDown - Franco Bez
        // Added check for NULL mouse mode - Chris Maunder.
        if (m_MouseMode == MOUSE_NOTHING)
        {
            m_PrevSelectedCellMap.RemoveAll();
            m_MouseMode = m_bListMode? MOUSE_SELECT_ROW : MOUSE_SELECT_CELLS;
            if (!IsSHIFTpressed() || nChar == VK_TAB)
                m_SelectionStartCell = next;
            OnSelecting(next);
            m_MouseMode = MOUSE_NOTHING;
        }

        SetFocusCell(next);

        if (!IsCellVisible(next))
        {
            EnsureVisible(next); // Make sure cell is visible

            switch (nChar)
            {
            case VK_RIGHT:  
                SendMessage(WM_HSCROLL, SB_LINERIGHT, 0); 
                break;
                
            case VK_LEFT:   
                SendMessage(WM_HSCROLL, SB_LINELEFT, 0);  
                break;
                
            case VK_DOWN:   
                SendMessage(WM_VSCROLL, SB_LINEDOWN, 0);  
                break;
                
            case VK_UP:     
                SendMessage(WM_VSCROLL, SB_LINEUP, 0);    
                break;                
                
            case VK_TAB:    
                if (IsSHIFTpressed())
                {
                    if (bChangeLine) 
                    {
                        SendMessage(WM_VSCROLL, SB_LINEUP, 0);
                        SetScrollPos32(SB_HORZ, m_nHScrollMax);
                        break;
                    }
                    else 
                        SendMessage(WM_HSCROLL, SB_LINELEFT, 0);
                }
                else
                {
                    if (bChangeLine) 
                    {
                        SendMessage(WM_VSCROLL, SB_LINEDOWN, 0);
                        SetScrollPos32(SB_HORZ, 0);
                        break;
                    }
                    else 
                        SendMessage(WM_HSCROLL, SB_LINERIGHT, 0);
                }
                break;
            }
            Invalidate();
        }
    }
}

void CGridCtrl::OnSysKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
#ifdef GRIDCONTROL_USE_TITLETIPS
    m_TitleTip.Hide();  // hide any titletips
#endif

	CWnd::OnSysKeyDown(nChar, nRepCnt, nFlags);
}

// Instant editing of cells when keys are pressed
void CGridCtrl::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
    // EFW - BUG FIX
    if (!IsCTRLpressed() && m_MouseMode == MOUSE_NOTHING && nChar != VK_ESCAPE)
    {
        if (!m_bHandleTabKey || (m_bHandleTabKey && nChar != VK_TAB))
            OnEditCell(m_idCurrentCell.row, m_idCurrentCell.col, CPoint( -1, -1), nChar);
    }

    CWnd::OnChar(nChar, nRepCnt, nFlags);
}

// Callback from any CInPlaceEdits that ended. This just calls OnEndEditCell,
// refreshes the edited cell and moves onto next cell if the return character
// from the edit says we should.
void CGridCtrl::OnEndInPlaceEdit(NMHDR* pNMHDR, LRESULT* pResult)
{
    GV_DISPINFO *pgvDispInfo = (GV_DISPINFO *)pNMHDR;
    GV_ITEM     *pgvItem = &pgvDispInfo->item;

    // In case OnEndInPlaceEdit called as window is being destroyed
    if (!IsWindow(GetSafeHwnd()))
        return;

    OnEndEditCell(pgvItem->row, pgvItem->col, pgvItem->strText);
    //InvalidateCellRect(CCellID(pgvItem->row, pgvItem->col));

    SendMessageToParent(pgvItem->row, pgvItem->col, GVN_ENDLABELEDIT);

    switch (pgvItem->lParam)
    {
        case VK_TAB:
        case VK_DOWN:
        case VK_UP:
        case VK_RIGHT:
        case VK_LEFT:
        case VK_NEXT:
        case VK_PRIOR:
        case VK_HOME:
        case VK_END:
            OnKeyDown(pgvItem->lParam, 0, 0);
            OnEditCell(m_idCurrentCell.row, m_idCurrentCell.col, CPoint( -1, -1), pgvItem->lParam);
    }

    *pResult = 0;
}

// Handle horz scrollbar notifications
void CGridCtrl::OnHScroll(UINT nSBCode, UINT /*nPos*/, CScrollBar* /*pScrollBar*/)
{
    EndEditing();

#ifndef GRIDCONTROL_NO_TITLETIPS
    m_TitleTip.Hide();  // hide any titletips
#endif

    int scrollPos = GetScrollPos32(SB_HORZ);

    CCellID idTopLeft = GetTopleftNonFixedCell();

    CRect rect;
    GetClientRect(rect);

    switch (nSBCode)
    {
    case SB_LINERIGHT:
        if (scrollPos < m_nHScrollMax)
        {
            // may have contiguous hidden columns.  Blow by them
            while (idTopLeft.col < (GetColumnCount()-1)
                    && GetColumnWidth( idTopLeft.col) < 1 )
            {
                idTopLeft.col++;
            }
            int xScroll = GetColumnWidth(idTopLeft.col);
            SetScrollPos32(SB_HORZ, scrollPos + xScroll);
            if (GetScrollPos32(SB_HORZ) == scrollPos)
                break;          // didn't work

            rect.left = GetFixedColumnWidth();
            //rect.left = GetFixedColumnWidth() + xScroll;
            //ScrollWindow(-xScroll, 0, rect);
            //rect.left = rect.right - xScroll;
            InvalidateRect(rect);
        }
        break;

    case SB_LINELEFT:
        if (scrollPos > 0 && idTopLeft.col > GetFixedColumnCount())
        {
            int iColToUse = idTopLeft.col-1;
            // may have contiguous hidden columns.  Blow by them
            while(  iColToUse > GetFixedColumnCount()
                    && GetColumnWidth( iColToUse) < 1 )
            {
                iColToUse--;
            }

            int xScroll = GetColumnWidth(iColToUse);
            SetScrollPos32(SB_HORZ, max(0, scrollPos - xScroll));
            rect.left = GetFixedColumnWidth();
            //ScrollWindow(xScroll, 0, rect);
            //rect.right = rect.left + xScroll;
            InvalidateRect(rect);
        }
        break;

    case SB_PAGERIGHT:
        if (scrollPos < m_nHScrollMax)
        {
            rect.left = GetFixedColumnWidth();
            int offset = rect.Width();
            int pos = min(m_nHScrollMax, scrollPos + offset);
            SetScrollPos32(SB_HORZ, pos);
            rect.left = GetFixedColumnWidth();
            InvalidateRect(rect);
        }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品成人在线观看| 91精品国产色综合久久不卡蜜臀| 国产精品影视天天线| 久久99久国产精品黄毛片色诱| 日本中文一区二区三区| 日本中文字幕一区二区视频| 亚洲乱码中文字幕| 日韩专区中文字幕一区二区| 日韩成人午夜精品| 国产成人免费视频网站| 色婷婷国产精品久久包臀 | 九九热在线视频观看这里只有精品| 久久99精品久久久| 国产精品一区二区男女羞羞无遮挡| 国产高清一区日本| 日本丶国产丶欧美色综合| 91精品免费观看| 久久精品人人爽人人爽| 亚洲成人av资源| 国产成人综合视频| 欧美日本在线观看| 中文字幕亚洲欧美在线不卡| 五月天网站亚洲| 国产河南妇女毛片精品久久久| 色悠久久久久综合欧美99| 久久久国产一区二区三区四区小说| 亚洲激情校园春色| 高清不卡在线观看av| 91精品国产91热久久久做人人 | 男人的j进女人的j一区| 99久久久精品| 久久综合九色综合欧美亚洲| 天天综合天天综合色| 91老师国产黑色丝袜在线| 国产视频在线观看一区二区三区| 午夜久久久久久| 欧美三级电影在线看| 亚洲一区二区中文在线| 色综合久久久久综合99| 亚洲男人电影天堂| 国产成人在线观看| 精品99久久久久久| 久久精品国产色蜜蜜麻豆| 色域天天综合网| 亚洲一二三四在线观看| 欧美色视频一区| 免费成人在线网站| xnxx国产精品| av在线不卡观看免费观看| 国产精品成人一区二区艾草| 色一情一乱一乱一91av| 日韩中文字幕区一区有砖一区 | 久久国产尿小便嘘嘘| 久久久亚洲精华液精华液精华液| 激情亚洲综合在线| 亚洲视频在线一区| 欧美羞羞免费网站| 美国十次综合导航| 制服丝袜成人动漫| 国产精品一区二区在线播放| 亚洲黄色免费电影| 精品国产亚洲一区二区三区在线观看| 国产成人午夜99999| 五月激情综合婷婷| 国产精品丝袜久久久久久app| 色综合天天综合网天天狠天天 | 欧美二区在线观看| 成人爱爱电影网址| 蜜臀av国产精品久久久久| 亚洲天堂精品在线观看| 日韩精品一区二区三区swag| 一本大道久久a久久精二百| 韩日精品视频一区| 美女视频黄 久久| 午夜影视日本亚洲欧洲精品| 国产精品国产精品国产专区不蜜 | 图片区小说区国产精品视频| 中文字幕一区二区日韩精品绯色| 日韩一区二区电影网| 欧美三级中文字| 在线观看不卡一区| 欧美自拍偷拍一区| 色综合久久久久| 91高清视频在线| 色婷婷久久久综合中文字幕| 91色|porny| 欧美日韩中文字幕一区| 欧美亚洲国产怡红院影院| 91女厕偷拍女厕偷拍高清| 欧美日韩aaaaa| 91麻豆自制传媒国产之光| 91免费在线视频观看| 99九九99九九九视频精品| 91亚洲精品久久久蜜桃网站| 色哟哟在线观看一区二区三区| 91官网在线观看| 欧美高清视频不卡网| 日韩午夜小视频| 国产日韩欧美一区二区三区综合| 欧美激情一区不卡| 依依成人精品视频| 奇米一区二区三区av| 成人丝袜18视频在线观看| 91论坛在线播放| 日韩三级在线观看| 亚洲视频一二区| 麻豆国产精品视频| 日本乱码高清不卡字幕| 日韩限制级电影在线观看| 中文字幕人成不卡一区| 日本不卡在线视频| 99精品视频一区| 精品国产制服丝袜高跟| 亚洲成人福利片| 99久久免费视频.com| 精品国产免费视频| 亚洲成a人片在线不卡一二三区| 国产精品一区二区在线观看不卡| 99久久婷婷国产综合精品| 久久免费美女视频| 亚洲精品中文在线观看| 国产精品羞羞答答xxdd | 亚洲美女在线一区| 国产成人一区在线| 久久人人爽爽爽人久久久| 亚洲成人免费视| 欧美喷潮久久久xxxxx| 亚洲国产一区二区三区 | 亚洲一区二区三区免费视频| www.亚洲色图.com| 亚洲欧美自拍偷拍色图| 国产精品一卡二卡| 久久久国际精品| 成人a区在线观看| 亚洲图片你懂的| 欧美视频第二页| 日韩专区欧美专区| 欧美不卡视频一区| 精品一区二区三区日韩| 日韩一级片在线播放| 久久国产麻豆精品| 国产精品三级在线观看| 99久久精品免费| 五月激情丁香一区二区三区| 欧美成人a在线| 99久久精品99国产精品| 午夜精品福利一区二区三区av | 天堂蜜桃91精品| 精品国产电影一区二区| 91一区在线观看| 麻豆一区二区三| 亚洲在线成人精品| 欧美tickling挠脚心丨vk| 在线看不卡av| 成+人+亚洲+综合天堂| 日韩高清不卡一区二区三区| 国产精品福利av| 一本色道久久综合亚洲91| 美女尤物国产一区| 亚洲福利一区二区三区| 国产精品无码永久免费888| 欧美v亚洲v综合ⅴ国产v| 成人av在线一区二区三区| 日日骚欧美日韩| 亚洲一区二区四区蜜桃| 中文字幕在线观看不卡| 精品噜噜噜噜久久久久久久久试看| 91成人免费网站| heyzo一本久久综合| 国产成人日日夜夜| 国产精品一二三| 国产东北露脸精品视频| 国产精品66部| 国产v综合v亚洲欧| 国产一区二区三区黄视频| 国产一区二区三区黄视频| 看片网站欧美日韩| 久久av中文字幕片| 久久国内精品自在自线400部| 精品一区二区三区日韩| 国产呦精品一区二区三区网站| 国产91丝袜在线18| 国产九色精品成人porny| 国产成人av资源| 99re成人精品视频| 欧美日韩一二三| 欧美一区二区三区小说| 欧美精品一区二区蜜臀亚洲| 国产精品乱子久久久久| 中文字幕高清不卡| 亚洲欧洲一区二区三区| 婷婷久久综合九色综合伊人色| 日韩精品乱码免费| 国产成人在线免费观看| 在线免费观看日本一区| 久久亚洲精品国产精品紫薇| 亚洲综合色区另类av| 久久国产剧场电影| 欧美亚洲禁片免费| 久久精品夜夜夜夜久久|