Changeset 497 in dev


Ignore:
Timestamp:
Apr 19, 2008, 7:08:37 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

    r496 r497  
    13741374        case WM_COMMAND:
    13751375            switch(LOWORD(wParam)){
    1376                 case IDM_SAVE:
    1377                     SaveDocument(GetWindow(hClient,GW_CHILD),NULL);
    1378                     return 0;
    1379                 case IDM_NEWSAVE:
    1380                     //"保存先のファイルを指定してください"
    1381                     if(!GetFilePathDialog(hwnd,str,DefFileFilter,STRING_FILESAVETITLE_DEFAULT,FALSE)) return 0;
    1382 
    1383                     SaveDocument(GetWindow(hClient,GW_CHILD),str);
    1384                     return 0;
    1385                 case IDM_CODE_SAVE:
    1386                     //文字コードを指定して保存
    1387                     DialogBox(hResInst,MAKEINTRESOURCE(IDD_CODE_SAVE),hOwner,(DLGPROC)nkfDlgCodeSave);
    1388                     return 0;
    1389                 case IDM_ALLSAVE:
    1390                     for(i=0;i<MAX_WNDNUM;i++){
    1391                         if(MdiInfo[i].hwnd) SaveDocument(MdiInfo[i].hwnd,NULL);
    1392                     }
    1393                     if(ProjectInfo.name[0]) SaveProject();
    1394                     return 0;
    1395 
    1396                 case IDM_PAGESET:
    1397                     //ページ設定
    1398                     obj_Page.SetupDlg();
    1399                     return 0;
    1400 
    1401                 case IDM_PREVIEW:
    1402                     //プレビュー(Pro版のみ)
    1403                     Preview();
    1404                     return 0;
    1405 
    1406                 case IDM_PRINTOUT:
    1407                     //印刷
    1408                     Printout();
    1409                     return 0;
    1410 
    1411                 case IDM_EXIT:
    1412                     SendMessage(hwnd,WM_CLOSE,0,0);
    1413                     return 0;
    1414                 case IDM_UNDO:
    1415                 case (WORD)IDM_ACCEL_UNDO:
    1416                     hChild=GetWindow(hClient,GW_CHILD);
    1417                     if(!hChild) return 0;
    1418                     WndNum=GetWndNum(hChild);
    1419                     if(IS_DOCUMENT_TEXT(MdiInfo[WndNum].DocType))
    1420                         TextEdit_UndoCommand(WndNum);
    1421                     else if(MdiInfo[WndNum].DocType==WNDTYPE_RAD)
    1422                         Rad_UndoCommand(WndNum);
    1423                     else if(MdiInfo[WndNum].DocType==WNDTYPE_ICONEDIT)
    1424                         IconEdit_UndoCommand(WndNum);
    1425                     return 0;
    1426                 case IDM_REDO:
    1427                 case (WORD)IDM_ACCEL_REDO:
    1428                     hChild=GetWindow(hClient,GW_CHILD);
    1429                     if(!hChild) return 0;
    1430                     WndNum=GetWndNum(hChild);
    1431                     if(IS_DOCUMENT_TEXT(MdiInfo[WndNum].DocType))
    1432                         TextEdit_RedoCommand(WndNum);
    1433                     else if(MdiInfo[WndNum].DocType==WNDTYPE_RAD)
    1434                         Rad_RedoCommand(WndNum);
    1435                     else if(MdiInfo[WndNum].DocType==WNDTYPE_ICONEDIT)
    1436                         IconEdit_RedoCommand(WndNum);
    1437                     return 0;
    1438                 case IDM_CUT:
    1439                     hChild=GetWindow(hClient,GW_CHILD);
    1440                     WndNum=GetWndNum(hChild);
    1441                     if(IS_DOCUMENT_TEXT(MdiInfo[WndNum].DocType)){
    1442                         hEdit=GetWindow(hChild,GW_CHILD);
    1443 
    1444                         TextEdit_GetSel(WndNum,&CharRange);
    1445 
    1446                         hGlobal=(char *)GlobalAlloc(GMEM_MOVEABLE,CharRange.cpMax-CharRange.cpMin+1);
    1447                         pTemp=(char *)GlobalLock(hGlobal);
    1448                         memcpy(pTemp,MdiInfo[WndNum].pMdiTextEdit->buffer+CharRange.cpMin,CharRange.cpMax-CharRange.cpMin);
    1449                         pTemp[CharRange.cpMax-CharRange.cpMin]=0;
    1450                         GlobalUnlock(hGlobal);
    1451 
    1452                         //クリップボードに保存
    1453                         OpenClipboard(hwnd);
    1454                         EmptyClipboard();
    1455                         SetClipboardData(CF_TEXT,hGlobal);
    1456                         CloseClipboard();
    1457 
    1458                         //選択文字列を消去
    1459                         SendMessage(hEdit,WM_KEYDOWN,VK_DELETE,0);
    1460                     }
    1461                     else if(MdiInfo[WndNum].DocType==WNDTYPE_RAD){
    1462                         i2=GetWndInfoNum(MdiInfo[WndNum].path);
    1463 
    1464                         //クリップボードに格納するためのデータを用意する
    1465                         ProjectInfo.pWindowInfo[i2].pChildInfo[MdiInfo[WndNum].MdiRadInfo->SelectingItem[0]].pos.x-=17;
    1466                         ProjectInfo.pWindowInfo[i2].pChildInfo[MdiInfo[WndNum].MdiRadInfo->SelectingItem[0]].pos.y-=10;
    1467                         hGlobal=Rad_GetChildInfoClipboardData(WndNum,i2);
    1468                         ProjectInfo.pWindowInfo[i2].pChildInfo[MdiInfo[WndNum].MdiRadInfo->SelectingItem[0]].pos.x+=17;
    1469                         ProjectInfo.pWindowInfo[i2].pChildInfo[MdiInfo[WndNum].MdiRadInfo->SelectingItem[0]].pos.y+=10;
    1470 
    1471                         OpenClipboard(hwnd);
    1472                         EmptyClipboard();
    1473                         SetClipboardData(dwRadClipboardID,hGlobal);
    1474                         CloseClipboard();
    1475 
    1476                         SendMessage(MdiInfo[WndNum].MdiRadInfo->hRad,WM_COMMAND,IDM_RAD_ITEM_DELETE,0);
    1477                     }
    1478                     else if(MdiInfo[WndNum].DocType==WNDTYPE_ICONEDIT){
    1479                         //クリップボードに格納するためのデータを用意する
    1480                         hGlobal=IconEdit_GetChildInfoClipboardData(WndNum);
    1481                         if(hGlobal==0) return 0;
    1482 
    1483                         OpenClipboard(hwnd);
    1484                         EmptyClipboard();
    1485                         SetClipboardData(CF_BITMAP,hGlobal);
    1486                         CloseClipboard();
    1487 
    1488                         DeleteObject(MdiInfo[WndNum].MdiIconEditInfo->hSelectingBmp);
    1489                         MdiInfo[WndNum].MdiIconEditInfo->SelectLevel=0;
    1490 
    1491                         IconEdit_EraseRect(WndNum,&MdiInfo[WndNum].MdiIconEditInfo->DraggingRect);
    1492                     }
    1493                     return 0;
    1494                 case IDM_COPY:
    1495                     hChild=GetWindow(hClient,GW_CHILD);
    1496                     WndNum=GetWndNum(hChild);
    1497                     if(IS_DOCUMENT_TEXT(MdiInfo[WndNum].DocType)){
    1498                         hEdit=GetWindow(hChild,GW_CHILD);
    1499 
    1500                         TextEdit_GetSel(WndNum,&CharRange);
    1501 
    1502                         hGlobal=(char *)GlobalAlloc(GMEM_MOVEABLE,CharRange.cpMax-CharRange.cpMin+1);
    1503                         pTemp=(char *)GlobalLock(hGlobal);
    1504                         memcpy(pTemp,MdiInfo[WndNum].pMdiTextEdit->buffer+CharRange.cpMin,CharRange.cpMax-CharRange.cpMin);
    1505                         pTemp[CharRange.cpMax-CharRange.cpMin]=0;
    1506                         GlobalUnlock(hGlobal);
    1507 
    1508                         //クリップボードに保存
    1509                         OpenClipboard(hwnd);
    1510                         EmptyClipboard();
    1511                         SetClipboardData(CF_TEXT,hGlobal);
    1512                         CloseClipboard();
    1513                     }
    1514                     else if(MdiInfo[WndNum].DocType==WNDTYPE_RAD){
    1515                         i2=GetWndInfoNum(MdiInfo[WndNum].path);
    1516 
    1517                         //クリップボードに格納するためのデータを用意する
    1518                         hGlobal=Rad_GetChildInfoClipboardData(WndNum,i2);
    1519 
    1520                         OpenClipboard(hwnd);
    1521                         EmptyClipboard();
    1522                         SetClipboardData(dwRadClipboardID,hGlobal);
    1523                         CloseClipboard();
    1524                     }
    1525                     else if(MdiInfo[WndNum].DocType==WNDTYPE_ICONEDIT){
    1526                         //クリップボードに格納するためのデータを用意する
    1527                         hGlobal=IconEdit_GetChildInfoClipboardData(WndNum);
    1528 
    1529                         OpenClipboard(hwnd);
    1530                         EmptyClipboard();
    1531                         SetClipboardData(CF_BITMAP,hGlobal);
    1532                         CloseClipboard();
    1533                     }
    1534                     return 0;
    1535                 case IDM_PASTE:
    1536                     hChild=GetWindow(hClient,GW_CHILD);
    1537                     WndNum=GetWndNum(hChild);
    1538                     if(IS_DOCUMENT_TEXT(MdiInfo[WndNum].DocType)){
    1539                         hEdit=GetWindow(hChild,GW_CHILD);
    1540 
    1541                         //クリップボードを開く
    1542                         OpenClipboard(hwnd);
    1543                         hGlobal=GetClipboardData(CF_TEXT);
    1544                         if(!hGlobal){
    1545                             CloseClipboard();
    1546                             return 0;
    1547                         }
    1548 
    1549 
    1550                         if(pobj_nv->bPasteIndent){
    1551                             //インデント整形
    1552                             pTemp=CodeFormatter((char *)GlobalLock(hGlobal));
    1553                             GlobalUnlock(hGlobal);
    1554                         }
    1555                         else pTemp=(char *)GlobalLock(hGlobal);
    1556 
    1557 
    1558                         //テキストエディタの文字列をリプレイス
    1559                         TextEdit_ReplaceUpdateUndoData(WndNum,
    1560                             pTemp,
    1561                             1,
    1562                             1);
    1563 
    1564                         if(pobj_nv->bPasteIndent)
    1565                             HeapDefaultFree(pTemp);
    1566                         else
    1567                             GlobalUnlock(hGlobal);
    1568 
    1569                         //クリップボードを閉じる
    1570                         CloseClipboard();
    1571 
    1572 
    1573                         //キャレット位置までスクロールする
    1574                         TextEdit_ScrollCaret(WndNum,0);
    1575                         ResetCaretPos(WndNum);
    1576                     }
    1577                     else if(MdiInfo[WndNum].DocType==WNDTYPE_RAD){
    1578                         OpenClipboard(hwnd);
    1579                         hGlobal=GetClipboardData(dwRadClipboardID);
    1580                         if(!hGlobal){
    1581                             CloseClipboard();
    1582                             return 0;
    1583                         }
    1584                         Rad_PasteChildInfoClipboardData(WndNum,hGlobal);
    1585                         CloseClipboard();
    1586                     }
    1587                     else if(MdiInfo[WndNum].DocType==WNDTYPE_ICONEDIT){
    1588                         OpenClipboard(hwnd);
    1589                         hGlobal=GetClipboardData(CF_BITMAP);
    1590                         if(!hGlobal){
    1591                             CloseClipboard();
    1592                             return 0;
    1593                         }
    1594                         IconEdit_PasteChildInfoClipboardData(WndNum,(HBITMAP)hGlobal);
    1595                         CloseClipboard();
    1596                     }
    1597                     return 0;
    15981376                case IDM_DELETE:
    15991377                    hChild=GetWindow(hClient,GW_CHILD);
  • trunk/ab5.0/abdev/abdev/include/MainFrame.h

    r496 r497  
    6666    void OnCmdProjectFolderOpen( UINT uNotifyCode, int nID, CWindow wndCtl );
    6767
     68    // 「保存」メニューがクリックされた
     69    void OnCmdSave( UINT uNotifyCode, int nID, CWindow wndCtl );
     70
     71    // 「名前を付けて保存」メニューがクリックされた
     72    void OnCmdNewSave( UINT uNotifyCode, int nID, CWindow wndCtl );
     73
     74    // 「文字コードを指定して保存」メニューがクリックされた
     75    void OnCmdCodeSave( UINT uNotifyCode, int nID, CWindow wndCtl );
     76
     77    // 「すべて保存」メニューがクリックされた
     78    void OnCmdAllSave( UINT uNotifyCode, int nID, CWindow wndCtl );
     79
     80    // 「ページ設定」メニューがクリックされた
     81    void OnCmdPageSet( UINT uNotifyCode, int nID, CWindow wndCtl );
     82
     83    // 「印刷プレビュー」メニューがクリックされた
     84    void OnCmdPreview( UINT uNotifyCode, int nID, CWindow wndCtl );
     85
     86    // 「印刷」メニューがクリックされた
     87    void OnCmdPrintOut( UINT uNotifyCode, int nID, CWindow wndCtl );
     88
     89    // 「終了」メニューがクリックされた
     90    void OnCmdExit( UINT uNotifyCode, int nID, CWindow wndCtl );
     91
     92    // 「元に戻す」メニューがクリックされた
     93    void OnCmdUndo( UINT uNotifyCode, int nID, CWindow wndCtl );
     94
     95    // 「やり直し」メニューがクリックされた
     96    void OnCmdRedo( UINT uNotifyCode, int nID, CWindow wndCtl );
     97
     98    // 「切り取り」メニューがクリックされた
     99    void OnCmdCut( UINT uNotifyCode, int nID, CWindow wndCtl );
     100
     101    // 「コピー」メニューがクリックされた
     102    void OnCmdCopy( UINT uNotifyCode, int nID, CWindow wndCtl );
     103
     104    // 「貼り付け」メニューがクリックされた
     105    void OnCmdPaste( UINT uNotifyCode, int nID, CWindow wndCtl );
     106
    68107private:
    69108    // メッセージマップ
     
    88127        COMMAND_ID_HANDLER_EX( IDM_PROJECT_CLOSE, OnCmdProjectClose )
    89128        COMMAND_ID_HANDLER_EX( IDM_PROJECT_FOLDER_OPEN, OnCmdProjectFolderOpen )
     129        COMMAND_ID_HANDLER_EX( IDM_SAVE, OnCmdSave )
     130        COMMAND_ID_HANDLER_EX( IDM_NEWSAVE, OnCmdNewSave )
     131        COMMAND_ID_HANDLER_EX( IDM_CODE_SAVE, OnCmdCodeSave )
     132        COMMAND_ID_HANDLER_EX( IDM_ALLSAVE, OnCmdAllSave )
     133        COMMAND_ID_HANDLER_EX( IDM_PAGESET, OnCmdPageSet )
     134        COMMAND_ID_HANDLER_EX( IDM_PREVIEW, OnCmdPreview )
     135        COMMAND_ID_HANDLER_EX( IDM_PRINTOUT, OnCmdPrintOut )
     136        COMMAND_ID_HANDLER_EX( IDM_EXIT, OnCmdExit )
     137        COMMAND_ID_HANDLER_EX( IDM_UNDO, OnCmdUndo )
     138        COMMAND_ID_HANDLER_EX( (WORD)IDM_ACCEL_UNDO, OnCmdUndo )
     139        COMMAND_ID_HANDLER_EX( IDM_REDO, OnCmdRedo )
     140        COMMAND_ID_HANDLER_EX( (WORD)IDM_ACCEL_REDO, OnCmdRedo )
     141        COMMAND_ID_HANDLER_EX( IDM_CUT, OnCmdCut )
     142        COMMAND_ID_HANDLER_EX( IDM_COPY, OnCmdCopy )
     143        COMMAND_ID_HANDLER_EX( IDM_PASTE, OnCmdPaste )
    90144    END_MSG_MAP()
    91145};
  • 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.