Changeset 24 in dev for ProjectEditor/Caret.cpp


Ignore:
Timestamp:
Dec 30, 2006, 10:18:01 AM (18 years ago)
Author:
dai_9181
Message:

保存されていないドキュメントのタブに(*)をつける機能に対応。
MDITEXTEDITINFOをCMdiTextEditに変更。今後、オブジェクト指向化を進める。

File:
1 edited

Legend:

Unmodified
Added
Removed
  • ProjectEditor/Caret.cpp

    r3 r24  
    123123
    124124    pCharRange->cpMin=GetBufferIndexFromCaretPos(
    125         MdiInfo[WndNum].pmti->buffer,
    126         MdiInfo[WndNum].pmti->StartCaretPos.x,
    127         MdiInfo[WndNum].pmti->StartCaretPos.y);
    128 
    129     if(MdiInfo[WndNum].pmti->StartCaretPos.x==MdiInfo[WndNum].pmti->EndCaretPos.x&&
    130         MdiInfo[WndNum].pmti->StartCaretPos.y==MdiInfo[WndNum].pmti->EndCaretPos.y){
     125        MdiInfo[WndNum].pMdiTextEdit->buffer,
     126        MdiInfo[WndNum].pMdiTextEdit->StartCaretPos.x,
     127        MdiInfo[WndNum].pMdiTextEdit->StartCaretPos.y);
     128
     129    if(MdiInfo[WndNum].pMdiTextEdit->StartCaretPos.x==MdiInfo[WndNum].pMdiTextEdit->EndCaretPos.x&&
     130        MdiInfo[WndNum].pMdiTextEdit->StartCaretPos.y==MdiInfo[WndNum].pMdiTextEdit->EndCaretPos.y){
    131131        //選択されていないとき
    132132        pCharRange->cpMax=pCharRange->cpMin;
     
    134134    else{
    135135        pCharRange->cpMax=GetBufferIndexFromCaretPos(
    136             MdiInfo[WndNum].pmti->buffer,
    137             MdiInfo[WndNum].pmti->EndCaretPos.x,
    138             MdiInfo[WndNum].pmti->EndCaretPos.y);
     136            MdiInfo[WndNum].pMdiTextEdit->buffer,
     137            MdiInfo[WndNum].pMdiTextEdit->EndCaretPos.x,
     138            MdiInfo[WndNum].pMdiTextEdit->EndCaretPos.y);
    139139    }
    140140
     
    150150
    151151    memcpy(buffer,
    152         MdiInfo[WndNum].pmti->buffer+pCharRange->cpMin,
     152        MdiInfo[WndNum].pMdiTextEdit->buffer+pCharRange->cpMin,
    153153        pCharRange->cpMax-pCharRange->cpMin);
    154154    buffer[pCharRange->cpMax-pCharRange->cpMin]=0;
     
    159159
    160160    HWND hEdit;
    161     hEdit=MdiInfo[WndNum].pmti->hEdit;
     161    hEdit=MdiInfo[WndNum].pMdiTextEdit->hEdit;
    162162
    163163    //垂直スクロールバーの位置
     
    195195
    196196    GetCaretPosFromBufferIndex(
    197         MdiInfo[WndNum].pmti->buffer,
     197        MdiInfo[WndNum].pMdiTextEdit->buffer,
    198198        StartIndex,
    199         &MdiInfo[WndNum].pmti->StartCaretPos);
     199        &MdiInfo[WndNum].pMdiTextEdit->StartCaretPos);
    200200
    201201    GetCaretPosFromBufferIndex(
    202         MdiInfo[WndNum].pmti->buffer,
     202        MdiInfo[WndNum].pMdiTextEdit->buffer,
    203203        EndIndex,
    204         &MdiInfo[WndNum].pmti->EndCaretPos);
     204        &MdiInfo[WndNum].pMdiTextEdit->EndCaretPos);
    205205
    206206    HWND hEdit;
     
    222222    int iStartPos;
    223223    iStartPos=code_pos;
    224     while(MdiInfo[WndNum].pmti->buffer[iStartPos]!='\n'&&iStartPos>0) iStartPos--;
    225     if(MdiInfo[WndNum].pmti->buffer[iStartPos]=='\n') iStartPos++;
     224    while(MdiInfo[WndNum].pMdiTextEdit->buffer[iStartPos]!='\n'&&iStartPos>0) iStartPos--;
     225    if(MdiInfo[WndNum].pMdiTextEdit->buffer[iStartPos]=='\n') iStartPos++;
    226226
    227227    int iEndPos;
    228228    iEndPos=code_pos;
    229     while(MdiInfo[WndNum].pmti->buffer[iEndPos]!='\r'&&MdiInfo[WndNum].pmti->buffer[iEndPos]!='\0') iEndPos++;
     229    while(MdiInfo[WndNum].pMdiTextEdit->buffer[iEndPos]!='\r'&&MdiInfo[WndNum].pMdiTextEdit->buffer[iEndPos]!='\0') iEndPos++;
    230230
    231231    TextEdit_SetSel(WndNum,iStartPos,iEndPos,bShowCenter);
     
    239239    GetCaretPos(&OldPos);
    240240
    241     x=MdiInfo[WndNum].pmti->StartCaretPos.x;
    242     y=MdiInfo[WndNum].pmti->StartCaretPos.y;
     241    x=MdiInfo[WndNum].pMdiTextEdit->StartCaretPos.x;
     242    y=MdiInfo[WndNum].pMdiTextEdit->StartCaretPos.y;
    243243    GetScrollBaseCaretPos(WndNum,&x,&y);
    244244
    245245    //エディタ画面左端のコントロールタブ
    246246    int iControlTabSpace;
    247     iControlTabSpace=MdiInfo[WndNum].pmti->iWidth_ControlTabSpace;
     247    iControlTabSpace=MdiInfo[WndNum].pMdiTextEdit->iWidth_ControlTabSpace;
    248248
    249249    //コントロールタブ上にカーソルがきたときに、非表示にする
    250     if(OldPos.x>=iControlTabSpace&&x<0) HideCaret(MdiInfo[WndNum].pmti->hEdit);
    251     else if(OldPos.x<iControlTabSpace&&x>=0) ShowCaret(MdiInfo[WndNum].pmti->hEdit);
     250    if(OldPos.x>=iControlTabSpace&&x<0) HideCaret(MdiInfo[WndNum].pMdiTextEdit->hEdit);
     251    else if(OldPos.x<iControlTabSpace&&x>=0) ShowCaret(MdiInfo[WndNum].pMdiTextEdit->hEdit);
    252252
    253253    SetCaretPos(
     
    263263    if(IS_DOCUMENT_TEXT(MdiInfo[WndNum].DocType)){
    264264        int start,end;
    265         if(MdiInfo[WndNum].pmti->StartCaretPos.x==MdiInfo[WndNum].pmti->EndCaretPos.x&&
    266             MdiInfo[WndNum].pmti->StartCaretPos.y==MdiInfo[WndNum].pmti->EndCaretPos.y){
     265        if(MdiInfo[WndNum].pMdiTextEdit->StartCaretPos.x==MdiInfo[WndNum].pMdiTextEdit->EndCaretPos.x&&
     266            MdiInfo[WndNum].pMdiTextEdit->StartCaretPos.y==MdiInfo[WndNum].pMdiTextEdit->EndCaretPos.y){
    267267            //文字列を選択中でないとき
    268268
    269269            int sw=0;
    270270            if(bInputAndReset){
    271                 if(MdiInfo[WndNum].pmti->StartCaretPos.x>1){
    272                     MdiInfo[WndNum].pmti->StartCaretPos.x-=2;
     271                if(MdiInfo[WndNum].pMdiTextEdit->StartCaretPos.x>1){
     272                    MdiInfo[WndNum].pMdiTextEdit->StartCaretPos.x-=2;
    273273                    sw=1;
    274274                }
     
    276276
    277277            TextEdit_GetWordCaret(
    278                 MdiInfo[WndNum].pmti->hEdit,
     278                MdiInfo[WndNum].pMdiTextEdit->hEdit,
    279279                WndNum,
    280                 &MdiInfo[WndNum].pmti->StartCaretPos,
     280                &MdiInfo[WndNum].pMdiTextEdit->StartCaretPos,
    281281                &start,&end,
    282282                WORDCARET_BEFORE);
    283283
    284             if(sw) MdiInfo[WndNum].pmti->StartCaretPos.x+=2;
     284            if(sw) MdiInfo[WndNum].pMdiTextEdit->StartCaretPos.x+=2;
    285285
    286286            //半角文字列を選択時の全角とのズレを修正
    287287            POINT pos;
    288             GetCaretPosFromBufferIndex(MdiInfo[WndNum].pmti->buffer,start,&pos);
    289             start=GetBufferIndexFromCaretPos(MdiInfo[WndNum].pmti->buffer,pos.x,pos.y);
    290             GetCaretPosFromBufferIndex(MdiInfo[WndNum].pmti->buffer,end,&pos);
    291             end=GetBufferIndexFromCaretPos(MdiInfo[WndNum].pmti->buffer,pos.x,pos.y);
     288            GetCaretPosFromBufferIndex(MdiInfo[WndNum].pMdiTextEdit->buffer,start,&pos);
     289            start=GetBufferIndexFromCaretPos(MdiInfo[WndNum].pMdiTextEdit->buffer,pos.x,pos.y);
     290            GetCaretPosFromBufferIndex(MdiInfo[WndNum].pMdiTextEdit->buffer,end,&pos);
     291            end=GetBufferIndexFromCaretPos(MdiInfo[WndNum].pMdiTextEdit->buffer,pos.x,pos.y);
    292292        }
    293293        else{
    294294            //文字列を選択中のとき
    295295            start=GetBufferIndexFromCaretPos(
    296                 MdiInfo[WndNum].pmti->buffer,
    297                 MdiInfo[WndNum].pmti->StartCaretPos.x,
    298                 MdiInfo[WndNum].pmti->StartCaretPos.y);
     296                MdiInfo[WndNum].pMdiTextEdit->buffer,
     297                MdiInfo[WndNum].pMdiTextEdit->StartCaretPos.x,
     298                MdiInfo[WndNum].pMdiTextEdit->StartCaretPos.y);
    299299            end=GetBufferIndexFromCaretPos(
    300                 MdiInfo[WndNum].pmti->buffer,
    301                 MdiInfo[WndNum].pmti->EndCaretPos.x,
    302                 MdiInfo[WndNum].pmti->EndCaretPos.y);
     300                MdiInfo[WndNum].pMdiTextEdit->buffer,
     301                MdiInfo[WndNum].pMdiTextEdit->EndCaretPos.x,
     302                MdiInfo[WndNum].pMdiTextEdit->EndCaretPos.y);
    303303        }
    304304
     
    315315        if(length<0) length=0;
    316316        pTemp=(char *)HeapAlloc(hHeap,0,length+1024);
    317         memcpy(pTemp,MdiInfo[WndNum].pmti->buffer+start,length);
     317        memcpy(pTemp,MdiInfo[WndNum].pMdiTextEdit->buffer+start,length);
    318318        pTemp[length]=0;
    319319
     
    359359        char *pTemp,temporary[VN_SIZE];
    360360
    361         i=GetBufferIndexFromCaretPos(MdiInfo[WndNum].pmti->buffer,
    362             MdiInfo[WndNum].pmti->StartCaretPos.x,
    363             MdiInfo[WndNum].pmti->StartCaretPos.y);
     361        i=GetBufferIndexFromCaretPos(MdiInfo[WndNum].pMdiTextEdit->buffer,
     362            MdiInfo[WndNum].pMdiTextEdit->StartCaretPos.x,
     363            MdiInfo[WndNum].pMdiTextEdit->StartCaretPos.y);
    364364
    365365        if(i<ComplementWndInfo.iPos||ComplementWndInfo.iPos+ComplementWndInfo.iLength<i){
     
    384384            pTemp=(char *)HeapAlloc(hHeap,0,ComplementWndInfo.iLength+1);
    385385            memcpy(pTemp,
    386                 MdiInfo[WndNum].pmti->buffer+ComplementWndInfo.iPos,
     386                MdiInfo[WndNum].pMdiTextEdit->buffer+ComplementWndInfo.iPos,
    387387                ComplementWndInfo.iLength);
    388388            pTemp[ComplementWndInfo.iLength]=0;
     
    437437            pTemp=(char *)HeapAlloc(hHeap,0,ComplementWndInfo.iLength+1);
    438438            memcpy(pTemp,
    439                 MdiInfo[WndNum].pmti->buffer+ComplementWndInfo.iPos,
     439                MdiInfo[WndNum].pMdiTextEdit->buffer+ComplementWndInfo.iPos,
    440440                ComplementWndInfo.iLength);
    441441            pTemp[ComplementWndInfo.iLength]=0;
     
    468468
    469469    HWND hEdit;
    470     hEdit=MdiInfo[WndNum].pmti->hEdit;
    471 
    472     x=MdiInfo[WndNum].pmti->StartCaretPos.x;
    473     y=MdiInfo[WndNum].pmti->StartCaretPos.y;
     470    hEdit=MdiInfo[WndNum].pMdiTextEdit->hEdit;
     471
     472    x=MdiInfo[WndNum].pMdiTextEdit->StartCaretPos.x;
     473    y=MdiInfo[WndNum].pMdiTextEdit->StartCaretPos.y;
    474474    GetScrollBaseCaretPos(WndNum,&x,&y);
    475475
     
    544544    if(loose_y<0) loose_y=0;
    545545
    546     pBuf=MdiInfo[WndNum].pmti->buffer;
     546    pBuf=MdiInfo[WndNum].pMdiTextEdit->buffer;
    547547
    548548    // 行の確認
     
    668668
    669669    POINT *pCaretPos;
    670     pCaretPos=&MdiInfo[WndNum].pmti->StartCaretPos;
     670    pCaretPos=&MdiInfo[WndNum].pMdiTextEdit->StartCaretPos;
    671671
    672672    if(pCaretPos->x==0&&pCaretPos->y==0){
     
    675675    }
    676676
    677     pBuf=MdiInfo[WndNum].pmti->buffer;
     677    pBuf=MdiInfo[WndNum].pMdiTextEdit->buffer;
    678678
    679679    i=GetBufferIndexFromCaretPos(pBuf,
     
    721721    char *pBuf;
    722722
    723     pBuf=MdiInfo[WndNum].pmti->buffer;
     723    pBuf=MdiInfo[WndNum].pMdiTextEdit->buffer;
    724724
    725725    i=GetBufferIndexFromCaretPos(pBuf,
     
    779779
    780780    //上下のキャレット移動時には、左右方向の位置を保持する
    781     if(MdiInfo[WndNum].pmti->Temp_UpDown_CaretXPos==-1)
    782         MdiInfo[WndNum].pmti->Temp_UpDown_CaretXPos=pCaretPos->x;
     781    if(MdiInfo[WndNum].pMdiTextEdit->Temp_UpDown_CaretXPos==-1)
     782        MdiInfo[WndNum].pMdiTextEdit->Temp_UpDown_CaretXPos=pCaretPos->x;
    783783
    784784    pCaretPos->y--;
    785785
    786786    CaretPos_LooseToNatural(WndNum,
    787         MdiInfo[WndNum].pmti->Temp_UpDown_CaretXPos,
     787        MdiInfo[WndNum].pMdiTextEdit->Temp_UpDown_CaretXPos,
    788788        pCaretPos->y,
    789789        pCaretPos);
     
    796796
    797797    //上下のキャレット移動時には、左右方向の位置を保持する
    798     if(MdiInfo[WndNum].pmti->Temp_UpDown_CaretXPos==-1)
    799         MdiInfo[WndNum].pmti->Temp_UpDown_CaretXPos=pCaretPos->x;
     798    if(MdiInfo[WndNum].pMdiTextEdit->Temp_UpDown_CaretXPos==-1)
     799        MdiInfo[WndNum].pMdiTextEdit->Temp_UpDown_CaretXPos=pCaretPos->x;
    800800
    801801    pCaretPos->y++;
    802802
    803803    CaretPos_LooseToNatural(WndNum,
    804         MdiInfo[WndNum].pmti->Temp_UpDown_CaretXPos,
     804        MdiInfo[WndNum].pMdiTextEdit->Temp_UpDown_CaretXPos,
    805805        pCaretPos->y,
    806806        pCaretPos);
     
    818818
    819819    //上下のキャレット移動時には、左右方向の位置を保持する
    820     if(MdiInfo[WndNum].pmti->Temp_UpDown_CaretXPos==-1)
    821         MdiInfo[WndNum].pmti->Temp_UpDown_CaretXPos=pCaretPos->x;
     820    if(MdiInfo[WndNum].pMdiTextEdit->Temp_UpDown_CaretXPos==-1)
     821        MdiInfo[WndNum].pMdiTextEdit->Temp_UpDown_CaretXPos=pCaretPos->x;
    822822
    823823    SCROLLINFO si;
    824824    si.cbSize=sizeof(SCROLLINFO);
    825825    si.fMask=SIF_PAGE;
    826     GetScrollInfo(MdiInfo[WndNum].pmti->hEdit,SB_VERT,&si);
     826    GetScrollInfo(MdiInfo[WndNum].pMdiTextEdit->hEdit,SB_VERT,&si);
    827827    pCaretPos->y-=si.nPage;
    828828    if(pCaretPos->y<0) pCaretPos->y=0;
    829829
    830830    CaretPos_LooseToNatural(WndNum,
    831         MdiInfo[WndNum].pmti->Temp_UpDown_CaretXPos,
     831        MdiInfo[WndNum].pMdiTextEdit->Temp_UpDown_CaretXPos,
    832832        pCaretPos->y,
    833833        pCaretPos);
     
    840840
    841841    //上下のキャレット移動時には、左右方向の位置を保持する
    842     if(MdiInfo[WndNum].pmti->Temp_UpDown_CaretXPos==-1)
    843         MdiInfo[WndNum].pmti->Temp_UpDown_CaretXPos=pCaretPos->x;
     842    if(MdiInfo[WndNum].pMdiTextEdit->Temp_UpDown_CaretXPos==-1)
     843        MdiInfo[WndNum].pMdiTextEdit->Temp_UpDown_CaretXPos=pCaretPos->x;
    844844
    845845    SCROLLINFO si;
    846846    si.cbSize=sizeof(SCROLLINFO);
    847847    si.fMask=SIF_PAGE;
    848     GetScrollInfo(MdiInfo[WndNum].pmti->hEdit,SB_VERT,&si);
     848    GetScrollInfo(MdiInfo[WndNum].pMdiTextEdit->hEdit,SB_VERT,&si);
    849849    pCaretPos->y+=si.nPage;
    850850
    851851    CaretPos_LooseToNatural(WndNum,
    852         MdiInfo[WndNum].pmti->Temp_UpDown_CaretXPos,
     852        MdiInfo[WndNum].pMdiTextEdit->Temp_UpDown_CaretXPos,
    853853        pCaretPos->y,
    854854        pCaretPos);
Note: See TracChangeset for help on using the changeset viewer.