Changeset 625 in dev for trunk/ab5.0/abdev/abdev/abdev.cpp


Ignore:
Timestamp:
May 27, 2008, 9:17:34 PM (16 years ago)
Author:
dai_9181
Message:

・WindowInfoクラスをリファクタリング
・MdiInfoを単純配列からvectorに変更した。

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ab5.0/abdev/abdev/abdev.cpp

    r624 r625  
    9999    int i;
    100100    if(!IsWindow(hChild)) return -1;
    101     for(i=0;i<MAX_WNDNUM;i++){
     101    for(i=0;i<MdiInfo.size();i++){
    102102        if(hChild==MdiInfo[i].hwnd) break;
    103103    }
    104     if(i==MAX_WNDNUM) i=-1;
     104    if(i==MdiInfo.size()) i=-1;
    105105    return i;
    106106}
     
    119119        projectInfo.pobj_DBFileInfo->ppobj_FileInfo[i]->GetFullPath(temporary);
    120120
    121         if(lstrcmpi(MdiInfo[WndNum].path,temporary)==0) return i;
     121        if(lstrcmpi(MdiInfo[WndNum].path.c_str(),temporary)==0) return i;
    122122    }
    123123    return -1;
     
    643643    }
    644644    WndNum=GetWndNum(hChild);
    645     if(IS_DOCUMENT_TEXT(MdiInfo[WndNum].DocType)){
    646         pobj_MainMenu->EnableItem(IDM_PAGESET,MF_BYCOMMAND|MF_ENABLED);
    647 
    648         pobj_MainMenu->EnableItem(IDM_PREVIEW,MF_BYCOMMAND|MF_ENABLED);
    649 
    650         pobj_MainMenu->EnableItem(IDM_PRINTOUT,MF_BYCOMMAND|MF_ENABLED);
    651     }
    652     else{
    653         pobj_MainMenu->EnableItem(IDM_PAGESET,MF_BYCOMMAND|MF_GRAYED);
    654 
    655         pobj_MainMenu->EnableItem(IDM_PREVIEW,MF_BYCOMMAND|MF_GRAYED);
    656 
    657         pobj_MainMenu->EnableItem(IDM_PRINTOUT,MF_BYCOMMAND|MF_GRAYED);
     645    if( WndNum != -1 )
     646    {
     647        if(IS_DOCUMENT_TEXT(MdiInfo[WndNum].DocType)){
     648            pobj_MainMenu->EnableItem(IDM_PAGESET,MF_BYCOMMAND|MF_ENABLED);
     649
     650            pobj_MainMenu->EnableItem(IDM_PREVIEW,MF_BYCOMMAND|MF_ENABLED);
     651
     652            pobj_MainMenu->EnableItem(IDM_PRINTOUT,MF_BYCOMMAND|MF_ENABLED);
     653        }
     654        else{
     655            pobj_MainMenu->EnableItem(IDM_PAGESET,MF_BYCOMMAND|MF_GRAYED);
     656
     657            pobj_MainMenu->EnableItem(IDM_PREVIEW,MF_BYCOMMAND|MF_GRAYED);
     658
     659            pobj_MainMenu->EnableItem(IDM_PRINTOUT,MF_BYCOMMAND|MF_GRAYED);
     660        }
    658661    }
    659662}
     
    722725void DuplicateTitleCheck(char *lpszTitle){
    723726    int i;
    724     for(i=0;i<MAX_WNDNUM;i++){
     727    for(i=0;i<MdiInfo.size();i++){
    725728        if(MdiInfo[i].hwnd){
    726729            if(lstrcmpi(MdiInfo[i].title,lpszTitle)==0){
     
    747750            i=GetWndNum(hChild);
    748751            if(IS_DOCUMENT_TEXT(MdiInfo[i].DocType)){
    749                 if(lstrcmpi(MdiInfo[i].path,filepath)==0) break;
     752                if(lstrcmpi(MdiInfo[i].path.c_str(),filepath)==0) break;
    750753            }
    751754            hChild=GetNextWindow(hChild,GW_HWNDNEXT);
     
    890893        hChild,NULL,hInst,NULL);
    891894
     895
    892896    //ウィンドウのID登録
    893     for(i=0;i<MAX_WNDNUM;i++){
    894         if(MdiInfo[i].hwnd==0){
    895             MdiInfo[i].hwnd=hChild;
    896             MdiInfo[i].DocType=DocumentType;
    897             DuplicateTitleCheck(str);
    898             MdiInfo[i].title=(char *)GlobalAlloc(GMEM_FIXED,lstrlen(str)+1);
    899             lstrcpy(MdiInfo[i].title,str);
    900             if(filepath){
    901                 MdiInfo[i].path=(char *)GlobalAlloc(GMEM_FIXED,lstrlen(filepath)+1);
    902                 lstrcpy(MdiInfo[i].path,filepath);
    903             }
    904             else{
    905                 MdiInfo[i].path=(char *)GlobalAlloc(GPTR,1);
    906             }
    907 
    908             MdiInfo[i].pMdiTextEdit = new CMdiTextEdit( &MdiInfo[i] );
    909 
    910             MdiInfo[i].pMdiTextEdit->hEdit=hEdit;
    911             MdiInfo[i].pMdiTextEdit->pobj_WebResult=new CWebResult(hChild);
    912             MdiInfo[i].pMdiTextEdit->pobj_Ruler=new CRuler(hChild,i);
    913             MdiInfo[i].pMdiTextEdit->hIcon=shfi.hIcon;
    914             MdiInfo[i].pMdiTextEdit->buffer=buffer;
    915             MdiInfo[i].pMdiTextEdit->pColorRef=(COLORREF *)HeapAlloc(hHeap,HEAP_ZERO_MEMORY,sizeof(COLORREF)*lstrlen(buffer));
    916             MdiInfo[i].pMdiTextEdit->iUnderStart=-1;
    917             MdiInfo[i].pMdiTextEdit->iUnderEnd=-1;
    918             MdiInfo[i].pMdiTextEdit->StartCaretPos.x=0;
    919             MdiInfo[i].pMdiTextEdit->StartCaretPos.y=0;
    920             MdiInfo[i].pMdiTextEdit->EndCaretPos.x=0;
    921             MdiInfo[i].pMdiTextEdit->EndCaretPos.y=0;
    922             MdiInfo[i].pMdiTextEdit->Temp_UpDown_CaretXPos=-1;
    923             MdiInfo[i].pMdiTextEdit->bAutoScroll=0;
    924             MdiInfo[i].pMdiTextEdit->iWidth_ControlTabSpace=
    925                 GetControlTabSpace(i,&MdiInfo[i].pMdiTextEdit->iLineNumberTextCount);
    926             MdiInfo[i].pMdiTextEdit->iCharCode=iCharCode;
    927             MdiInfo[i].pMdiTextEdit->iLfCode=iLfCode;
    928 
    929             MdiInfo[i].IndentStr=0;
    930 
    931             int flag;
    932             if(mdic.style&WS_MAXIMIZE) flag=SIZE_MAXIMIZED;
    933             else flag=0;
    934             SendTextEditResizeEvent(hChild);
    935             break;
    936         }
    937     }
     897    MdiInfo.push_back( MDIINFO() );
     898    i = MdiInfo.size()-1;
     899    MdiInfo[i].hwnd=hChild;
     900    MdiInfo[i].DocType=DocumentType;
     901    MdiInfo[i].title="";
     902    DuplicateTitleCheck(str);
     903    MdiInfo[i].title=(char *)GlobalAlloc(GMEM_FIXED,lstrlen(str)+1);
     904    lstrcpy(MdiInfo[i].title,str);
     905    if(filepath)
     906    {
     907        MdiInfo[i].path = filepath;
     908    }
     909    else
     910    {
     911        MdiInfo[i].path = "";
     912    }
     913
     914    MdiInfo[i].pMdiTextEdit = new CMdiTextEdit( &MdiInfo[i] );
     915
     916    MdiInfo[i].pMdiTextEdit->hEdit=hEdit;
     917    MdiInfo[i].pMdiTextEdit->pobj_WebResult=new CWebResult(hChild);
     918    MdiInfo[i].pMdiTextEdit->pobj_Ruler=new CRuler(hChild,i);
     919    MdiInfo[i].pMdiTextEdit->hIcon=shfi.hIcon;
     920    MdiInfo[i].pMdiTextEdit->buffer=buffer;
     921    MdiInfo[i].pMdiTextEdit->pColorRef=(COLORREF *)HeapAlloc(hHeap,HEAP_ZERO_MEMORY,sizeof(COLORREF)*lstrlen(buffer));
     922    MdiInfo[i].pMdiTextEdit->iUnderStart=-1;
     923    MdiInfo[i].pMdiTextEdit->iUnderEnd=-1;
     924    MdiInfo[i].pMdiTextEdit->StartCaretPos.x=0;
     925    MdiInfo[i].pMdiTextEdit->StartCaretPos.y=0;
     926    MdiInfo[i].pMdiTextEdit->EndCaretPos.x=0;
     927    MdiInfo[i].pMdiTextEdit->EndCaretPos.y=0;
     928    MdiInfo[i].pMdiTextEdit->Temp_UpDown_CaretXPos=-1;
     929    MdiInfo[i].pMdiTextEdit->bAutoScroll=0;
     930    MdiInfo[i].pMdiTextEdit->iWidth_ControlTabSpace=
     931        GetControlTabSpace(i,&MdiInfo[i].pMdiTextEdit->iLineNumberTextCount);
     932    MdiInfo[i].pMdiTextEdit->iCharCode=iCharCode;
     933    MdiInfo[i].pMdiTextEdit->iLfCode=iLfCode;
     934    MdiInfo[i].IndentStr=0;
     935
     936
     937    int flag;
     938    if(mdic.style&WS_MAXIMIZE) flag=SIZE_MAXIMIZED;
     939    else flag=0;
     940    SendTextEditResizeEvent(hChild);
     941
    938942
    939943    //ワードカラーをセット
    940     if(IS_DOCUMENT_TEXT(DocumentType)) SetTextEditWordColor(i);
     944    if(IS_DOCUMENT_TEXT(DocumentType)) SetTextEditWordColor(MdiInfo.size()-1);
    941945
    942946    //Docコンボボックスに追加
     
    983987
    984988    GlobalFree(MdiInfo[WndNum].title);
    985     GlobalFree(MdiInfo[WndNum].path);
    986989
    987990    if(IS_DOCUMENT_TEXT(MdiInfo[WndNum].DocType)){
     
    10631066        HeapDefaultFree(MdiInfo[WndNum].MdiIconEditInfo);
    10641067    }
     1068    else
     1069    {
     1070        throw;
     1071    }
     1072
     1073    Jenga::Common::EraseVectorItem<std::vector<MDIINFO>>( MdiInfo, WndNum );
    10651074}
    10661075void ResizeTextEditWnd(HWND hwnd,int cx,int cy){
     
    17111720        if(!TranslateAccelerator(hOwner,hAccel,&msg)){
    17121721            if( projectInfo.IsOpened() ){
    1713                 for(i=0,i2=0;i<MAX_WNDNUM;i++){
     1722                for(i=0,i2=0;i<MdiInfo.size();i++){
    17141723                    if(MdiInfo[i].hwnd&&MdiInfo[i].DocType==WNDTYPE_RAD){
    17151724                        if(IsDialogMessage(MdiInfo[i].MdiRadInfo->hProp_Dlg,&msg)) i2=1;
Note: See TracChangeset for help on using the changeset viewer.