Changeset 24 in dev for ProjectEditor/TabCtrl.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/TabCtrl.cpp

    r3 r24  
    7373
    7474
    75 int CMainTab::search(char *lpszText){
     75int CMainTab::SearchItemIndex( const char *lpszText ){
    7676    int i2,i3;
    7777    char temporary[MAX_PATH];
     
    8686    for(i2=0;i2<i3;i2++){
    8787        TabCtrl_GetItem(hTab,i2,&tcItem);
     88
     89        //アスタリスクを取り除いて評価する
     90        if( tcItem.pszText[ lstrlen( tcItem.pszText ) -1 ] == '*' ){
     91            tcItem.pszText[ lstrlen( tcItem.pszText ) -1 ] = 0;
     92        }
     93
    8894        if(lstrcmpi(lpszText,tcItem.pszText)==0) break;
    8995    }
     
    9197
    9298    return i2;
     99}
     100void CMainTab::SetItemText( int index, const char *ItemText ){
     101    TC_ITEM tcItem;
     102    tcItem.mask=TCIF_TEXT;
     103    tcItem.pszText=(LPSTR)ItemText;
     104    tcItem.cchTextMax=MAX_PATH;
     105
     106    TabCtrl_SetItem(hTab,index,&tcItem);
     107}
     108void CMainTab::GetItemText( int index, char *ItemText ){
     109    TC_ITEM tcItem;
     110    tcItem.mask = TCIF_TEXT;
     111    tcItem.pszText = ItemText;
     112    tcItem.cchTextMax = MAX_PATH;
     113    TabCtrl_GetItem( hTab, index, &tcItem );
     114}
     115bool CMainTab::IsModified( int index ){
     116    //アスタリスク表示かどうかを判断する
     117
     118    //アイテム文字列を取得
     119    char ItemText[MAX_PATH];
     120    GetItemText( index, ItemText );
     121
     122    if( ItemText[ lstrlen( ItemText ) -1 ] == '*' ){
     123        //アスタリスクがあったとき
     124        return true;
     125    }
     126
     127    //その他
     128    return false;
    93129}
    94130
     
    126162}
    127163
    128 void CMainTab::insert(char *lpszText,BOOL bResize,COLORREF color){
     164void CMainTab::InsertItem( const char *lpszText, bool isResize, COLORREF color ){
    129165    int sw=0;
    130166    if(TabCtrl_GetItemCount(hTab)==0) sw=1;
     
    134170    TC_ITEM tcItem;
    135171    tcItem.mask=TCIF_TEXT|TCIF_PARAM;
    136     tcItem.pszText=lpszText;
     172    tcItem.pszText=(LPSTR)lpszText;
    137173    tcItem.lParam=color;
    138174    TabCtrl_InsertItem(hTab,0,&tcItem);
    139175    TabCtrl_SetCurSel(hTab,0);
    140176
    141     if(bResize){
     177    if(isResize){
    142178        if(sw) ResizeOwnerWnd();
    143179    }
    144180}
    145181
    146 void CMainTab::delete_item(char *lpszText,BOOL bResize){
     182void CMainTab::DeleteItem( const char *lpszText, bool isResize ){
    147183    int i2;
    148     i2=search(lpszText);
     184    i2=SearchItemIndex(lpszText);
    149185    if(i2==-1) return;
    150186
    151187    TabCtrl_DeleteItem(hTab,i2);
    152188
    153     if(bResize){
     189    if(isResize){
    154190        if(TabCtrl_GetItemCount(hTab)==0) ResizeOwnerWnd();
    155191    }
    156192}
    157193
    158 void CMainTab::reset_item(char *lpszOldText,char *lpszNewText){
     194void CMainTab::RenameItem( const char *lpszOldText, const char *lpszNewText ){
    159195    int i2;
    160     i2=search(lpszOldText);
     196    i2=SearchItemIndex(lpszOldText);
    161197    if(i2==-1) return;
    162198
    163     TC_ITEM tcItem;
    164     tcItem.mask=TCIF_TEXT;
    165     tcItem.pszText=lpszNewText;
    166     tcItem.cchTextMax=MAX_PATH;
    167 
    168     TabCtrl_SetItem(hTab,i2,&tcItem);
    169 }
    170 
    171 COLORREF CMainTab::GetItemColor(char *lpszText){
    172     int i2,i3;
     199    SetItemText( i2, lpszNewText );
     200}
     201
     202void CMainTab::NofityModifyDocument( const char *ItemText ){
     203    //ドキュメントが変更されたとき、アスタリスクを付けて表示する
     204
     205    //インデックスを取得
     206    int index = SearchItemIndex( ItemText );
     207    if( index == -1 ) return;
     208
     209    //既にアスタリスク表示されていた場合は抜ける
     210    if( IsModified( index ) ) return;
     211
     212    //アスタリスクを付加
    173213    char temporary[MAX_PATH];
    174 
    175     i3=TabCtrl_GetItemCount(hTab);
    176 
    177     TC_ITEM tcItem;
    178     tcItem.mask=TCIF_TEXT|TCIF_PARAM;
    179     tcItem.pszText=temporary;
    180     tcItem.cchTextMax=MAX_PATH;
    181 
    182     for(i2=0;i2<i3;i2++){
    183         TabCtrl_GetItem(hTab,i2,&tcItem);
    184         if(lstrcmpi(lpszText,tcItem.pszText)==0) return tcItem.lParam;
    185     }
    186     return -1;
     214    lstrcpy( temporary, ItemText );
     215    lstrcat( temporary, "*" );
     216
     217    //タブアイテムを更新
     218    SetItemText( index, temporary );
     219}
     220void CMainTab::NofityUnModifyDocument( const char *ItemText ){
     221    //ドキュメントが保存されたとき、アスタリスクを非表示にする
     222
     223    //インデックスを取得
     224    int index = SearchItemIndex( ItemText );
     225    if( index == -1 ) return;
     226
     227    //既にアスタリスクが非表示の場合は抜ける
     228    if( ! IsModified( index ) ) return;
     229
     230    //タブアイテムを更新
     231    SetItemText( index, ItemText );
     232}
     233
     234COLORREF CMainTab::GetItemColor( char *ItemText ){
     235    //インデックスを取得
     236    int index = SearchItemIndex( ItemText );
     237    if( index == -1 ) return -1;
     238
     239    TC_ITEM tcItem;
     240    tcItem.mask = TCIF_PARAM;
     241    TabCtrl_GetItem( hTab, index, &tcItem );
     242    return tcItem.lParam;
    187243}
    188244
     
    207263void CMainTab::MdiActiveEvent(char *lpszText){
    208264    int i2;
    209     i2=search(lpszText);
     265    i2=SearchItemIndex(lpszText);
    210266    if(i2==-1) return;
    211267
Note: See TracChangeset for help on using the changeset viewer.