Ignore:
Timestamp:
Apr 19, 2008, 7:08:37 PM (16 years ago)
Author:
dai_9181
Message:

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

File:
1 edited

Legend:

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

    r496 r497  
    365365    ShellExecute(m_hWnd,"explore",ProjectInfo.dir,NULL,NULL,SW_SHOWNORMAL);
    366366}
     367
     368void MainFrame::OnCmdSave( UINT uNotifyCode, int nID, CWindow wndCtl )
     369{
     370    SaveDocument(::GetWindow(hClient,GW_CHILD),NULL);
     371}
     372
     373void MainFrame::OnCmdNewSave( UINT uNotifyCode, int nID, CWindow wndCtl )
     374{
     375    //"保存先のファイルを指定してください"
     376    extern LPSTR DefFileFilter;
     377    char temporary[1024];
     378    if(!GetFilePathDialog(m_hWnd,temporary,DefFileFilter,STRING_FILESAVETITLE_DEFAULT,FALSE)) return;
     379
     380    SaveDocument(::GetWindow(hClient,GW_CHILD),temporary);
     381}
     382
     383void MainFrame::OnCmdCodeSave( UINT uNotifyCode, int nID, CWindow wndCtl )
     384{
     385    //文字コードを指定して保存
     386    DialogBox(hResInst,MAKEINTRESOURCE(IDD_CODE_SAVE),m_hWnd,(DLGPROC)nkfDlgCodeSave);
     387}
     388
     389void MainFrame::OnCmdAllSave( UINT uNotifyCode, int nID, CWindow wndCtl )
     390{
     391    for( int i=0;i<MAX_WNDNUM;i++){
     392        if(MdiInfo[i].hwnd) SaveDocument(MdiInfo[i].hwnd,NULL);
     393    }
     394    if(ProjectInfo.name[0]) SaveProject();
     395}
     396
     397void MainFrame::OnCmdPageSet( UINT uNotifyCode, int nID, CWindow wndCtl )
     398{
     399    //ページ設定
     400    obj_Page.SetupDlg();
     401}
     402
     403void MainFrame::OnCmdPreview( UINT uNotifyCode, int nID, CWindow wndCtl )
     404{
     405    //プレビュー(Pro版のみ)
     406    Preview();
     407}
     408
     409void MainFrame::OnCmdPrintOut( UINT uNotifyCode, int nID, CWindow wndCtl )
     410{
     411    //印刷
     412    Printout();
     413}
     414
     415void MainFrame::OnCmdExit( UINT uNotifyCode, int nID, CWindow wndCtl )
     416{
     417    SendMessage(WM_CLOSE);
     418}
     419
     420void MainFrame::OnCmdUndo( UINT uNotifyCode, int nID, CWindow wndCtl )
     421{
     422    HWND hChild=::GetWindow(hClient,GW_CHILD);
     423    if(!hChild) return;
     424    int WndNum=GetWndNum(hChild);
     425    if(IS_DOCUMENT_TEXT(MdiInfo[WndNum].DocType))
     426        TextEdit_UndoCommand(WndNum);
     427    else if(MdiInfo[WndNum].DocType==WNDTYPE_RAD)
     428        Rad_UndoCommand(WndNum);
     429    else if(MdiInfo[WndNum].DocType==WNDTYPE_ICONEDIT)
     430        IconEdit_UndoCommand(WndNum);
     431}
     432
     433void MainFrame::OnCmdRedo( UINT uNotifyCode, int nID, CWindow wndCtl )
     434{
     435    HWND hChild=::GetWindow(hClient,GW_CHILD);
     436    if(!hChild) return;
     437    int WndNum=GetWndNum(hChild);
     438    if(IS_DOCUMENT_TEXT(MdiInfo[WndNum].DocType))
     439        TextEdit_RedoCommand(WndNum);
     440    else if(MdiInfo[WndNum].DocType==WNDTYPE_RAD)
     441        Rad_RedoCommand(WndNum);
     442    else if(MdiInfo[WndNum].DocType==WNDTYPE_ICONEDIT)
     443        IconEdit_RedoCommand(WndNum);
     444}
     445
     446void MainFrame::OnCmdCut( UINT uNotifyCode, int nID, CWindow wndCtl )
     447{
     448    HWND hChild=::GetWindow(hClient,GW_CHILD);
     449    int WndNum=GetWndNum(hChild);
     450    if(IS_DOCUMENT_TEXT(MdiInfo[WndNum].DocType)){
     451        HWND hEdit=::GetWindow(hChild,GW_CHILD);
     452
     453        CHARRANGE CharRange;
     454        TextEdit_GetSel(WndNum,&CharRange);
     455
     456        HGLOBAL hGlobal=(char *)GlobalAlloc(GMEM_MOVEABLE,CharRange.cpMax-CharRange.cpMin+1);
     457        char *pTemp=(char *)GlobalLock(hGlobal);
     458        memcpy(pTemp,MdiInfo[WndNum].pMdiTextEdit->buffer+CharRange.cpMin,CharRange.cpMax-CharRange.cpMin);
     459        pTemp[CharRange.cpMax-CharRange.cpMin]=0;
     460        GlobalUnlock(hGlobal);
     461
     462        //クリップボードに保存
     463        OpenClipboard();
     464        EmptyClipboard();
     465        SetClipboardData(CF_TEXT,hGlobal);
     466        CloseClipboard();
     467
     468        //選択文字列を消去
     469        SendMessage(hEdit,WM_KEYDOWN,VK_DELETE,0);
     470    }
     471    else if(MdiInfo[WndNum].DocType==WNDTYPE_RAD){
     472        int indexOfWndInfo = GetWndInfoNum(MdiInfo[WndNum].path);
     473
     474        //クリップボードに格納するためのデータを用意する
     475        ProjectInfo.pWindowInfo[indexOfWndInfo].pChildInfo[MdiInfo[WndNum].MdiRadInfo->SelectingItem[0]].pos.x-=17;
     476        ProjectInfo.pWindowInfo[indexOfWndInfo].pChildInfo[MdiInfo[WndNum].MdiRadInfo->SelectingItem[0]].pos.y-=10;
     477        HGLOBAL hGlobal=Rad_GetChildInfoClipboardData(WndNum,indexOfWndInfo);
     478        ProjectInfo.pWindowInfo[indexOfWndInfo].pChildInfo[MdiInfo[WndNum].MdiRadInfo->SelectingItem[0]].pos.x+=17;
     479        ProjectInfo.pWindowInfo[indexOfWndInfo].pChildInfo[MdiInfo[WndNum].MdiRadInfo->SelectingItem[0]].pos.y+=10;
     480
     481        OpenClipboard();
     482        EmptyClipboard();
     483        extern DWORD dwRadClipboardID;
     484        SetClipboardData(dwRadClipboardID,hGlobal);
     485        CloseClipboard();
     486
     487        SendMessage(MdiInfo[WndNum].MdiRadInfo->hRad,WM_COMMAND,IDM_RAD_ITEM_DELETE,0);
     488    }
     489    else if(MdiInfo[WndNum].DocType==WNDTYPE_ICONEDIT){
     490        //クリップボードに格納するためのデータを用意する
     491        HGLOBAL hGlobal=IconEdit_GetChildInfoClipboardData(WndNum);
     492        if(hGlobal==0) return;
     493
     494        OpenClipboard();
     495        EmptyClipboard();
     496        SetClipboardData(CF_BITMAP,hGlobal);
     497        CloseClipboard();
     498
     499        DeleteObject(MdiInfo[WndNum].MdiIconEditInfo->hSelectingBmp);
     500        MdiInfo[WndNum].MdiIconEditInfo->SelectLevel=0;
     501
     502        IconEdit_EraseRect(WndNum,&MdiInfo[WndNum].MdiIconEditInfo->DraggingRect);
     503    }
     504}
     505
     506void MainFrame::OnCmdCopy( UINT uNotifyCode, int nID, CWindow wndCtl )
     507{
     508    HWND hChild=::GetWindow(hClient,GW_CHILD);
     509    int WndNum=GetWndNum(hChild);
     510    if(IS_DOCUMENT_TEXT(MdiInfo[WndNum].DocType)){
     511        HWND hEdit = ::GetWindow(hChild,GW_CHILD);
     512
     513        CHARRANGE CharRange;
     514        TextEdit_GetSel(WndNum,&CharRange);
     515
     516        HGLOBAL hGlobal=(char *)GlobalAlloc(GMEM_MOVEABLE,CharRange.cpMax-CharRange.cpMin+1);
     517        char *pTemp=(char *)GlobalLock(hGlobal);
     518        memcpy(pTemp,MdiInfo[WndNum].pMdiTextEdit->buffer+CharRange.cpMin,CharRange.cpMax-CharRange.cpMin);
     519        pTemp[CharRange.cpMax-CharRange.cpMin]=0;
     520        GlobalUnlock(hGlobal);
     521
     522        //クリップボードに保存
     523        OpenClipboard();
     524        EmptyClipboard();
     525        SetClipboardData(CF_TEXT,hGlobal);
     526        CloseClipboard();
     527    }
     528    else if(MdiInfo[WndNum].DocType==WNDTYPE_RAD){
     529        int indexOfWndInfo = GetWndInfoNum(MdiInfo[WndNum].path);
     530
     531        //クリップボードに格納するためのデータを用意する
     532        HGLOBAL hGlobal=Rad_GetChildInfoClipboardData(WndNum,indexOfWndInfo);
     533
     534        OpenClipboard();
     535        EmptyClipboard();
     536        extern DWORD dwRadClipboardID;
     537        SetClipboardData(dwRadClipboardID,hGlobal);
     538        CloseClipboard();
     539    }
     540    else if(MdiInfo[WndNum].DocType==WNDTYPE_ICONEDIT){
     541        //クリップボードに格納するためのデータを用意する
     542        HGLOBAL hGlobal=IconEdit_GetChildInfoClipboardData(WndNum);
     543
     544        OpenClipboard();
     545        EmptyClipboard();
     546        SetClipboardData(CF_BITMAP,hGlobal);
     547        CloseClipboard();
     548    }
     549}
     550
     551void MainFrame::OnCmdPaste( UINT uNotifyCode, int nID, CWindow wndCtl )
     552{
     553    HWND hChild=::GetWindow(hClient,GW_CHILD);
     554    int WndNum=GetWndNum(hChild);
     555    if(IS_DOCUMENT_TEXT(MdiInfo[WndNum].DocType)){
     556        HWND hEdit=::GetWindow(hChild,GW_CHILD);
     557
     558        //クリップボードを開く
     559        OpenClipboard();
     560        HGLOBAL hGlobal=GetClipboardData(CF_TEXT);
     561        if(!hGlobal){
     562            CloseClipboard();
     563            return;
     564        }
     565
     566
     567        char *pTemp;
     568        if(pobj_nv->bPasteIndent){
     569            //インデント整形
     570            pTemp=CodeFormatter((char *)GlobalLock(hGlobal));
     571            GlobalUnlock(hGlobal);
     572        }
     573        else pTemp=(char *)GlobalLock(hGlobal);
     574
     575
     576        //テキストエディタの文字列をリプレイス
     577        TextEdit_ReplaceUpdateUndoData(WndNum,
     578            pTemp,
     579            1,
     580            1);
     581
     582        if(pobj_nv->bPasteIndent)
     583            HeapDefaultFree(pTemp);
     584        else
     585            GlobalUnlock(hGlobal);
     586
     587        //クリップボードを閉じる
     588        CloseClipboard();
     589
     590
     591        //キャレット位置までスクロールする
     592        TextEdit_ScrollCaret(WndNum,0);
     593        ResetCaretPos(WndNum);
     594    }
     595    else if(MdiInfo[WndNum].DocType==WNDTYPE_RAD){
     596        OpenClipboard();
     597        extern DWORD dwRadClipboardID;
     598        HGLOBAL hGlobal=GetClipboardData(dwRadClipboardID);
     599        if(!hGlobal){
     600            CloseClipboard();
     601            return;
     602        }
     603        Rad_PasteChildInfoClipboardData(WndNum,hGlobal);
     604        CloseClipboard();
     605    }
     606    else if(MdiInfo[WndNum].DocType==WNDTYPE_ICONEDIT){
     607        OpenClipboard();
     608        HGLOBAL hGlobal=GetClipboardData(CF_BITMAP);
     609        if(!hGlobal){
     610            CloseClipboard();
     611            return;
     612        }
     613        IconEdit_PasteChildInfoClipboardData(WndNum,(HBITMAP)hGlobal);
     614        CloseClipboard();
     615    }
     616}
Note: See TracChangeset for help on using the changeset viewer.