Changeset 501 in dev for trunk/ab5.0/abdev


Ignore:
Timestamp:
Apr 24, 2008, 1:03:58 PM (17 years ago)
Author:
dai_9181
Message:

いくつかのメニューをMainFrameに実装しなおした

Location:
trunk/ab5.0/abdev/abdev
Files:
3 edited

Legend:

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

    r500 r501  
    13301330    POINT pos;
    13311331    HDROP hDrop;
    1332     HGLOBAL hGlobal;
    13331332
    13341333    static COLORREF colorUser=RGB(255,255,255);
     
    13531352            switch(LOWORD(wParam)){
    13541353
    1355 #ifndef THETEXT
    1356 
    1357 
    1358                 ////////////////////////
    1359                 // デバッグ コマンド
    1360                 ////////////////////////
    1361 
    1362                 case IDM_STEP_IN:
    1363                     pobj_Debugger->StepIn();
    1364                     break;
    1365                 case IDM_STEP_OVER:
    1366                     pobj_Debugger->StepOver();
    1367                     break;
    1368                 case IDM_STEP_CURSOR:
    1369                     pobj_Debugger->StepToCursor();
    1370                     break;
    1371                 case IDM_BREAKPOINT:
    1372                     if(ProjectInfo.name[0]){
    1373                         ProjectInfo.pobj_DBBreakPoint->Event_BreakPoint();
    1374                     }
    1375                     else{
    1376                         pobj_DBBreakPoint->Event_BreakPoint();
    1377                     }
    1378                     break;
    1379                 case IDM_DEBUG_STOP:
    1380                     pobj_Debugger->DebugStop();
    1381                     break;
    1382                 case IDM_DEBUG_PAUSE:
    1383                     pobj_Debugger->DebugPause();
    1384                     break;
    1385 
    1386 
    1387                 case IDM_COMMUNITY:
    1388                     ShellExecute(hwnd,"open","iexplore.exe",
    1389                         "http://www.activebasic.com/forum/",
    1390                         NULL,SW_SHOWNORMAL);
    1391                     return 0;
    1392                 case IDM_COMMU_SEARCH:
    1393                     ShellExecute(hwnd,"open","iexplore.exe",
    1394                         "http://www.activebasic.com/forum/search.php",
    1395                         NULL,SW_SHOWNORMAL);
    1396                     return 0;
    1397                 case IDM_COMMU_PM:
    1398                     ShellExecute(hwnd,"open","iexplore.exe",
    1399                         "http://www.activebasic.com/forum/privmsg.php?folder=inbox",
    1400                         NULL,SW_SHOWNORMAL);
    1401                     return 0;
    1402                 case ID_COMMU_FORUM1:
    1403                     ShellExecute(hwnd,"open","iexplore.exe",
    1404                         "http://www.activebasic.com/forum/viewforum.php?f=1",
    1405                         NULL,SW_SHOWNORMAL);
    1406                     return 0;
    1407                 case ID_COMMU_FORUM2:
    1408                     ShellExecute(hwnd,"open","iexplore.exe",
    1409                         "http://www.activebasic.com/forum/viewforum.php?f=2",
    1410                         NULL,SW_SHOWNORMAL);
    1411                     return 0;
    1412                 case ID_COMMU_FORUM3:
    1413                     ShellExecute(hwnd,"open","iexplore.exe",
    1414                         "http://www.activebasic.com/forum/viewforum.php?f=5",
    1415                         NULL,SW_SHOWNORMAL);
    1416                     return 0;
    1417                 case ID_COMMU_FORUM4:
    1418                     ShellExecute(hwnd,"open","iexplore.exe",
    1419                         "http://www.activebasic.com/forum/viewforum.php?f=3",
    1420                         NULL,SW_SHOWNORMAL);
    1421                     return 0;
    1422                 case ID_COMMU_FORUM5:
    1423                     ShellExecute(hwnd,"open","iexplore.exe",
    1424                         "http://www.activebasic.com/forum/viewforum.php?f=6",
    1425                         NULL,SW_SHOWNORMAL);
    1426                     return 0;
    1427                 case ID_COMMU_FORUM6:
    1428                     ShellExecute(hwnd,"open","iexplore.exe",
    1429                         "http://www.activebasic.com/forum/viewforum.php?f=8",
    1430                         NULL,SW_SHOWNORMAL);
    1431                     return 0;
    1432                 case ID_COMMU_FORUM7:
    1433                     ShellExecute(hwnd,"open","iexplore.exe",
    1434                         "http://www.activebasic.com/forum/viewforum.php?f=4",
    1435                         NULL,SW_SHOWNORMAL);
    1436                     return 0;
    1437                 case ID_COMMU_FORUM8:
    1438                     ShellExecute(hwnd,"open","iexplore.exe",
    1439                         "http://www.activebasic.com/forum/viewforum.php?f=7",
    1440                         NULL,SW_SHOWNORMAL);
    1441                     return 0;
    1442 #endif //THETEXT
    1443 
    1444 
    1445                 case IDM_TOPIC:
    1446 #ifdef THETEXT
    1447                     sprintf(str,"%sTopics\\index.html",pj_editor_Dir);
    1448                     ShellExecute(hwnd,"open",str,NULL,NULL,SW_SHOWNORMAL);
    1449 #else
    1450                     sprintf(str,"%sBasicHelp.chm",pj_editor_Dir);
    1451                     HtmlHelp(NULL,str,HH_DISPLAY_TOPIC,0);
    1452 #endif
    1453                     return 0;
    1454 
    1455 #ifdef THETEXT
    1456                 case IDM_DSHOMEPAGE:
    1457                     ShellExecute(hwnd,"open","http://www.discoversoft.net/",NULL,NULL,SW_SHOWNORMAL);
    1458                     return 0;
    1459 #else
    1460                 case IDM_AB_WEBSITE:
    1461                     ShellExecute(hwnd,"open","http://www.activebasic.com/",NULL,NULL,SW_SHOWNORMAL);
    1462                     return 0;
    1463                 case IDM_ACTBDL:
    1464                     ShellExecute(hwnd,"open","http://www.activebasic.com/activebasic5/download.htm",NULL,NULL,SW_SHOWNORMAL);
    1465                     return 0;
    1466 #endif
    1467 
    1468                 case IDM_ABOUT:
    1469                     DialogBox(hResInst,MAKEINTRESOURCE(IDD_ABOUT),hwnd,(DLGPROC)DialogAbout);
    1470                     return 0;
    1471 
    1472                 case IDM_WEB_SEARCH:
    1473                     hChild=GetWindow(hClient,GW_CHILD);
    1474                     WndNum=GetWndNum(hChild);
    1475                     if(IS_DOCUMENT_TEXT(MdiInfo[WndNum].DocType)){
    1476                         extern HWND hWebSearchCombo;
    1477                         SendMessage(GetWindow(hWebSearchCombo,GW_CHILD),WM_CHAR,VK_RETURN,0);
    1478                     }
    1479                     return 0;
    1480 
    1481 
    1482 
    1483                 //////////////////////////////////////////////////////
    1484                 // レバーコントロールのサブメニューコマンド(レバー追加)
    1485                 //////////////////////////////////////////////////////
    1486 
    1487                 case IDM_DOCSELECTBAND:
    1488                     pobj_Rebar->ChangeRebarBand(ID_DOCCOMBO);
    1489                     return 0;
    1490                 case IDM_STANDARDBAND:
    1491                     pobj_Rebar->ChangeRebarBand(ID_STANDARDTOOLBAR);
    1492                     return 0;
    1493 #ifndef THETEXT
    1494                 case IDM_RELEASEBAND:
    1495                     pobj_Rebar->ChangeRebarBand(ID_RELEASETOOLBAR);
    1496                     return 0;
    1497                 case IDM_DEBUGBAND:
    1498                     pobj_Rebar->ChangeRebarBand(ID_DEBUGGERTOOLBAR);
    1499                     return 0;
    1500                 case IDM_SELECTCOMPILERBAND:
    1501                     pobj_Rebar->ChangeRebarBand(ID_SELECTCOMPILERCOMBO);
    1502                     return 0;
    1503 #endif
    1504                 case IDM_BANDMENU_WEB_SEARCH:
    1505                     pobj_Rebar->ChangeRebarBand(ID_WEB_SEARCH);
    1506                     return 0;
    1507                 case IDM_NOGRIPPER:
    1508                     if(pobj_nv->bNoGripper) pobj_nv->bNoGripper=0;
    1509                     else pobj_nv->bNoGripper=1;
    1510 
    1511                     //レバーコントロールを再生成
    1512                     pobj_Rebar->ResetRebar();
    1513 
    1514                     //メニュー状態を設定
    1515                     ResetState_DocMenu();
    1516                     return 0;
    1517                 case IDM_RESET_REBAR:
    1518                     //"ツールバーの配置をすべて初期状態に戻します。\nよろしいですか?"
    1519                     if(IDCANCEL==MessageBox(hwnd,STRING_TOOLBAR_RESET,APPLICATION_NAME,MB_OKCANCEL|MB_ICONEXCLAMATION)) break;
    1520 
    1521                     //レバーコントロールを再生成
    1522                     pobj_Rebar->ResetInitRebar();
    1523 
    1524                     //メニュー状態を設定
    1525                     ResetState_DocMenu();
    1526                     return 0;
    1527 
    1528 
    15291354
    15301355                ////////////////////////////////////////////////////
     
    15321357                ////////////////////////////////////////////////////
    15331358
    1534                 case IDM_ALLCLOSE_OMIT_MYSELF:
    1535                     //このウィンドウ以外をすべて閉じる(&A)
    1536                     hChild=GetWindow(hClient,GW_CHILD);
    1537                     WndNum=GetWndNum(hChild);
    1538                     for(i=0;i<MAX_WNDNUM;i++){
    1539                         if(i==WndNum) continue;
    1540                         if(MdiInfo[i].hwnd) SendMessage(MdiInfo[i].hwnd,WM_CLOSE,0,0);
    1541                     }
    1542                     return 0;
    1543 
    1544                 case IDM_PATH_COPY:
    1545                     hChild=GetWindow(hClient,GW_CHILD);
    1546                     WndNum=GetWndNum(hChild);
    1547 
    1548                     //絶対パスをコピー
    1549                     hGlobal=(char *)GlobalAlloc(GMEM_MOVEABLE,lstrlen(MdiInfo[WndNum].path)+1);
    1550                     pTemp=(char *)GlobalLock(hGlobal);
    1551                     lstrcpy(pTemp,MdiInfo[WndNum].path);
    1552                     GlobalUnlock(hGlobal);
    1553 
    1554                     //クリップボードに保存
    1555                     OpenClipboard(hwnd);
    1556                     EmptyClipboard();
    1557                     SetClipboardData(CF_TEXT,hGlobal);
    1558                     CloseClipboard();
    1559                     return 0;
    1560 
    1561                 case IDM_FOLDER_OPEN:
    1562                     hChild=GetWindow(hClient,GW_CHILD);
    1563                     WndNum=GetWndNum(hChild);
    1564 
    1565                     _splitpath(MdiInfo[WndNum].path,temporary,temp2,NULL,NULL);
    1566                     lstrcat(temporary,temp2);
    1567 
    1568                     ShellExecute(hwnd,"explore",temporary,NULL,NULL,SW_SHOWNORMAL);
    1569                     return 0;
    1570 
    1571                 case IDM_DELETE_FILE:
    1572                     hChild=GetWindow(hClient,GW_CHILD);
    1573                     WndNum=GetWndNum(hChild);
    1574 
    1575                     _splitpath(MdiInfo[WndNum].path,NULL,NULL,temporary,temp2);
    1576                     lstrcat(temporary,temp2);
    1577 
    1578                     lstrcat(temporary," をごみ箱に移動して閉じます。よろしいですか?");
    1579                     if(MessageBox(hwnd,temporary,APPLICATION_NAME,MB_OKCANCEL|MB_ICONQUESTION)==IDCANCEL) return 0;
    1580 
    1581                     //ゴミ箱へ
    1582                     SHFILEOPSTRUCT fo;
    1583                     fo.hwnd=hwnd;
    1584                     fo.wFunc=FO_DELETE;
    1585                     fo.pFrom =MdiInfo[WndNum].path;
    1586                     fo.pTo="\0";
    1587                     fo.fFlags =FOF_ALLOWUNDO|FOF_NOCONFIRMATION;
    1588                     SHFileOperation(&fo);
    1589 
    1590                     //閉じる
    1591                     MdiInfo[WndNum].pMdiTextEdit->UnModify();
    1592                     SendMessage(MdiInfo[WndNum].hwnd,WM_CLOSE,0,0);
    1593 
    1594                     return 0;
    15951359
    15961360                case IDM_USER_COLOR:
     
    19411705            }
    19421706            break;  //処理をDefFrameProcへ
    1943         case WM_QUERYENDSESSION:
    1944         case WM_CLOSE:
    1945             extern BOOL bSearchingClasses;
    1946             if(bSearchingClasses){
    1947                 pobj_ClassTreeView->bCloseSwitch=1;
    1948                 return 0;
    1949             }
    1950 
    1951             //コンパイラビューを閉じる
    1952             if(hCompileView)
    1953                 SendMessage(hCompileView,WM_COMMAND,IDCANCEL,0);
    1954 
    1955             //次回起動時にMDIウィンドウを最大化させるかを判定
    1956             hChild=GetWindow(hClient,GW_CHILD);
    1957             pobj_nv->bMDIZoomed=IsZoomed(hChild);
    1958 
    1959             //プロジェクトを閉じる
    1960             if(ProjectInfo.name[0]){
    1961                 if(!CloseProject()) return 0;
    1962             }
    1963 
    1964             //MDIウィンドウの保存確認
    1965             hChild=GetWindow(hClient,GW_CHILD);
    1966             while(hChild){
    1967                 i=GetWndNum(hChild);
    1968                 if(!DocumentModifyCheck(hChild)) return 0;
    1969                 hChild=GetNextWindow(hChild,GW_HWNDNEXT);
    1970             }
    1971 
    1972 
    1973             KillTimer(hwnd,ID_TIMER_BACKUP);
    1974 
    1975 
    1976             //ProjectViewの位置を保存、ProjectViewを破棄
    1977             GetWindowRect(hProjectView_ToolWindow,&pobj_nv->rectProjectView);
    1978             DestroyWindow(hProjectView);
    1979             DestroyWindow(hProjectView_ToolWindow);
    1980 
    1981             //Rebarの位置を保存、Rebarを破棄
    1982             delete pobj_Rebar;
    1983             pobj_Rebar=0;
    1984 
    1985             //タブコントロールを破棄
    1986             delete pobj_MainTab;
    1987             pobj_MainTab=0;
    1988 
    1989             //SideWebを破棄
    1990             delete pobj_SideWeb;
    1991             pobj_SideWeb=0;
    1992 
    1993             //メインウィンドウの最大化有無、座標を保存
    1994             if(IsZoomed(hwnd)) pobj_nv->bWindowMax=1;
    1995             else if(!IsIconic(hwnd)){
    1996                 pobj_nv->bWindowMax=0;
    1997                 GetWindowRect(hwnd,&pobj_nv->StartupWindowRect);
    1998             }
    1999 
    2000             hChild=GetWindow(hClient,GW_CHILD);
    2001             while(hChild){
    2002                 CloseDocWindow(GetWndNum(hChild));
    2003                 DestroyWindow(hChild);
    2004                 hChild=GetWindow(hClient,GW_CHILD);
    2005             }
    2006 
    2007             EndProjectEditor();     //ProjectEditorの情報を保存
    2008 
    2009             //エディタ用フォントを破棄
    2010             extern HFONT hFont_TextEdit,hFont_HyperLink_TextEdit;
    2011             if(hFont_TextEdit) DeleteObject(hFont_TextEdit);
    2012             if(hFont_HyperLink_TextEdit) DeleteObject(hFont_HyperLink_TextEdit);
    2013 
    2014             DestroyWindow(hwnd);
    2015             return 0;
    2016 
    2017         case WM_DESTROY:
    2018             PostQuitMessage(0);
    2019             return 0;
    20201707    }
    20211708
  • trunk/ab5.0/abdev/abdev/include/MainFrame.h

    r500 r501  
    1212public:
    1313
     14    // WebブラウザでURLを開く
     15    void OpenWebBrowser( const std::string &url );
     16
     17    // Explorerでパスを開く
     18    void OpenExplorer( const std::string &path );
     19
    1420    // 生成された
    1521    ::LRESULT OnCreate( ::UINT msg, ::WPARAM wParam, ::LPARAM lParam, ::BOOL& handled );
    1622
     23    // OSが終了する
     24    BOOL OnQueryEndSession(UINT nSource, UINT uLogOff);
     25
    1726    // 「閉じる」ボタンがクリックされた
    18     ::LRESULT OnClose( ::UINT msg, ::WPARAM wParam, ::LPARAM lParam, ::BOOL& handled );
     27    void OnClose();
    1928
    2029    // リサイズされた
     
    2231
    2332    // 破棄された
    24     ::LRESULT OnDestroy( ::UINT msg, ::WPARAM wParam, ::LPARAM lParam, ::BOOL& handled );
     33    void OnDestroy();
    2534
    2635    // タイマーイベント
     
    155164    // 「リリース実行」メニューがクリックされた
    156165    void OnCmdReleaseRun( UINT uNotifyCode, int nID, CWindow wndCtl );
     166
     167    // 「ステップイン」メニューがクリックされた
     168    void OnCmdStepIn( UINT uNotifyCode, int nID, CWindow wndCtl );
     169
     170    // 「ステップオーバー」メニューがクリックされた
     171    void OnCmdStepOver( UINT uNotifyCode, int nID, CWindow wndCtl );
     172
     173    // 「カーソル行まで実行」メニューがクリックされた
     174    void OnCmdStepCursor( UINT uNotifyCode, int nID, CWindow wndCtl );
     175
     176    // 「ブレークポイント」メニューがクリックされた
     177    void OnCmdBreakPoint( UINT uNotifyCode, int nID, CWindow wndCtl );
     178
     179    // 「デバッグの停止」メニューがクリックされた
     180    void OnCmdDebugStop( UINT uNotifyCode, int nID, CWindow wndCtl );
     181
     182    // 「デバッグの一時停止」メニューがクリックされた
     183    void OnCmdDebugPause( UINT uNotifyCode, int nID, CWindow wndCtl );
     184
     185    // Webリンクメニューがクリックされた
     186    void OnCmdWebLink( UINT uNotifyCode, int nID, CWindow wndCtl );
     187
     188    // 「トピックス」メニューがクリックされた
     189    void OnCmdTopics( UINT uNotifyCode, int nID, CWindow wndCtl );
     190
     191    // 「バージョン情報」メニューがクリックされた
     192    void OnCmdAbout( UINT uNotifyCode, int nID, CWindow wndCtl );
     193
     194    // レバーの「ドキュメントセレクト」メニューがクリックされた
     195    void OnCmdDocSelectBand( UINT uNotifyCode, int nID, CWindow wndCtl );
     196
     197    // レバーの「標準」メニューがクリックされた
     198    void OnCmdStandardBand( UINT uNotifyCode, int nID, CWindow wndCtl );
     199
     200    // レバーの「リリース」メニューがクリックされた
     201    void OnCmdReleaseBand( UINT uNotifyCode, int nID, CWindow wndCtl );
     202
     203    // レバーの「デバッグ」メニューがクリックされた
     204    void OnCmdDebugBand( UINT uNotifyCode, int nID, CWindow wndCtl );
     205
     206    // レバーの「プラットフォーム選択」メニューがクリックされた
     207    void OnCmdSelectCompilerBand( UINT uNotifyCode, int nID, CWindow wndCtl );
     208
     209    // レバーの「レバーを固定」メニューがクリックされた
     210    void OnCmdNoGripper( UINT uNotifyCode, int nID, CWindow wndCtl );
     211
     212    // レバーの「レバーをリセット」メニューがクリックされた
     213    void OnCmdResetRebar( UINT uNotifyCode, int nID, CWindow wndCtl );
     214
     215    // タブの「自分以外のウィンドウを閉じる」メニューがクリックされた
     216    void OnCmdAllCloseOmitMyself( UINT uNotifyCode, int nID, CWindow wndCtl );
     217
     218    // タブの「絶対パスをコピー」メニューがクリックされた
     219    void OnCmdPathCopy( UINT uNotifyCode, int nID, CWindow wndCtl );
     220
     221    // タブの「フォルダを開く」メニューがクリックされた
     222    void OnCmdFolderOpen( UINT uNotifyCode, int nID, CWindow wndCtl );
     223
     224    // タブの「ファイルを削除」メニューがクリックされた
     225    void OnCmdDeleteFile( UINT uNotifyCode, int nID, CWindow wndCtl );
    157226
    158227private:
     
    160229    BEGIN_MSG_MAP( MainFrame )
    161230        MESSAGE_HANDLER( WM_CREATE, OnCreate )
    162         MESSAGE_HANDLER( WM_CLOSE, OnClose )
    163         MESSAGE_HANDLER( WM_DESTROY, OnDestroy )
     231        MSG_WM_QUERYENDSESSION( OnQueryEndSession )
     232        MSG_WM_CLOSE( OnClose )
     233        MSG_WM_DESTROY( OnDestroy )
    164234        MSG_WM_TIMER( OnTimer )
    165235        MSG_WM_DRAWCLIPBOARD( OnDrawClipboard )
     
    222292#endif
    223293        COMMAND_ID_HANDLER_EX( IDM_SET, OnCmdSet )
     294#ifndef THETEXT
    224295        COMMAND_ID_HANDLER_EX( IDM_DEBUG, OnCmdDebug )
    225296        COMMAND_ID_HANDLER_EX( IDM_DEBUGCOMPILE, OnCmdDebugCompile )
     
    227298        COMMAND_ID_HANDLER_EX( IDM_RELEASECOMPILE, OnCmdReleaseCompile )
    228299        COMMAND_ID_HANDLER_EX( IDM_RELEASERUN, OnCmdReleaseRun )
     300        COMMAND_ID_HANDLER_EX( IDM_STEP_IN, OnCmdStepIn )
     301        COMMAND_ID_HANDLER_EX( IDM_STEP_OVER, OnCmdStepOver )
     302        COMMAND_ID_HANDLER_EX( IDM_STEP_CURSOR, OnCmdStepCursor )
     303        COMMAND_ID_HANDLER_EX( IDM_BREAKPOINT, OnCmdBreakPoint )
     304        COMMAND_ID_HANDLER_EX( IDM_DEBUG_STOP, OnCmdDebugStop )
     305        COMMAND_ID_HANDLER_EX( IDM_DEBUG_PAUSE, OnCmdDebugPause )
     306        COMMAND_ID_HANDLER_EX( IDM_COMMUNITY, OnCmdWebLink )
     307        COMMAND_ID_HANDLER_EX( IDM_COMMU_SEARCH, OnCmdWebLink )
     308        COMMAND_ID_HANDLER_EX( IDM_COMMU_PM, OnCmdWebLink )
     309        COMMAND_ID_HANDLER_EX( ID_COMMU_FORUM1, OnCmdWebLink )
     310        COMMAND_ID_HANDLER_EX( ID_COMMU_FORUM2, OnCmdWebLink )
     311        COMMAND_ID_HANDLER_EX( ID_COMMU_FORUM3, OnCmdWebLink )
     312        COMMAND_ID_HANDLER_EX( ID_COMMU_FORUM4, OnCmdWebLink )
     313        COMMAND_ID_HANDLER_EX( ID_COMMU_FORUM5, OnCmdWebLink )
     314        COMMAND_ID_HANDLER_EX( ID_COMMU_FORUM6, OnCmdWebLink )
     315        COMMAND_ID_HANDLER_EX( ID_COMMU_FORUM7, OnCmdWebLink )
     316        COMMAND_ID_HANDLER_EX( ID_COMMU_FORUM8, OnCmdWebLink )
     317        COMMAND_ID_HANDLER_EX( IDM_AB_WEBSITE, OnCmdWebLink )
     318        COMMAND_ID_HANDLER_EX( IDM_ACTBDL, OnCmdWebLink )
     319#else
     320        COMMAND_ID_HANDLER_EX( IDM_DSHOMEPAGE, OnCmdWebLink )
     321#endif
     322        COMMAND_ID_HANDLER_EX( IDM_TOPIC, OnCmdTopics )
     323        COMMAND_ID_HANDLER_EX( IDM_ABOUT, OnCmdAbout )
     324        COMMAND_ID_HANDLER_EX( IDM_DOCSELECTBAND, OnCmdDocSelectBand )
     325        COMMAND_ID_HANDLER_EX( IDM_STANDARDBAND, OnCmdStandardBand )
     326#ifndef THETEXT
     327        COMMAND_ID_HANDLER_EX( IDM_RELEASEBAND, OnCmdReleaseBand )
     328        COMMAND_ID_HANDLER_EX( IDM_DEBUGBAND, OnCmdDebugBand )
     329        COMMAND_ID_HANDLER_EX( IDM_SELECTCOMPILERBAND, OnCmdSelectCompilerBand )
     330#endif
     331        COMMAND_ID_HANDLER_EX( IDM_NOGRIPPER, OnCmdNoGripper )
     332        COMMAND_ID_HANDLER_EX( IDM_RESET_REBAR, OnCmdResetRebar )
     333        COMMAND_ID_HANDLER_EX( IDM_ALLCLOSE_OMIT_MYSELF, OnCmdAllCloseOmitMyself )
     334        COMMAND_ID_HANDLER_EX( IDM_PATH_COPY, OnCmdPathCopy )
     335        COMMAND_ID_HANDLER_EX( IDM_FOLDER_OPEN, OnCmdFolderOpen )
     336        COMMAND_ID_HANDLER_EX( IDM_DELETE_FILE, OnCmdDeleteFile )
    229337    END_MSG_MAP()
    230338};
  • trunk/ab5.0/abdev/abdev/src/MainFrame.cpp

    r500 r501  
    77void SetupWindow(HWND hwnd);
    88void ResetTextEditFont(HWND hwnd);
     9
     10void MainFrame::OpenWebBrowser( const std::string &url )
     11{
     12    ShellExecute(m_hWnd,"open",url.c_str(),"",NULL,SW_SHOWNORMAL);
     13}
     14
     15void MainFrame::OpenExplorer( const std::string &path )
     16{
     17    ShellExecute(m_hWnd,"explore",path.c_str(),NULL,NULL,SW_SHOWNORMAL);
     18}
    919
    1020::LRESULT MainFrame::OnCreate( ::UINT msg, ::WPARAM wParam, ::LPARAM lParam, ::BOOL& handled )
     
    5161}
    5262
    53 ::LRESULT MainFrame::OnClose( ::UINT msg, ::WPARAM wParam, ::LPARAM lParam, ::BOOL& handled )
    54 {
     63BOOL MainFrame::OnQueryEndSession(UINT nSource, UINT uLogOff)
     64{
     65    OnClose();
     66
     67    return TRUE;
     68}
     69
     70void MainFrame::OnClose()
     71{
     72    extern BOOL bSearchingClasses;
     73    if(bSearchingClasses){
     74        pobj_ClassTreeView->bCloseSwitch=1;
     75        return;
     76    }
     77
     78    //コンパイラビューを閉じる
     79    extern HWND hCompileView;
     80    if(hCompileView)
     81        SendMessage(hCompileView,WM_COMMAND,IDCANCEL,0);
     82
     83    //次回起動時にMDIウィンドウを最大化させるかを判定
     84    HWND hChild=::GetWindow(hClient,GW_CHILD);
     85    pobj_nv->bMDIZoomed=::IsZoomed(hChild);
     86
     87    //プロジェクトを閉じる
     88    if(ProjectInfo.name[0]){
     89        if(!CloseProject()) return;
     90    }
     91
     92    //MDIウィンドウの保存確認
     93    hChild=::GetWindow(hClient,GW_CHILD);
     94    while(hChild){
     95        if(!DocumentModifyCheck(hChild)) return;
     96        hChild=::GetNextWindow(hChild,GW_HWNDNEXT);
     97    }
     98
     99
     100    KillTimer(ID_TIMER_BACKUP);
     101
     102
     103    //ProjectViewの位置を保存、ProjectViewを破棄
     104    extern HWND hProjectView;
     105    extern HWND hProjectView_ToolWindow;
     106    ::GetWindowRect(hProjectView_ToolWindow,&pobj_nv->rectProjectView);
     107    ::DestroyWindow(hProjectView);
     108    ::DestroyWindow(hProjectView_ToolWindow);
     109
     110    //Rebarの位置を保存、Rebarを破棄
     111    delete pobj_Rebar;
     112    pobj_Rebar=0;
     113
     114    //タブコントロールを破棄
     115    delete pobj_MainTab;
     116    pobj_MainTab=0;
     117
     118    //SideWebを破棄
     119    delete pobj_SideWeb;
     120    pobj_SideWeb=0;
     121
     122    //メインウィンドウの最大化有無、座標を保存
     123    if(IsZoomed()) pobj_nv->bWindowMax=1;
     124    else if(!IsIconic()){
     125        pobj_nv->bWindowMax=0;
     126        GetWindowRect(&pobj_nv->StartupWindowRect);
     127    }
     128
     129    hChild=::GetWindow(hClient,GW_CHILD);
     130    while(hChild){
     131        CloseDocWindow(GetWndNum(hChild));
     132        ::DestroyWindow(hChild);
     133        hChild=::GetWindow(hClient,GW_CHILD);
     134    }
     135
     136    EndProjectEditor();     //ProjectEditorの情報を保存
     137
     138    //エディタ用フォントを破棄
     139    extern HFONT hFont_TextEdit,hFont_HyperLink_TextEdit;
     140    if(hFont_TextEdit) DeleteObject(hFont_TextEdit);
     141    if(hFont_HyperLink_TextEdit) DeleteObject(hFont_HyperLink_TextEdit);
     142
    55143    DestroyWindow();
    56     return 0;
    57 }
    58 ::LRESULT MainFrame::OnDestroy( ::UINT msg, ::WPARAM wParam, ::LPARAM lParam, ::BOOL& handled )
     144}
     145void MainFrame::OnDestroy()
    59146{
    60147    mdiWindow->DestroyWindow();
     
    62149
    63150    ::PostQuitMessage( 0 );
    64 
    65     return 0;
    66151}
    67152
     
    766851}
    767852
     853#ifndef THETEXT
    768854void MainFrame::OnCmdDebug( UINT uNotifyCode, int nID, CWindow wndCtl )
    769855{
     
    10521138    ShellExecute(m_hWnd,"open",temporary,NULL,NULL,SW_SHOWNORMAL);
    10531139}
     1140
     1141void MainFrame::OnCmdStepIn( UINT uNotifyCode, int nID, CWindow wndCtl )
     1142{
     1143    pobj_Debugger->StepIn();
     1144}
     1145
     1146void MainFrame::OnCmdStepOver( UINT uNotifyCode, int nID, CWindow wndCtl )
     1147{
     1148    pobj_Debugger->StepOver();
     1149}
     1150
     1151void MainFrame::OnCmdStepCursor( UINT uNotifyCode, int nID, CWindow wndCtl )
     1152{
     1153    pobj_Debugger->StepToCursor();
     1154}
     1155
     1156void MainFrame::OnCmdBreakPoint( UINT uNotifyCode, int nID, CWindow wndCtl )
     1157{
     1158    if(ProjectInfo.name[0]){
     1159        ProjectInfo.pobj_DBBreakPoint->Event_BreakPoint();
     1160    }
     1161    else{
     1162        extern CDBBreakPoint *pobj_DBBreakPoint;
     1163        pobj_DBBreakPoint->Event_BreakPoint();
     1164    }
     1165}
     1166
     1167void MainFrame::OnCmdDebugStop( UINT uNotifyCode, int nID, CWindow wndCtl )
     1168{
     1169    pobj_Debugger->DebugStop();
     1170}
     1171
     1172void MainFrame::OnCmdDebugPause( UINT uNotifyCode, int nID, CWindow wndCtl )
     1173{
     1174    pobj_Debugger->DebugPause();
     1175}
     1176
     1177#endif  // not THETEXT
     1178
     1179void MainFrame::OnCmdWebLink( UINT uNotifyCode, int nID, CWindow wndCtl )
     1180{
     1181    switch( nID )
     1182    {
     1183#ifndef THETEXT
     1184    case IDM_COMMUNITY:
     1185        OpenWebBrowser( "http://www.activebasic.com/forum/" );
     1186        break;
     1187    case IDM_COMMU_SEARCH:
     1188        OpenWebBrowser( "http://www.activebasic.com/forum/search.php" );
     1189        break;
     1190    case IDM_COMMU_PM:
     1191        OpenWebBrowser( "http://www.activebasic.com/forum/privmsg.php?folder=inbox" );
     1192        break;
     1193    case ID_COMMU_FORUM1:
     1194        OpenWebBrowser( "http://www.activebasic.com/forum/viewforum.php?f=1" );
     1195        break;
     1196    case ID_COMMU_FORUM2:
     1197        OpenWebBrowser( "http://www.activebasic.com/forum/viewforum.php?f=2" );
     1198        break;
     1199    case ID_COMMU_FORUM3:
     1200        OpenWebBrowser( "http://www.activebasic.com/forum/viewforum.php?f=5" );
     1201        break;
     1202    case ID_COMMU_FORUM4:
     1203        OpenWebBrowser( "http://www.activebasic.com/forum/viewforum.php?f=3" );
     1204        break;
     1205    case ID_COMMU_FORUM5:
     1206        OpenWebBrowser( "http://www.activebasic.com/forum/viewforum.php?f=6" );
     1207        break;
     1208    case ID_COMMU_FORUM6:
     1209        OpenWebBrowser( "http://www.activebasic.com/forum/viewforum.php?f=8" );
     1210        break;
     1211    case ID_COMMU_FORUM7:
     1212        OpenWebBrowser( "http://www.activebasic.com/forum/viewforum.php?f=4" );
     1213        break;
     1214    case ID_COMMU_FORUM8:
     1215        OpenWebBrowser( "http://www.activebasic.com/forum/viewforum.php?f=7" );
     1216        break;
     1217    case IDM_AB_WEBSITE:
     1218        OpenWebBrowser( "http://www.activebasic.com/" );
     1219        break;
     1220    case IDM_ACTBDL:
     1221        OpenWebBrowser( "http://www.activebasic.com/activebasic5/download.htm" );
     1222        break;
     1223#else
     1224    case IDM_DSHOMEPAGE:
     1225        OpenWebBrowser( "http://www.discoversoft.net/" );
     1226        break;
     1227#endif // not THETEXT
     1228    default:
     1229        throw;
     1230    }
     1231}
     1232
     1233void MainFrame::OnCmdTopics( UINT uNotifyCode, int nID, CWindow wndCtl )
     1234{
     1235    char temporary[1024];
     1236#ifdef THETEXT
     1237    sprintf(temporary,"%sTopics\\index.html",pj_editor_Dir);
     1238    ShellExecute(m_hWnd,"open",temporary,NULL,NULL,SW_SHOWNORMAL);
     1239#else
     1240    sprintf(temporary,"%sBasicHelp.chm",pj_editor_Dir);
     1241    HtmlHelp(NULL,temporary,HH_DISPLAY_TOPIC,0);
     1242#endif
     1243}
     1244
     1245void MainFrame::OnCmdAbout( UINT uNotifyCode, int nID, CWindow wndCtl )
     1246{
     1247    DialogBox(hResInst,MAKEINTRESOURCE(IDD_ABOUT),m_hWnd,(DLGPROC)DialogAbout);
     1248}
     1249
     1250void MainFrame::OnCmdDocSelectBand( UINT uNotifyCode, int nID, CWindow wndCtl )
     1251{
     1252    pobj_Rebar->ChangeRebarBand(ID_DOCCOMBO);
     1253}
     1254
     1255void MainFrame::OnCmdStandardBand( UINT uNotifyCode, int nID, CWindow wndCtl )
     1256{
     1257    pobj_Rebar->ChangeRebarBand(ID_STANDARDTOOLBAR);
     1258}
     1259
     1260void MainFrame::OnCmdReleaseBand( UINT uNotifyCode, int nID, CWindow wndCtl )
     1261{
     1262    pobj_Rebar->ChangeRebarBand(ID_RELEASETOOLBAR);
     1263}
     1264
     1265void MainFrame::OnCmdDebugBand( UINT uNotifyCode, int nID, CWindow wndCtl )
     1266{
     1267    pobj_Rebar->ChangeRebarBand(ID_DEBUGGERTOOLBAR);
     1268}
     1269
     1270void MainFrame::OnCmdSelectCompilerBand( UINT uNotifyCode, int nID, CWindow wndCtl )
     1271{
     1272    pobj_Rebar->ChangeRebarBand(ID_SELECTCOMPILERCOMBO);
     1273}
     1274
     1275void MainFrame::OnCmdNoGripper( UINT uNotifyCode, int nID, CWindow wndCtl )
     1276{
     1277    if(pobj_nv->bNoGripper) pobj_nv->bNoGripper=0;
     1278    else pobj_nv->bNoGripper=1;
     1279
     1280    //レバーコントロールを再生成
     1281    pobj_Rebar->ResetRebar();
     1282
     1283    //メニュー状態を設定
     1284    ResetState_DocMenu();
     1285}
     1286
     1287void MainFrame::OnCmdResetRebar( UINT uNotifyCode, int nID, CWindow wndCtl )
     1288{
     1289    //"ツールバーの配置をすべて初期状態に戻します。\nよろしいですか?"
     1290    if( MessageBox(STRING_TOOLBAR_RESET,APPLICATION_NAME,MB_OKCANCEL|MB_ICONEXCLAMATION) == IDCANCEL )
     1291    {
     1292        return;
     1293    }
     1294
     1295    //レバーコントロールを再生成
     1296    pobj_Rebar->ResetInitRebar();
     1297
     1298    //メニュー状態を設定
     1299    ResetState_DocMenu();
     1300}
     1301
     1302void MainFrame::OnCmdAllCloseOmitMyself( UINT uNotifyCode, int nID, CWindow wndCtl )
     1303{
     1304    //このウィンドウ以外をすべて閉じる(&A)
     1305    HWND hChild=::GetWindow(hClient,GW_CHILD);
     1306    int WndNum=GetWndNum(hChild);
     1307    for(int i=0;i<MAX_WNDNUM;i++){
     1308        if(i==WndNum) continue;
     1309        if(MdiInfo[i].hwnd) SendMessage(MdiInfo[i].hwnd,WM_CLOSE,0,0);
     1310    }
     1311}
     1312
     1313void MainFrame::OnCmdPathCopy( UINT uNotifyCode, int nID, CWindow wndCtl )
     1314{
     1315    HWND hChild=::GetWindow(hClient,GW_CHILD);
     1316    int WndNum=GetWndNum(hChild);
     1317
     1318    //絶対パスをコピー
     1319    HGLOBAL hGlobal=(char *)GlobalAlloc(GMEM_MOVEABLE,lstrlen(MdiInfo[WndNum].path)+1);
     1320    char *pTemp=(char *)GlobalLock(hGlobal);
     1321    lstrcpy(pTemp,MdiInfo[WndNum].path);
     1322    GlobalUnlock(hGlobal);
     1323
     1324    //クリップボードに保存
     1325    OpenClipboard();
     1326    EmptyClipboard();
     1327    SetClipboardData(CF_TEXT,hGlobal);
     1328    CloseClipboard();
     1329}
     1330
     1331void MainFrame::OnCmdFolderOpen( UINT uNotifyCode, int nID, CWindow wndCtl )
     1332{
     1333    HWND hChild=::GetWindow(hClient,GW_CHILD);
     1334    int WndNum=GetWndNum(hChild);
     1335
     1336    char temporary[1024], temp2[1024];
     1337    _splitpath(MdiInfo[WndNum].path,temporary,temp2,NULL,NULL);
     1338    lstrcat(temporary,temp2);
     1339
     1340    OpenExplorer( temporary );
     1341}
     1342
     1343void MainFrame::OnCmdDeleteFile( UINT uNotifyCode, int nID, CWindow wndCtl )
     1344{
     1345    HWND hChild=::GetWindow(hClient,GW_CHILD);
     1346    int WndNum=GetWndNum(hChild);
     1347
     1348    char temporary[1024], temp2[1024];
     1349    _splitpath(MdiInfo[WndNum].path,NULL,NULL,temporary,temp2);
     1350    lstrcat(temporary,temp2);
     1351
     1352    lstrcat(temporary," をごみ箱に移動して閉じます。よろしいですか?");
     1353    if(MessageBox(temporary,APPLICATION_NAME,MB_OKCANCEL|MB_ICONQUESTION)==IDCANCEL) return;
     1354
     1355    //ゴミ箱へ
     1356    SHFILEOPSTRUCT fo;
     1357    fo.hwnd=m_hWnd;
     1358    fo.wFunc=FO_DELETE;
     1359    fo.pFrom =MdiInfo[WndNum].path;
     1360    fo.pTo="\0";
     1361    fo.fFlags =FOF_ALLOWUNDO|FOF_NOCONFIRMATION;
     1362    SHFileOperation(&fo);
     1363
     1364    //閉じる
     1365    MdiInfo[WndNum].pMdiTextEdit->UnModify();
     1366    SendMessage(MdiInfo[WndNum].hwnd,WM_CLOSE,0,0);
     1367}
Note: See TracChangeset for help on using the changeset viewer.