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

📄 medit.c

📁 miniucgui1.30版本的源码
💻 C
📖 第 1 页 / 共 5 页
字号:
                    }                    else                    {                            if (pMLEditData->veditPos == pMLEditData->vdispPos){                            pMLEditData->veditPos--;                            if (edtGetNewvPos (hWnd,                                                GetLineData(pMLEditData,pMLEditData->editLine),                                                pMLEditData->dx_chars[pMLEditData->veditPos]                                                 - edtGetOutWidth (hWnd)/4) == -1)                                pMLEditData->vdispPos = 0;                            else {                                pMLEditData->vdispPos = edtGetNewvPos (hWnd,                                                GetLineData(pMLEditData,pMLEditData->editLine),                                                pMLEditData->dx_chars[pMLEditData->veditPos]                                                 - edtGetOutWidth (hWnd)/4);                            }                            bScroll = TRUE;                        }else {                            pMLEditData->veditPos--;                        }                                                }                        pMLEditData->dispPos = pMLEditData->dx_chars[pMLEditData->vdispPos];                    edtSetCaretPos (hWnd);                    if (bScroll)                        InvalidateRect (hWnd, NULL, TRUE);                    edtSetScrollInfo (hWnd, pMLEditData, TRUE);                    if (pMLEditData->bSCROLL)                        InvalidateRect (hWnd, NULL, TRUE);                }                return 0;                                case SCANCODE_CURSORBLOCKRIGHT:                {                    BOOL         bScroll = FALSE;                    int          line, wrapline;                    PLINEDATA     temp;                    if (dwStyle & ES_AUTOWRAP)                    {                        edtGetLineNums (pMLEditData, pMLEditData->editLine, &line, &wrapline);                        pLineData = GetLineData(pMLEditData, line);                    }                    else                        pLineData = GetLineData(pMLEditData,pMLEditData->editLine);                    if (dwStyle & ES_AUTOWRAP)                    {                        if (!(temp = pLineData->next)                                     && pMLEditData->veditPos == pMLEditData->fit_chars) return 0;                        edtGetLineInfo (hWnd, pLineData);                        if (pMLEditData->veditPos == pMLEditData->fit_chars)                        {                            if (pMLEditData->editLine == pMLEditData->EndlineDisp) {                                bScroll = TRUE;                                pMLEditData->StartlineDisp++;                                pMLEditData->EndlineDisp++;                            }                            edtGetLineInfo (hWnd, temp);                            pMLEditData->editLine++;                            pMLEditData->veditPos = 0;                        }else if (pMLEditData->veditPos == pLineData->wrapStartPos[wrapline+1]-1)                        {                            if (pMLEditData->veditPos <                                             pLineData->wrapStartPos[pLineData->nwrapline]-1)                            {                                if (pMLEditData->editLine == pMLEditData->EndlineDisp) {                                    bScroll = TRUE;                                    pMLEditData->StartlineDisp++;                                    pMLEditData->EndlineDisp++;                                }                                pMLEditData->editLine++;                            }                            pMLEditData->veditPos++;                        }                        else                            pMLEditData->veditPos++;                        pMLEditData->linesDisp = pMLEditData->EndlineDisp                                                 - pMLEditData->StartlineDisp + 1;                        edtSetCaretPos (hWnd);                        if (bScroll)                        {                            InvalidateRect(hWnd,NULL,TRUE);                                edtSetScrollInfo (hWnd, pMLEditData, TRUE);                        }                        if (pMLEditData->bSCROLL)                            InvalidateRect (hWnd, NULL, TRUE);                        return 0;                    }                                                if (pMLEditData->veditPos == pMLEditData->fit_chars)                     {                        temp = pLineData->next;                        if (temp && pMLEditData->editLine == pMLEditData->EndlineDisp) {                            bScroll = TRUE;                            pMLEditData->StartlineDisp++;                            pMLEditData->EndlineDisp++;                        }                        if(temp)                        {                            pMLEditData->editLine++;                            edtGetLineInfo (hWnd, GetLineData (pMLEditData, pMLEditData->editLine));                            pMLEditData->veditPos  = 0;                            if(pMLEditData->vdispPos !=0)                            {                                pMLEditData->vdispPos  = 0;                                bScroll = TRUE;                            }                        } else                            return 0;                    } else {                            // caret is at the end of the display rect                        if ((pMLEditData->dx_chars[pMLEditData->veditPos]                                     - pMLEditData->dx_chars[pMLEditData->vdispPos]                                     < edtGetOutWidth (hWnd))                                 && (pMLEditData->dx_chars[pMLEditData->veditPos + 1]                                     - pMLEditData->dx_chars[pMLEditData->vdispPos]                                     > edtGetOutWidth (hWnd))) {                            bScroll = TRUE;                            pMLEditData->veditPos++;                            if (edtGetNewvPos (hWnd,                                                GetLineData(pMLEditData,pMLEditData->editLine),                                                pMLEditData->dx_chars[pMLEditData->veditPos]                                                 - edtGetOutWidth (hWnd)/4) == -1)                                pMLEditData->vdispPos = 0;                            else                                pMLEditData->vdispPos = edtGetNewvPos (hWnd,                                                GetLineData(pMLEditData,pMLEditData->editLine),                                                pMLEditData->dx_chars[pMLEditData->veditPos]                                                 - edtGetOutWidth (hWnd)/4);                            if (pMLEditData->dx_chars[pMLEditData->vdispPos]                                         + edtGetOutWidth (hWnd)                                     > pMLEditData->sz.cx)                                 pMLEditData->vdispPos =                                             edtGetStartDispPosAtEnd (hWnd, pLineData);                        }else                             pMLEditData->veditPos++;                    }                    pMLEditData->dispPos = pMLEditData->dx_chars[pMLEditData->vdispPos];                    edtSetCaretPos (hWnd);                    if (bScroll)                        InvalidateRect (hWnd, NULL, TRUE);                        edtSetScrollInfo (hWnd, pMLEditData, TRUE);                    if (pMLEditData->bSCROLL)                        InvalidateRect (hWnd, NULL, TRUE);                }                return 0;                                   case SCANCODE_CURSORBLOCKUP:                {                    BOOL bScroll = FALSE;                    int  newStartPos, olddispPos, oldeditPos, line, wrapline;                    PLINEDATA temp;                       edtPosProc (hWnd);                     olddispPos = pMLEditData->dx_chars[pMLEditData->vdispPos];                    oldeditPos = pMLEditData->dx_chars[pMLEditData->veditPos];                    if (dwStyle & ES_AUTOWRAP)                    {                        edtGetLineNums (pMLEditData, pMLEditData->editLine, &line, &wrapline);                        pLineData = GetLineData(pMLEditData, line);                    }                    else                        pLineData = GetLineData(pMLEditData,pMLEditData->editLine);                    temp = pLineData->previous;                     if(pMLEditData->editLine == 0) return 0;                    if (pMLEditData->editLine == pMLEditData->StartlineDisp)                    {                        bScroll = TRUE;                        pMLEditData->StartlineDisp--;                        if (dwStyle & ES_AUTOWRAP)                            pMLEditData->EndlineDisp = MIN (pMLEditData->wraplines - 1,                                                pMLEditData->StartlineDisp +                                                 pMLEditData->MaxlinesDisp - 1);                        else                            pMLEditData->EndlineDisp--;                        }                    pMLEditData->editLine--;                    if (dwStyle & ES_AUTOWRAP)                    {                        oldeditPos = pMLEditData->dx_chars[pMLEditData->veditPos]                                         - pMLEditData->dx_chars[pLineData->wrapStartPos[wrapline]];                        edtGetCaretValid (hWnd, pMLEditData->editLine,                                                           olddispPos, oldeditPos);                        pMLEditData->linesDisp = pMLEditData->EndlineDisp                                                 - pMLEditData->StartlineDisp + 1;                        edtSetCaretPos (hWnd);                        if (bScroll)                            InvalidateRect(hWnd,NULL,TRUE);                            edtSetScrollInfo (hWnd, pMLEditData, TRUE);                        if (pMLEditData->bSCROLL)                            InvalidateRect (hWnd, NULL, TRUE);                        return 0;                    }                                            edtGetLineInfo (hWnd, temp);                    if( olddispPos > pMLEditData->sz.cx )                     {                        pMLEditData->veditPos = pMLEditData->fit_chars;                           newStartPos = edtGetStartDispPosAtEnd (hWnd, temp);                           pMLEditData->vdispPos =  newStartPos;                        bScroll = TRUE;                    }                                    else                     {                        pMLEditData->veditPos = edtGetNewvPos (hWnd, temp, oldeditPos);                        if (pMLEditData->veditPos == -2)                            pMLEditData->veditPos = pMLEditData->fit_chars;                        pMLEditData->vdispPos = edtGetNewvPos (hWnd, temp, olddispPos);                        if (olddispPos != pMLEditData->dx_chars[pMLEditData->vdispPos])                            bScroll = TRUE;                    }                                        pMLEditData->dispPos = pMLEditData->dx_chars[pMLEditData->vdispPos];                    SetCaretPos (hWnd,                         pMLEditData->dx_chars[pMLEditData->veditPos]                             - pMLEditData->dx_chars[pMLEditData->vdispPos]                             + pMLEditData->leftMargin,                         (pMLEditData->editLine - pMLEditData->StartlineDisp) * pMLEditData->lineHeight                            + pMLEditData->topMargin);                    if (bScroll)                        InvalidateRect(hWnd,NULL,TRUE);                        edtSetScrollInfo (hWnd, pMLEditData, TRUE);                    if (pMLEditData->bSCROLL)                        InvalidateRect (hWnd, NULL, TRUE);                }                break;                case SCANCODE_CURSORBLOCKDOWN:                {                    BOOL bScroll = FALSE;                    int  newStartPos, olddispPos, oldeditPos, line, wrapline;                    PLINEDATA temp;                       edtPosProc (hWnd);                     oldeditPos = pMLEditData->dx_chars[pMLEditData->veditPos];                    olddispPos = pMLEditData->dx_chars[pMLEditData->vdispPos];                    if (dwStyle & ES_AUTOWRAP)                    {                        edtGetLineNums (pMLEditData, pMLEditData->editLine, &line, &wrapline);                        pLineData = GetLineData(pMLEditData, line);                    }                    else                        pLineData = GetLineData(pMLEditData,pMLEditData->editLine);                    temp = pLineData->next;                     if (dwStyle & ES_AUTOWRAP) {                        if(pMLEditData->editLine == pMLEditData->wraplines-1) return 0;                    }else {                        if(pMLEditData->editLine == pMLEditData->lines-1) return 0;                    }                    if (pMLEditData->editLine == pMLEditData->EndlineDisp)                    {                        bScroll = TRUE;                        pMLEditData->StartlineDisp++;                        pMLEditData->EndlineDisp++;                        }                    pMLEditData->editLine++;                    if (dwStyle & ES_AUTOWRAP)                    {                        oldeditPos = pMLEditData->dx_chars[pMLEditData->veditPos]                                         - pMLEditData->dx_chars[pLineData->wrapStartPos[wrapline]];                        edtGetCaretValid (hWnd, pMLEditData->editLine,                                                           olddispPos, oldeditPos);                        edtSetCaretPos (hWnd);                        if (bScroll)                            InvalidateRect(hWnd,NULL,TRUE);                            edtSetScrollInfo (hWnd, pMLEditData, TRUE);                        if (pMLEditData->bSCROLL)                            InvalidateRect (hWnd, NULL, TRUE);                        return 0;                    }                        edtGetLineInfo (hWnd, temp);                    if( olddispPos > pMLEditData->sz.cx )                     {                        pMLEditData->veditPos = pMLEditData->fit_chars;                           newStartPos = edtGetStartDispPosAtEnd (hWnd, temp);                           pMLEditData->vdispPos =  newStartPos;                        bScroll = TRUE;                    }                                    else                     {                        pMLEditData->veditPos = edtGetNewvPos (hWnd, temp, oldeditPos);                        if (pMLEditData->veditPos == -2)                            pMLEditData->veditPos = pMLEditData->fit_chars;                        pMLEditData->vdispPos = edtGetNewvPos (hWnd, temp, olddispPos);                        if (olddispPos != pMLEditData->dx_chars[pMLEditData->vdispPos])                            bScroll = TRUE;                    }                                        pMLEditData->dispPos = pMLEditData->dx_chars[pMLEditData->vdispPos];                    edtSetCaretPos (hWnd);                    if (bScroll)                        InvalidateRect(hWnd,NULL,TRUE);                        edtSetScrollInfo (hWnd, pMLEditData, TRUE);                    if (pMLEditData->bSCROLL)                        InvalidateRect (hWnd, NULL, TRUE);                }                break;                case SCANCODE_INSERT:                    pMLEditData->status ^= EST_REPLACE;                break;                case SCANCODE_REMOVE:                {                    PLINEDATA temp;                    int leftLen;                    int line, wrapline;                    int oldnwrapline;                    BOOL bScroll=FALSE;                    if (dwStyle & ES_READONLY) {                        Ping();                        return 0;                    }                       edtPosProc (hWnd);                     if (dwStyle

⌨️ 快捷键说明

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