Changeset 24 in dev for ProjectEditor/ProjectEditor.cpp


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

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • ProjectEditor/ProjectEditor.cpp

    r22 r24  
    135135        if(IS_DOCUMENT_TEXT(MdiInfo[WndNum].DocType)){
    136136            //コントロールタブスペースの幅と行番号の文字数を更新
    137             MdiInfo[WndNum].pmti->iWidth_ControlTabSpace=
    138                 GetControlTabSpace(WndNum,&MdiInfo[WndNum].pmti->iLineNumberTextCount);
    139 
    140             InvalidateRect(MdiInfo[WndNum].pmti->hEdit,NULL,0);
    141             InvalidateRect(MdiInfo[WndNum].pmti->pobj_Ruler->hRulerWnd,NULL,0);
     137            MdiInfo[WndNum].pMdiTextEdit->iWidth_ControlTabSpace=
     138                GetControlTabSpace(WndNum,&MdiInfo[WndNum].pMdiTextEdit->iLineNumberTextCount);
     139
     140            InvalidateRect(MdiInfo[WndNum].pMdiTextEdit->hEdit,NULL,0);
     141            InvalidateRect(MdiInfo[WndNum].pMdiTextEdit->pobj_Ruler->hRulerWnd,NULL,0);
    142142
    143143            SendTextEditResizeEvent(MdiInfo[WndNum].hwnd);
     
    160160    sw=0;
    161161    if(IS_DOCUMENT_TEXT(MdiInfo[WndNum].DocType)){
    162         if(MdiInfo[WndNum].pmti->bModify) sw=1;
     162        if( MdiInfo[WndNum].pMdiTextEdit->IsModified() ) sw=1;
    163163    }
    164164    else if(MdiInfo[WndNum].DocType==WNDTYPE_ICONEDIT){
     
    205205
    206206        //サイズ
    207         BufSize=(double)lstrlen(MdiInfo[WndNum].pmti->buffer);
     207        BufSize=(double)lstrlen(MdiInfo[WndNum].pMdiTextEdit->buffer);
    208208        if(IsWindow(hChild)){
    209209            if(BufSize<1024) sprintf(temporary,"%s: %.0fByte",STRING_SIZE,BufSize);
     
    225225            //日本語
    226226            sprintf(temporary,"%d 行、%d 列",
    227                 MdiInfo[WndNum].pmti->StartCaretPos.y+1,
    228                 MdiInfo[WndNum].pmti->StartCaretPos.x+1);
     227                MdiInfo[WndNum].pMdiTextEdit->StartCaretPos.y+1,
     228                MdiInfo[WndNum].pMdiTextEdit->StartCaretPos.x+1);
    229229#else
    230230            //英語
    231231            sprintf(temporary,"%d : %d",
    232                 MdiInfo[WndNum].pmti->StartCaretPos.y+1,
    233                 MdiInfo[WndNum].pmti->StartCaretPos.x+1);
     232                MdiInfo[WndNum].pMdiTextEdit->StartCaretPos.y+1,
     233                MdiInfo[WndNum].pMdiTextEdit->StartCaretPos.x+1);
    234234#endif
    235235        }
     
    238238
    239239        //文字コード
    240         nkf.GetCharCodeName(MdiInfo[WndNum].pmti->iCharCode,temporary);
     240        nkf.GetCharCodeName(MdiInfo[WndNum].pMdiTextEdit->iCharCode,temporary);
    241241        SendMessage(hStatusBar,SB_SETTEXT,3,(LPARAM)temporary);
    242242
    243243        //文字コード
    244         nkf.GetLfCodeName(MdiInfo[WndNum].pmti->iLfCode,temporary);
     244        nkf.GetLfCodeName(MdiInfo[WndNum].pMdiTextEdit->iLfCode,temporary);
    245245        SendMessage(hStatusBar,SB_SETTEXT,4,(LPARAM)temporary);
    246246    }
     
    310310    }
    311311    else if(IS_DOCUMENT_TEXT(MdiInfo[i].DocType)){
    312         i2=MdiInfo[i].edit_undo->NowPos-1;
     312        i2=MdiInfo[i].pMdiTextEdit->pTextEditUndoState->NowPos-1;
    313313        if(i2==-1) i2=MAX_UNDONUM-1;
    314         if(!MdiInfo[i].edit_undo->Command[i2]){
     314        if(!MdiInfo[i].pMdiTextEdit->pTextEditUndoState->Command[i2]){
    315315            pobj_MainMenu->EnableItem(IDM_UNDO,MF_BYCOMMAND|MF_GRAYED);
    316316            EnableMenuItem(hEditMenu,IDM_UNDO,MF_BYCOMMAND|MF_GRAYED);
     
    322322            pobj_StandardToolbar->EnableItem(IDM_UNDO,1);
    323323        }
    324         if(!MdiInfo[i].edit_undo->Command[MdiInfo[i].edit_undo->NowPos]){
     324        if(!MdiInfo[i].pMdiTextEdit->pTextEditUndoState->Command[MdiInfo[i].pMdiTextEdit->pTextEditUndoState->NowPos]){
    325325            pobj_MainMenu->EnableItem(IDM_REDO,MF_BYCOMMAND|MF_GRAYED);
    326326            EnableMenuItem(hEditMenu,IDM_REDO,MF_BYCOMMAND|MF_GRAYED);
     
    461461        hChild=GetWindow(hChild,GW_CHILD);
    462462        if(!(
    463             MdiInfo[WndNum].pmti->StartCaretPos.x==MdiInfo[WndNum].pmti->EndCaretPos.x&&
    464             MdiInfo[WndNum].pmti->StartCaretPos.y==MdiInfo[WndNum].pmti->EndCaretPos.y
     463            MdiInfo[WndNum].pMdiTextEdit->StartCaretPos.x==MdiInfo[WndNum].pMdiTextEdit->EndCaretPos.x&&
     464            MdiInfo[WndNum].pMdiTextEdit->StartCaretPos.y==MdiInfo[WndNum].pMdiTextEdit->EndCaretPos.y
    465465            )){
    466466            MenuMsg=MF_BYCOMMAND|MF_ENABLED;
     
    901901            }
    902902
    903             MdiInfo[i].pmti=(MDITEXTEDITINFO *)HeapAlloc(hHeap,0,sizeof(MDITEXTEDITINFO));
    904 
    905             MdiInfo[i].pmti->hEdit=hEdit;
    906             MdiInfo[i].pmti->pobj_WebResult=new CWebResult(hChild);
    907             MdiInfo[i].pmti->pobj_Ruler=new CRuler(hChild,i);
    908             MdiInfo[i].pmti->hIcon=shfi.hIcon;
    909             MdiInfo[i].pmti->buffer=buffer;
    910             MdiInfo[i].pmti->pColorRef=(COLORREF *)HeapAlloc(hHeap,HEAP_ZERO_MEMORY,sizeof(COLORREF)*lstrlen(buffer));
    911             MdiInfo[i].pmti->iUnderStart=-1;
    912             MdiInfo[i].pmti->iUnderEnd=-1;
    913             MdiInfo[i].pmti->StartCaretPos.x=0;
    914             MdiInfo[i].pmti->StartCaretPos.y=0;
    915             MdiInfo[i].pmti->EndCaretPos.x=0;
    916             MdiInfo[i].pmti->EndCaretPos.y=0;
    917             MdiInfo[i].pmti->Temp_UpDown_CaretXPos=-1;
    918             MdiInfo[i].pmti->bAutoScroll=0;
    919             MdiInfo[i].pmti->iWidth_ControlTabSpace=
    920                 GetControlTabSpace(i,&MdiInfo[i].pmti->iLineNumberTextCount);
    921             MdiInfo[i].pmti->iCharCode=iCharCode;
    922             MdiInfo[i].pmti->iLfCode=iLfCode;
    923             MdiInfo[i].pmti->bModify=0;
     903            MdiInfo[i].pMdiTextEdit = new CMdiTextEdit( &MdiInfo[i] );
     904
     905            MdiInfo[i].pMdiTextEdit->hEdit=hEdit;
     906            MdiInfo[i].pMdiTextEdit->pobj_WebResult=new CWebResult(hChild);
     907            MdiInfo[i].pMdiTextEdit->pobj_Ruler=new CRuler(hChild,i);
     908            MdiInfo[i].pMdiTextEdit->hIcon=shfi.hIcon;
     909            MdiInfo[i].pMdiTextEdit->buffer=buffer;
     910            MdiInfo[i].pMdiTextEdit->pColorRef=(COLORREF *)HeapAlloc(hHeap,HEAP_ZERO_MEMORY,sizeof(COLORREF)*lstrlen(buffer));
     911            MdiInfo[i].pMdiTextEdit->iUnderStart=-1;
     912            MdiInfo[i].pMdiTextEdit->iUnderEnd=-1;
     913            MdiInfo[i].pMdiTextEdit->StartCaretPos.x=0;
     914            MdiInfo[i].pMdiTextEdit->StartCaretPos.y=0;
     915            MdiInfo[i].pMdiTextEdit->EndCaretPos.x=0;
     916            MdiInfo[i].pMdiTextEdit->EndCaretPos.y=0;
     917            MdiInfo[i].pMdiTextEdit->Temp_UpDown_CaretXPos=-1;
     918            MdiInfo[i].pMdiTextEdit->bAutoScroll=0;
     919            MdiInfo[i].pMdiTextEdit->iWidth_ControlTabSpace=
     920                GetControlTabSpace(i,&MdiInfo[i].pMdiTextEdit->iLineNumberTextCount);
     921            MdiInfo[i].pMdiTextEdit->iCharCode=iCharCode;
     922            MdiInfo[i].pMdiTextEdit->iLfCode=iLfCode;
    924923
    925924            MdiInfo[i].IndentStr=0;
    926 
    927             MdiInfo[i].edit_undo=(TEXTEDIT_UNDOSTATE *)GlobalAlloc(GPTR,sizeof(TEXTEDIT_UNDOSTATE));
    928             MdiInfo[i].edit_undo->NowPos=0;
    929925
    930926            int flag;
     
    945941
    946942    //タブに追加
    947     pobj_MainTab->insert(str,1,TabColor);
     943    pobj_MainTab->InsertItem( str, true, TabColor );
    948944
    949945    SetFocus(hEdit);
     
    10181014
    10191015    //タブコントロールからアイテムを消去
    1020     if(pobj_MainTab) pobj_MainTab->delete_item(MdiInfo[WndNum].title,1);
     1016    if(pobj_MainTab) pobj_MainTab->DeleteItem( MdiInfo[WndNum].title, true );
    10211017
    10221018
     
    10361032        }
    10371033
    1038         for(i2=0;i2<MAX_UNDONUM;i2++){
    1039             if(MdiInfo[WndNum].edit_undo->Command[i2])
    1040                 TextEdit_DeleteUndoData(WndNum,i2);
    1041         }
    1042         GlobalFree(MdiInfo[WndNum].edit_undo);
    1043 
    1044         HeapDefaultFree(MdiInfo[WndNum].pmti->buffer);
    1045         HeapDefaultFree(MdiInfo[WndNum].pmti->pColorRef);
     1034        HeapDefaultFree(MdiInfo[WndNum].pMdiTextEdit->buffer);
     1035        HeapDefaultFree(MdiInfo[WndNum].pMdiTextEdit->pColorRef);
    10461036
    10471037        if(MdiInfo[WndNum].IndentStr) HeapDefaultFree(MdiInfo[WndNum].IndentStr);
    10481038
    10491039        //エディットコントロールを破棄
    1050         DestroyWindow(MdiInfo[WndNum].pmti->hEdit);
     1040        DestroyWindow(MdiInfo[WndNum].pMdiTextEdit->hEdit);
    10511041
    10521042        //Web検索ウィンドウを破棄
    1053         delete MdiInfo[WndNum].pmti->pobj_WebResult;
    1054         MdiInfo[WndNum].pmti->pobj_WebResult=0;
     1043        delete MdiInfo[WndNum].pMdiTextEdit->pobj_WebResult;
     1044        MdiInfo[WndNum].pMdiTextEdit->pobj_WebResult=0;
    10551045
    10561046        //ルーラーウィンドウを破棄
    1057         delete MdiInfo[WndNum].pmti->pobj_Ruler;
    1058         MdiInfo[WndNum].pmti->pobj_Ruler=0;
     1047        delete MdiInfo[WndNum].pMdiTextEdit->pobj_Ruler;
     1048        MdiInfo[WndNum].pMdiTextEdit->pobj_Ruler=0;
    10591049
    10601050        //アイコンを破棄
    1061         if(MdiInfo[WndNum].pmti->hIcon) DestroyIcon(MdiInfo[WndNum].pmti->hIcon);
    1062 
    1063         HeapDefaultFree(MdiInfo[WndNum].pmti);
    1064         MdiInfo[WndNum].pmti=0;
     1051        if(MdiInfo[WndNum].pMdiTextEdit->hIcon) DestroyIcon(MdiInfo[WndNum].pMdiTextEdit->hIcon);
     1052
     1053        delete MdiInfo[WndNum].pMdiTextEdit;
     1054        MdiInfo[WndNum].pMdiTextEdit=0;
    10651055    }
    10661056    else if(MdiInfo[WndNum].DocType==WNDTYPE_RAD){
     
    11221112    if(pobj_nv->bEditor_Ruler){
    11231113        //ルーラー
    1124         MdiInfo[WndNum].pmti->pobj_Ruler->resize(
     1114        MdiInfo[WndNum].pMdiTextEdit->pobj_Ruler->resize(
    11251115            0,
    11261116            0,
     
    11301120        iHeightRuler=HEIGHT_RULER;
    11311121
    1132         ShowWindow(MdiInfo[WndNum].pmti->pobj_Ruler->hRulerWnd,SW_SHOW);
     1122        ShowWindow(MdiInfo[WndNum].pMdiTextEdit->pobj_Ruler->hRulerWnd,SW_SHOW);
    11331123    }
    11341124    else{
    11351125        iHeightRuler=0;
    11361126
    1137         ShowWindow(MdiInfo[WndNum].pmti->pobj_Ruler->hRulerWnd,SW_HIDE);
     1127        ShowWindow(MdiInfo[WndNum].pMdiTextEdit->pobj_Ruler->hRulerWnd,SW_HIDE);
    11381128    }
    11391129
    11401130    //エディットウィンドウ
    1141     MoveWindow(MdiInfo[WndNum].pmti->hEdit,
     1131    MoveWindow(MdiInfo[WndNum].pMdiTextEdit->hEdit,
    11421132        0,
    11431133        iHeightRuler,
     
    11471137
    11481138    //Web検索ウィンドウ
    1149     MdiInfo[WndNum].pmti->pobj_WebResult->resize(
     1139    MdiInfo[WndNum].pMdiTextEdit->pobj_WebResult->resize(
    11501140        0,
    11511141        cy-WebResultWndHeight,
     
    16871677                        hGlobal=(char *)GlobalAlloc(GMEM_MOVEABLE,CharRange.cpMax-CharRange.cpMin+1);
    16881678                        pTemp=(char *)GlobalLock(hGlobal);
    1689                         memcpy(pTemp,MdiInfo[WndNum].pmti->buffer+CharRange.cpMin,CharRange.cpMax-CharRange.cpMin);
     1679                        memcpy(pTemp,MdiInfo[WndNum].pMdiTextEdit->buffer+CharRange.cpMin,CharRange.cpMax-CharRange.cpMin);
    16901680                        pTemp[CharRange.cpMax-CharRange.cpMin]=0;
    16911681                        GlobalUnlock(hGlobal);
     
    17431733                        hGlobal=(char *)GlobalAlloc(GMEM_MOVEABLE,CharRange.cpMax-CharRange.cpMin+1);
    17441734                        pTemp=(char *)GlobalLock(hGlobal);
    1745                         memcpy(pTemp,MdiInfo[WndNum].pmti->buffer+CharRange.cpMin,CharRange.cpMax-CharRange.cpMin);
     1735                        memcpy(pTemp,MdiInfo[WndNum].pMdiTextEdit->buffer+CharRange.cpMin,CharRange.cpMax-CharRange.cpMin);
    17461736                        pTemp[CharRange.cpMax-CharRange.cpMin]=0;
    17471737                        GlobalUnlock(hGlobal);
     
    18531843                        hEdit=GetWindow(hChild,GW_CHILD);
    18541844
    1855                         MdiInfo[WndNum].pmti->StartCaretPos.x=0;
    1856                         MdiInfo[WndNum].pmti->StartCaretPos.y=0;
     1845                        MdiInfo[WndNum].pMdiTextEdit->StartCaretPos.x=0;
     1846                        MdiInfo[WndNum].pMdiTextEdit->StartCaretPos.y=0;
    18571847
    18581848                        GetCaretPosFromBufferIndex(
    1859                             MdiInfo[WndNum].pmti->buffer,
    1860                             lstrlen(MdiInfo[WndNum].pmti->buffer),
    1861                             &MdiInfo[WndNum].pmti->EndCaretPos);
     1849                            MdiInfo[WndNum].pMdiTextEdit->buffer,
     1850                            lstrlen(MdiInfo[WndNum].pMdiTextEdit->buffer),
     1851                            &MdiInfo[WndNum].pMdiTextEdit->EndCaretPos);
    18621852
    18631853                        InvalidateRect(hEdit,NULL,0);
     
    24432433
    24442434                    //閉じる
    2445                     MdiInfo[WndNum].pmti->bModify=0;
     2435                    MdiInfo[WndNum].pMdiTextEdit->UnModify();
    24462436                    SendMessage(MdiInfo[WndNum].hwnd,WM_CLOSE,0,0);
    24472437
     
    25522542            UpdateWindow(hChild);
    25532543
    2554             pTemp=MdiInfo[WndNum].pmti->buffer;
     2544            pTemp=MdiInfo[WndNum].pMdiTextEdit->buffer;
    25552545
    25562546            //行の先頭インデックスを取得(取得する行の番号はwParamで渡される)
Note: See TracChangeset for help on using the changeset viewer.