Changeset 497 in dev for trunk/ab5.0/abdev/abdev/src
- Timestamp:
- Apr 19, 2008, 7:08:37 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/ab5.0/abdev/abdev/src/MainFrame.cpp
r496 r497 365 365 ShellExecute(m_hWnd,"explore",ProjectInfo.dir,NULL,NULL,SW_SHOWNORMAL); 366 366 } 367 368 void MainFrame::OnCmdSave( UINT uNotifyCode, int nID, CWindow wndCtl ) 369 { 370 SaveDocument(::GetWindow(hClient,GW_CHILD),NULL); 371 } 372 373 void 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 383 void MainFrame::OnCmdCodeSave( UINT uNotifyCode, int nID, CWindow wndCtl ) 384 { 385 //文字コードを指定して保存 386 DialogBox(hResInst,MAKEINTRESOURCE(IDD_CODE_SAVE),m_hWnd,(DLGPROC)nkfDlgCodeSave); 387 } 388 389 void 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 397 void MainFrame::OnCmdPageSet( UINT uNotifyCode, int nID, CWindow wndCtl ) 398 { 399 //ページ設定 400 obj_Page.SetupDlg(); 401 } 402 403 void MainFrame::OnCmdPreview( UINT uNotifyCode, int nID, CWindow wndCtl ) 404 { 405 //プレビュー(Pro版のみ) 406 Preview(); 407 } 408 409 void MainFrame::OnCmdPrintOut( UINT uNotifyCode, int nID, CWindow wndCtl ) 410 { 411 //印刷 412 Printout(); 413 } 414 415 void MainFrame::OnCmdExit( UINT uNotifyCode, int nID, CWindow wndCtl ) 416 { 417 SendMessage(WM_CLOSE); 418 } 419 420 void 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 433 void 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 446 void 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 506 void 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 551 void 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.