Changeset 492 in dev for trunk/ab5.0/abdev/abdev/src


Ignore:
Timestamp:
Apr 17, 2008, 1:37:40 AM (16 years ago)
Author:
dai_9181
Message:

下記メッセージをMainFrameクラスに実装しなおした
WM_TIMER
WM_DRAWCLIPBOARD
WM_MENUSELECT
WM_INITMENU
WM_MEASUREITEM
WM_DRAWITEM
WM_NOTIFY

File:
1 edited

Legend:

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

    r489 r492  
    6565    return 0;
    6666}
     67
     68void backup(void *dummy);
     69void MainFrame::OnTimer( UINT_PTR id )
     70{
     71    switch( id )
     72    {
     73    case ID_TIMER_BACKUP:
     74        _beginthread( backup, 0, 0 );
     75        break;
     76
     77#ifndef THETEXT
     78    case ID_DEBUGSAFTY:
     79        {
     80            //BasicCompiler.exeが強制終了しているかどうかを検証
     81            extern CDebugger *pobj_Debugger;
     82            pobj_Debugger->SaftyCheck();
     83            break;
     84        }
     85#endif
     86    }
     87}
     88
     89void ResetState_EditMenu(void);
     90void MainFrame::OnDrawClipboard()
     91{
     92    ResetState_EditMenu();
     93}
     94
     95void MenuAdvice(WPARAM msg);
     96void MainFrame::OnMenuSelect( UINT nItemID, UINT nFlags, CMenu menu )
     97{
     98    MenuAdvice( nItemID );
     99}
     100
     101void MainFrame::OnInitMenu( CMenu menu )
     102{
     103    extern CNonVolatile *pobj_nv;
     104    extern CSubMenuEx *pobj_FileHistoryMenu;
     105    pobj_nv->pobj_History->ResetFileMenu(pobj_FileHistoryMenu,1);
     106#ifndef THETEXT
     107    extern CSubMenuEx *pobj_ProjectHistoryMenu;
     108    pobj_nv->pobj_ProjectHistory->ResetFileMenu(pobj_ProjectHistoryMenu,0);
     109#endif
     110}
     111
     112void MainFrame::OnMeasureItem( int nIDCtl, LPMEASUREITEMSTRUCT lpMI )
     113{
     114    if(lpMI->CtlType==ODT_MENU){
     115        SIZE size;
     116        CMenuItemData *pobj_MenuItemData;
     117        pobj_MenuItemData=(CMenuItemData *)lpMI->itemData;
     118        if(pobj_MenuItemData->pobj_ThisMenu->hMenu==pobj_MainMenu->hMenu){
     119            //メインメニューの親アイテム
     120            pobj_MainMenu->GetItemSize(pobj_MenuItemData->item_index,&size);
     121            lpMI->itemWidth = size.cx;
     122            lpMI->itemHeight = size.cy;
     123        }
     124        else{
     125            //メインメニューにぶらさがるサブメニュー
     126            pobj_MenuItemData->pobj_ThisMenu->GetItemSize(pobj_MenuItemData->item_index,&size);
     127            lpMI->itemWidth = size.cx;
     128            lpMI->itemHeight = size.cy;
     129        }
     130    }
     131}
     132
     133void MainFrame::OnDrawItem( int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct )
     134{
     135    if(lpDrawItemStruct->CtlType==ODT_MENU){
     136        if(!pobj_MainMenu) return;
     137
     138        CMenuItemData *pobj_MenuItemData;
     139        pobj_MenuItemData=(CMenuItemData *)lpDrawItemStruct->itemData;
     140        if(pobj_MainMenu->hMenu==pobj_MenuItemData->pobj_ThisMenu->hMenu){
     141            //メインメニューの親アイテム
     142            pobj_MainMenu->OwnerDrawMenu(lpDrawItemStruct->hDC,
     143                &lpDrawItemStruct->rcItem,
     144                (lpDrawItemStruct->itemState&ODS_SELECTED)!=0,
     145                pobj_MenuItemData->item_index);
     146        }
     147        else{
     148            //メインメニューにぶらさがるサブメニュー
     149            pobj_MainMenu->OwnerDrawSubMenu(pobj_MenuItemData->pobj_ThisMenu->hMenu,
     150                lpDrawItemStruct->hDC,
     151                &lpDrawItemStruct->rcItem,
     152                (lpDrawItemStruct->itemState&ODS_SELECTED)!=0,
     153                pobj_MenuItemData->item_index);
     154        }
     155    }
     156}
     157
     158LRESULT MainFrame::OnNotify( int idCtrl, LPNMHDR pnmh )
     159{
     160    NMPGCALCSIZE *lpCalcSize;
     161    NMPGSCROLL *lpScroll;
     162
     163    if(!pnmh) return 0;
     164    LPTOOLTIPTEXT TipText=(LPTOOLTIPTEXT)pnmh;
     165    if(TipText->hdr.code==TTN_NEEDTEXT) ShowToolTipText(TipText);
     166
     167    extern HWND hStandardToolbarPager;
     168    extern HWND hDebuggerToolbarPager;
     169    if(pobj_Rebar){
     170        //レバーオブジェクトが存在するとき
     171        if(pnmh->hwndFrom==pobj_Rebar->hRebar&&pnmh->code==RBN_HEIGHTCHANGE){
     172            ResizeOwnerWnd();
     173            return 0;
     174        }
     175    }
     176    if(pnmh->hwndFrom==hStandardToolbarPager){
     177        if(pnmh->code==PGN_CALCSIZE){
     178            lpCalcSize=(LPNMPGCALCSIZE)pnmh;
     179            if(lpCalcSize->dwFlag==PGF_CALCWIDTH)
     180                lpCalcSize->iWidth=BMPNUM_STANDARDTOOLBAR*23+SEPNUM_STANDARDTOOLBAR*8;
     181        }
     182        else if(pnmh->code==PGN_SCROLL){
     183            lpScroll=(LPNMPGSCROLL)pnmh;
     184            lpScroll->iScroll=20;
     185        }
     186    }
     187    else if(pnmh->hwndFrom==hDebuggerToolbarPager){
     188        if(pnmh->code==PGN_CALCSIZE){
     189            lpCalcSize=(LPNMPGCALCSIZE)pnmh;
     190            if(lpCalcSize->dwFlag==PGF_CALCWIDTH)
     191                lpCalcSize->iWidth=BMPNUM_DEBUGGERTOOLBAR*23+SEPNUM_DEBUGGERTOOLBAR*8;
     192        }
     193        else if(pnmh->code==PGN_SCROLL){
     194            lpScroll=(LPNMPGSCROLL)pnmh;
     195            lpScroll->iScroll=20;
     196        }
     197    }
     198
     199    if(pobj_MainTab){
     200        if(pnmh->hwndFrom==pobj_MainTab->hTab){
     201            if(pnmh->code==TCN_SELCHANGE)
     202                pobj_MainTab->SelChangeEvent();
     203
     204            if(pnmh->code==NM_RCLICK){
     205
     206                TCHITTESTINFO tcHitTest;
     207                GetCursorPos(&tcHitTest.pt);
     208                ::ScreenToClient(pobj_MainTab->hTab,&tcHitTest.pt);
     209                int index = TabCtrl_HitTest(pobj_MainTab->hTab,&tcHitTest);
     210                if( index == -1 ) return 0;
     211
     212                TabCtrl_SetCurSel(pobj_MainTab->hTab,index);
     213
     214                pobj_MainTab->SelChangeEvent();
     215
     216
     217                /////////////////////
     218                // メニューを表示
     219                /////////////////////
     220
     221                HWND hChild=::GetWindow(hClient,GW_CHILD);
     222                int WndNum=GetWndNum(hChild);
     223
     224                //保存コマンドの文字列をセット
     225                char temporary[1024], temp2[1024];
     226                MENUITEMINFO mii;
     227                mii.cbSize=sizeof(MENUITEMINFO);
     228                mii.fMask=MIIM_TYPE;
     229                mii.dwTypeData=temporary;
     230                mii.fType=MFT_STRING;
     231                if(MdiInfo[WndNum].path[0]){
     232                    _splitpath(MdiInfo[WndNum].path,NULL,NULL,temporary,temp2);
     233                    lstrcat(temporary,temp2);
     234                    lstrcat(temporary," を保存(&S)");
     235                }
     236                else{
     237                    lstrcpy(temporary,"保存(&S)");
     238                }
     239                extern HMENU hTabMenu;
     240                SetMenuItemInfo(hTabMenu,IDM_SAVE,FALSE,&mii);
     241
     242                /*「絶対パスをコピー」「フォルダを開く」「ファイルを削除」
     243                                                コマンドを場合によって無効化にする */
     244                if(MdiInfo[WndNum].path[0]){
     245                    EnableMenuItem(hTabMenu,IDM_PATH_COPY,MF_BYCOMMAND|MF_ENABLED);
     246                    EnableMenuItem(hTabMenu,IDM_FOLDER_OPEN,MF_BYCOMMAND|MF_ENABLED);
     247                    EnableMenuItem(hTabMenu,IDM_DELETE_FILE,MF_BYCOMMAND|MF_ENABLED);
     248                }
     249                else{
     250                    EnableMenuItem(hTabMenu,IDM_PATH_COPY,MF_BYCOMMAND|MF_GRAYED);
     251                    EnableMenuItem(hTabMenu,IDM_FOLDER_OPEN,MF_BYCOMMAND|MF_GRAYED);
     252                    EnableMenuItem(hTabMenu,IDM_DELETE_FILE,MF_BYCOMMAND|MF_GRAYED);
     253                }
     254
     255                POINT MousePos;
     256                GetCursorPos(&MousePos);
     257                TrackPopupMenu(hTabMenu,TPM_LEFTALIGN|TPM_RIGHTBUTTON,MousePos.x,MousePos.y,0,hOwner,NULL);
     258            }
     259        }
     260    }
     261    if(pobj_SideWeb){
     262        if(pnmh->hwndFrom==pobj_SideWeb->hTab&&pnmh->code==TCN_SELCHANGE){
     263            pobj_SideWeb->SelChangeEvent();
     264        }
     265    }
     266
     267    return 0;
     268}
Note: See TracChangeset for help on using the changeset viewer.