Changeset 500 in dev for trunk/ab5.0/abdev
- Timestamp:
- Apr 23, 2008, 1:57:14 PM (17 years ago)
- Location:
- trunk/ab5.0/abdev/abdev
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/ab5.0/abdev/abdev/abdev.cpp
r499 r500 88 88 #endif 89 89 90 91 void CreateProcessWithStdHandle( const std::string &appPath, const std::string &cmdLine)92 {93 std::string argsStr = (std::string)"\"" + appPath + "\" " + cmdLine;94 STARTUPINFO si;95 PROCESS_INFORMATION pi;96 memset(&si,0,sizeof(STARTUPINFO));97 si.cb=sizeof(STARTUPINFO);98 si.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;99 si.wShowWindow = SW_HIDE;100 si.hStdOutput = GetStdHandle(STD_OUTPUT_HANDLE);101 si.hStdInput = GetStdHandle(STD_INPUT_HANDLE);102 si.hStdError = GetStdHandle(STD_ERROR_HANDLE);103 104 char args[8192];105 lstrcpy( args, argsStr.c_str() );106 107 CreateProcess( NULL, args, NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi );108 }109 90 110 91 void ToBigChar(char str[]){ … … 1344 1325 LRESULT CALLBACK WindowFunc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){ 1345 1326 int i,i2,WndNum; 1346 char str[MAX_PATH],temporary[1024],temp2[MAX_PATH], temp3[MAX_PATH],*pTemp;1327 char str[MAX_PATH],temporary[1024],temp2[MAX_PATH],*pTemp; 1347 1328 HWND hChild; 1348 1329 RECT rect; … … 1350 1331 HDROP hDrop; 1351 1332 HGLOBAL hGlobal; 1352 HANDLE hFile;1353 1333 1354 1334 static COLORREF colorUser=RGB(255,255,255); … … 1374 1354 1375 1355 #ifndef THETEXT 1376 case IDM_DEBUG:1377 if(pobj_Debugger->IsDebugging()){1378 pobj_Debugger->DebugContinue();1379 return 0;1380 }1381 1382 hChild=GetWindow(hClient,GW_CHILD);1383 if(ProjectInfo.name[0]){1384 //プロジェクトが開かれている場合1385 if(!SetProjectToRun()) return 0;1386 1387 //デバッグ用のコマンドライン及び実行可能ファイル(DLLのみ)1388 sprintf(temporary,"%s\r\n%s",ProjectInfo.szExePath,ProjectInfo.szCmdLine);1389 sprintf(temp2,"%spgm.tmp",pj_editor_Dir);1390 hFile=CreateFile(temp2,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_TEMPORARY,NULL);1391 DWORD dwAccessBytes;1392 WriteFile(hFile,temporary,lstrlen(temporary),&dwAccessBytes,NULL);1393 CloseHandle(hFile);1394 1395 //ソースファイル名をtemp2へ1396 ProjectInfo.pobj_DBFileInfo->ppobj_FileInfo[0]->GetFullPath(temp2);1397 1398 //出力ファイル名をtemp3へ1399 lstrcpy(temp3,ProjectInfo.lpszOutput_Debug);1400 GetFullPath(temp3,ProjectInfo.dir);1401 1402 if(IsNeedCompileForProject(1))1403 sprintf(temporary,"\"%s\" \"%s\" /debug /run /wnd:%08x",temp2,temp3,hwnd);1404 else1405 sprintf(temporary,"\"%s\" \"%s\" /run /wnd:%08x",temp2,temp3,hwnd);1406 1407 //DLLオプション1408 if(ProjectInfo.dwModuleType==MT_DLL) lstrcat(temporary," /dll");1409 1410 //Unicodeオプション1411 if(ProjectInfo.dwOption & PJ_OP_UNICODE) lstrcat(temporary," /unicode");1412 1413 //ブレークポイントをセーブ1414 ProjectInfo.pobj_DBBreakPoint->SaveToTempFile();1415 }1416 else{1417 //単独ソースコード1418 if(!SetRunning(hChild)) return 0;1419 if(IsNeedCompile(MdiInfo[GetWndNum(hChild)].path,1))1420 sprintf(temporary,"\"%s\" /debug /run /wnd:%08x",MdiInfo[GetWndNum(hChild)].path,hwnd);1421 else1422 sprintf(temporary,"\"%s\" /run /wnd:%08x",MdiInfo[GetWndNum(hChild)].path,hwnd);1423 1424 //ブレークポイントをセーブ1425 pobj_DBBreakPoint->SaveToTempFile();1426 }1427 1428 //コンパイルビューをクリップするかどうか1429 if(bClipCompileView){1430 lstrcat(temporary," /clip_compile_view");1431 1432 //コンパイラビューを閉じる1433 if(hCompileView==(HWND)-1) return 0;1434 if(hCompileView){1435 hChild=hCompileView;1436 hCompileView=(HWND)-1;1437 SendMessage(hChild,WM_COMMAND,IDCANCEL,0);1438 }1439 1440 //重複起動防止のため1441 hCompileView=(HWND)-1;1442 }1443 1444 //インクルードディレクトリ1445 sprintf(temp2," /include_dir:\"%s\"",pobj_nv->GetIncludeDirFullPath().c_str());1446 lstrcat(temporary,temp2);1447 1448 CreateProcessWithStdHandle( ActiveBasic::Common::Environment::GetCompilerExePath( selectingPlatform ), temporary );1449 1450 return 0;1451 case IDM_DEBUGCOMPILE:1452 hChild=GetWindow(hClient,GW_CHILD);1453 if(ProjectInfo.name[0]){1454 //プロジェクトが開かれている場合1455 if(!SetProjectToRun()) return 0;1456 1457 //ソースファイル名をtemp2へ1458 ProjectInfo.pobj_DBFileInfo->ppobj_FileInfo[0]->GetFullPath(temp2);1459 1460 //出力ファイル名をtemp3へ1461 lstrcpy(temp3,ProjectInfo.lpszOutput_Debug);1462 GetFullPath(temp3,ProjectInfo.dir);1463 1464 sprintf(temporary,"\"%s\" \"%s\" /debug /wnd:%08x",temp2,temp3,hwnd);1465 1466 //DLLオプション1467 if(ProjectInfo.dwModuleType==MT_DLL) lstrcat(temporary," /dll");1468 1469 //Unicodeオプション1470 if(ProjectInfo.dwOption & PJ_OP_UNICODE) lstrcat(temporary," /unicode");1471 }1472 else{1473 //単独ソースコード1474 if(!SetRunning(hChild)) return 0;1475 sprintf(temporary,"\"%s\" /debug /wnd:%08x",MdiInfo[GetWndNum(hChild)].path,hwnd);1476 }1477 1478 //コンパイルビューをクリップするかどうか1479 if(bClipCompileView){1480 lstrcat(temporary," /clip_compile_view");1481 1482 //コンパイラビューを閉じる1483 if(hCompileView==(HWND)-1) return 0;1484 if(hCompileView){1485 hChild=hCompileView;1486 hCompileView=(HWND)-1;1487 SendMessage(hChild,WM_COMMAND,IDCANCEL,0);1488 }1489 1490 //重複起動防止のため1491 hCompileView=(HWND)-1;1492 }1493 1494 //インクルードディレクトリ1495 sprintf(temp2," /include_dir:\"%s\"",pobj_nv->GetIncludeDirFullPath().c_str());1496 lstrcat(temporary,temp2);1497 1498 CreateProcessWithStdHandle( ActiveBasic::Common::Environment::GetCompilerExePath( selectingPlatform ), temporary );1499 1500 return 0;1501 case IDM_ATTACH:1502 int idProcess;1503 DWORD dwPlatform;1504 idProcess=DialogBoxParam(hResInst,MAKEINTRESOURCE(IDD_ATTACH),hwnd,(DLGPROC)DlgAttach,(LPARAM)&dwPlatform);1505 if(idProcess==0) return 0;1506 1507 sprintf(temporary,"/attach:%08x /wnd:%08x",idProcess,hwnd);1508 1509 //コンパイルビューをクリップするかどうか1510 if(bClipCompileView){1511 lstrcat(temporary," /clip_compile_view");1512 1513 //コンパイラビューを閉じる1514 if(hCompileView==(HWND)-1) return 0;1515 if(hCompileView){1516 hChild=hCompileView;1517 hCompileView=(HWND)-1;1518 SendMessage(hChild,WM_COMMAND,IDCANCEL,0);1519 }1520 1521 //重複起動防止のため1522 hCompileView=(HWND)-1;1523 }1524 1525 //インクルードディレクトリ1526 sprintf(temp2," /include_dir:\"%s\"",pobj_nv->GetIncludeDirFullPath().c_str());1527 lstrcat(temporary,temp2);1528 1529 ActiveBasic::Common::Platform::EnumType platform;1530 if(dwPlatform==IMAGE_FILE_MACHINE_I386)1531 {1532 platform = ActiveBasic::Common::Platform::X86;1533 }1534 else if(dwPlatform==IMAGE_FILE_MACHINE_AMD64)1535 {1536 platform = ActiveBasic::Common::Platform::X64;1537 }1538 else1539 {1540 throw;1541 }1542 1543 CreateProcessWithStdHandle( ActiveBasic::Common::Environment::GetCompilerExePath( platform ), temporary );1544 1545 return 0;1546 case IDM_RELEASECOMPILE:1547 hChild=GetWindow(hClient,GW_CHILD);1548 if(ProjectInfo.name[0]){1549 //プロジェクトが開かれている場合1550 if(!SetProjectToRun()) return 0;1551 1552 //ソースファイル名をtemp2へ1553 ProjectInfo.pobj_DBFileInfo->ppobj_FileInfo[0]->GetFullPath(temp2);1554 1555 //出力ファイル名をtemp3へ1556 lstrcpy(temp3,ProjectInfo.lpszOutput_Release);1557 GetFullPath(temp3,ProjectInfo.dir);1558 1559 sprintf(temporary,"\"%s\" \"%s\" /wnd:%08x",temp2,temp3,hwnd);1560 1561 //DLLオプション1562 if(ProjectInfo.dwModuleType==MT_DLL) lstrcat(temporary," /dll");1563 1564 //Unicodeオプション1565 if(ProjectInfo.dwOption & PJ_OP_UNICODE) lstrcat(temporary," /unicode");1566 }1567 else{1568 //単独ソースコード1569 if(!SetRunning(hChild)) return 0;1570 sprintf(temporary,"\"%s\" /wnd:%08x",MdiInfo[GetWndNum(hChild)].path,hwnd);1571 }1572 1573 //コンパイルビューをクリップするかどうか1574 if(bClipCompileView){1575 lstrcat(temporary," /clip_compile_view");1576 1577 //コンパイラビューを閉じる1578 if(hCompileView==(HWND)-1) return 0;1579 if(hCompileView){1580 hChild=hCompileView;1581 hCompileView=(HWND)-1;1582 SendMessage(hChild,WM_COMMAND,IDCANCEL,0);1583 }1584 1585 //重複起動防止のため1586 hCompileView=(HWND)-1;1587 }1588 1589 //インクルードディレクトリ1590 sprintf(temp2," /include_dir:\"%s\"",pobj_nv->GetIncludeDirFullPath().c_str());1591 lstrcat(temporary,temp2);1592 1593 CreateProcessWithStdHandle( ActiveBasic::Common::Environment::GetCompilerExePath( selectingPlatform ), temporary );1594 1595 return 0;1596 case IDM_RELEASERUN:1597 hChild=GetWindow(hClient,GW_CHILD);1598 if(ProjectInfo.name[0]){1599 /* //プロジェクトが開かれている場合1600 if(!SetProjectToRun()) return 0;1601 1602 //必要であればリリースコンパイル1603 if(IsNeedCompileForProject(0))1604 SendMessage(hwnd,WM_COMMAND,IDM_RELEASECOMPILE,0);*/1605 1606 if(ProjectInfo.dwModuleType==MT_DLL){1607 lstrcpy(temporary,ProjectInfo.szExePath);1608 }1609 else{1610 lstrcpy(temporary,ProjectInfo.lpszOutput_Debug);1611 GetFullPath(temporary,ProjectInfo.dir);1612 }1613 }1614 else{1615 /* //必要であればリリースコンパイル1616 if(!SetRunning(hChild)) return 0;1617 1618 if(IsNeedCompile(MdiInfo[GetWndNum(hChild)].path,0))1619 SendMessage(hwnd,WM_COMMAND,IDM_RELEASECOMPILE,0);*/1620 1621 //単独ソースコード1622 _splitpath(MdiInfo[GetWndNum(hChild)].path,temporary,temp2,temp3,NULL);1623 lstrcat(temporary,temp2);1624 lstrcat(temporary,temp3);1625 lstrcat(temporary,".exe");1626 }1627 1628 //インクルードディレクトリ1629 sprintf(temp2," /include_dir:\"%s\"",pobj_nv->GetIncludeDirFullPath().c_str());1630 lstrcat(temporary,temp2);1631 1632 ShellExecute(hwnd,"open",temporary,NULL,NULL,SW_SHOWNORMAL);1633 return 0;1634 1356 1635 1357 -
trunk/ab5.0/abdev/abdev/include/MainFrame.h
r499 r500 140 140 // 「オプション」メニューがクリックされた 141 141 void OnCmdSet( UINT uNotifyCode, int nID, CWindow wndCtl ); 142 143 // 「デバッグ実行」メニューがクリックされた 144 void OnCmdDebug( UINT uNotifyCode, int nID, CWindow wndCtl ); 145 146 // 「デバッグビルド」メニューがクリックされた 147 void OnCmdDebugCompile( UINT uNotifyCode, int nID, CWindow wndCtl ); 148 149 // 「アタッチ」メニューがクリックされた 150 void OnCmdAttach( UINT uNotifyCode, int nID, CWindow wndCtl ); 151 152 // 「リリースビルド」メニューがクリックされた 153 void OnCmdReleaseCompile( UINT uNotifyCode, int nID, CWindow wndCtl ); 154 155 // 「リリース実行」メニューがクリックされた 156 void OnCmdReleaseRun( UINT uNotifyCode, int nID, CWindow wndCtl ); 142 157 143 158 private: … … 207 222 #endif 208 223 COMMAND_ID_HANDLER_EX( IDM_SET, OnCmdSet ) 224 COMMAND_ID_HANDLER_EX( IDM_DEBUG, OnCmdDebug ) 225 COMMAND_ID_HANDLER_EX( IDM_DEBUGCOMPILE, OnCmdDebugCompile ) 226 COMMAND_ID_HANDLER_EX( IDM_ATTACH, OnCmdAttach ) 227 COMMAND_ID_HANDLER_EX( IDM_RELEASECOMPILE, OnCmdReleaseCompile ) 228 COMMAND_ID_HANDLER_EX( IDM_RELEASERUN, OnCmdReleaseRun ) 209 229 END_MSG_MAP() 210 230 }; -
trunk/ab5.0/abdev/abdev/src/MainFrame.cpp
r499 r500 746 746 DlgOptionSetting( m_hWnd ); 747 747 } 748 749 void CreateProcessWithStdHandle( const std::string &appPath, const std::string &cmdLine) 750 { 751 std::string argsStr = (std::string)"\"" + appPath + "\" " + cmdLine; 752 STARTUPINFO si; 753 PROCESS_INFORMATION pi; 754 memset(&si,0,sizeof(STARTUPINFO)); 755 si.cb=sizeof(STARTUPINFO); 756 si.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW; 757 si.wShowWindow = SW_HIDE; 758 si.hStdOutput = GetStdHandle(STD_OUTPUT_HANDLE); 759 si.hStdInput = GetStdHandle(STD_INPUT_HANDLE); 760 si.hStdError = GetStdHandle(STD_ERROR_HANDLE); 761 762 char args[8192]; 763 lstrcpy( args, argsStr.c_str() ); 764 765 CreateProcess( NULL, args, NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi ); 766 } 767 768 void MainFrame::OnCmdDebug( UINT uNotifyCode, int nID, CWindow wndCtl ) 769 { 770 char temporary[1024], temp2[1024], temp3[1024]; 771 if(pobj_Debugger->IsDebugging()){ 772 pobj_Debugger->DebugContinue(); 773 return; 774 } 775 776 HWND hChild = ::GetWindow(hClient,GW_CHILD); 777 if(ProjectInfo.name[0]){ 778 //プロジェクトが開かれている場合 779 if(!SetProjectToRun()) return; 780 781 //デバッグ用のコマンドライン及び実行可能ファイル(DLLのみ) 782 sprintf(temporary,"%s\r\n%s",ProjectInfo.szExePath,ProjectInfo.szCmdLine); 783 sprintf(temp2,"%spgm.tmp",pj_editor_Dir); 784 HANDLE hFile=CreateFile(temp2,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_TEMPORARY,NULL); 785 DWORD dwAccessBytes; 786 WriteFile(hFile,temporary,lstrlen(temporary),&dwAccessBytes,NULL); 787 CloseHandle(hFile); 788 789 //ソースファイル名をtemp2へ 790 ProjectInfo.pobj_DBFileInfo->ppobj_FileInfo[0]->GetFullPath(temp2); 791 792 //出力ファイル名をtemp3へ 793 lstrcpy(temp3,ProjectInfo.lpszOutput_Debug); 794 GetFullPath(temp3,ProjectInfo.dir); 795 796 if(IsNeedCompileForProject(1)) 797 sprintf(temporary,"\"%s\" \"%s\" /debug /run /wnd:%08x",temp2,temp3,m_hWnd); 798 else 799 sprintf(temporary,"\"%s\" \"%s\" /run /wnd:%08x",temp2,temp3,m_hWnd); 800 801 //DLLオプション 802 if(ProjectInfo.dwModuleType==MT_DLL) lstrcat(temporary," /dll"); 803 804 //Unicodeオプション 805 if(ProjectInfo.dwOption & PJ_OP_UNICODE) lstrcat(temporary," /unicode"); 806 807 //ブレークポイントをセーブ 808 ProjectInfo.pobj_DBBreakPoint->SaveToTempFile(); 809 } 810 else{ 811 //単独ソースコード 812 if(!SetRunning(hChild)) return; 813 if(IsNeedCompile(MdiInfo[GetWndNum(hChild)].path,1)) 814 sprintf(temporary,"\"%s\" /debug /run /wnd:%08x",MdiInfo[GetWndNum(hChild)].path,m_hWnd); 815 else 816 sprintf(temporary,"\"%s\" /run /wnd:%08x",MdiInfo[GetWndNum(hChild)].path,m_hWnd); 817 818 //ブレークポイントをセーブ 819 extern CDBBreakPoint *pobj_DBBreakPoint; 820 pobj_DBBreakPoint->SaveToTempFile(); 821 } 822 823 //コンパイルビューをクリップするかどうか 824 extern BOOL bClipCompileView; 825 if(bClipCompileView){ 826 lstrcat(temporary," /clip_compile_view"); 827 828 //コンパイラビューを閉じる 829 extern HWND hCompileView; 830 if(hCompileView==(HWND)-1) return; 831 if(hCompileView){ 832 hChild=hCompileView; 833 hCompileView=(HWND)-1; 834 SendMessage(hChild,WM_COMMAND,IDCANCEL,0); 835 } 836 837 //重複起動防止のため 838 hCompileView=(HWND)-1; 839 } 840 841 //インクルードディレクトリ 842 sprintf(temp2," /include_dir:\"%s\"",pobj_nv->GetIncludeDirFullPath().c_str()); 843 lstrcat(temporary,temp2); 844 845 extern ActiveBasic::Common::Platform::EnumType selectingPlatform; 846 CreateProcessWithStdHandle( ActiveBasic::Common::Environment::GetCompilerExePath( selectingPlatform ), temporary ); 847 } 848 849 void MainFrame::OnCmdDebugCompile( UINT uNotifyCode, int nID, CWindow wndCtl ) 850 { 851 char temporary[1024], temp2[1024], temp3[1024]; 852 853 HWND hChild=::GetWindow(hClient,GW_CHILD); 854 if(ProjectInfo.name[0]){ 855 //プロジェクトが開かれている場合 856 if(!SetProjectToRun()) return; 857 858 //ソースファイル名をtemp2へ 859 ProjectInfo.pobj_DBFileInfo->ppobj_FileInfo[0]->GetFullPath(temp2); 860 861 //出力ファイル名をtemp3へ 862 lstrcpy(temp3,ProjectInfo.lpszOutput_Debug); 863 GetFullPath(temp3,ProjectInfo.dir); 864 865 sprintf(temporary,"\"%s\" \"%s\" /debug /wnd:%08x",temp2,temp3,m_hWnd); 866 867 //DLLオプション 868 if(ProjectInfo.dwModuleType==MT_DLL) lstrcat(temporary," /dll"); 869 870 //Unicodeオプション 871 if(ProjectInfo.dwOption & PJ_OP_UNICODE) lstrcat(temporary," /unicode"); 872 } 873 else{ 874 //単独ソースコード 875 if(!SetRunning(hChild)) return; 876 sprintf(temporary,"\"%s\" /debug /wnd:%08x",MdiInfo[GetWndNum(hChild)].path,m_hWnd); 877 } 878 879 //コンパイルビューをクリップするかどうか 880 extern BOOL bClipCompileView; 881 if(bClipCompileView){ 882 lstrcat(temporary," /clip_compile_view"); 883 884 //コンパイラビューを閉じる 885 extern HWND hCompileView; 886 if(hCompileView==(HWND)-1) return; 887 if(hCompileView){ 888 hChild=hCompileView; 889 hCompileView=(HWND)-1; 890 SendMessage(hChild,WM_COMMAND,IDCANCEL,0); 891 } 892 893 //重複起動防止のため 894 hCompileView=(HWND)-1; 895 } 896 897 //インクルードディレクトリ 898 sprintf(temp2," /include_dir:\"%s\"",pobj_nv->GetIncludeDirFullPath().c_str()); 899 lstrcat(temporary,temp2); 900 901 extern ActiveBasic::Common::Platform::EnumType selectingPlatform; 902 CreateProcessWithStdHandle( ActiveBasic::Common::Environment::GetCompilerExePath( selectingPlatform ), temporary ); 903 904 } 905 906 void MainFrame::OnCmdAttach( UINT uNotifyCode, int nID, CWindow wndCtl ) 907 { 908 char temporary[1024], temp2[1024]; 909 910 int idProcess; 911 DWORD dwPlatform; 912 idProcess=DialogBoxParam(hResInst,MAKEINTRESOURCE(IDD_ATTACH),m_hWnd,(DLGPROC)DlgAttach,(LPARAM)&dwPlatform); 913 if(idProcess==0) return; 914 915 sprintf(temporary,"/attach:%08x /wnd:%08x",idProcess,m_hWnd); 916 917 //コンパイルビューをクリップするかどうか 918 extern BOOL bClipCompileView; 919 if(bClipCompileView){ 920 lstrcat(temporary," /clip_compile_view"); 921 922 //コンパイラビューを閉じる 923 extern HWND hCompileView; 924 if(hCompileView==(HWND)-1) return; 925 if(hCompileView){ 926 HWND hChild=hCompileView; 927 hCompileView=(HWND)-1; 928 SendMessage(hChild,WM_COMMAND,IDCANCEL,0); 929 } 930 931 //重複起動防止のため 932 hCompileView=(HWND)-1; 933 } 934 935 //インクルードディレクトリ 936 sprintf(temp2," /include_dir:\"%s\"",pobj_nv->GetIncludeDirFullPath().c_str()); 937 lstrcat(temporary,temp2); 938 939 ActiveBasic::Common::Platform::EnumType platform; 940 if(dwPlatform==IMAGE_FILE_MACHINE_I386) 941 { 942 platform = ActiveBasic::Common::Platform::X86; 943 } 944 else if(dwPlatform==IMAGE_FILE_MACHINE_AMD64) 945 { 946 platform = ActiveBasic::Common::Platform::X64; 947 } 948 else 949 { 950 throw; 951 } 952 953 extern ActiveBasic::Common::Platform::EnumType selectingPlatform; 954 CreateProcessWithStdHandle( ActiveBasic::Common::Environment::GetCompilerExePath( platform ), temporary ); 955 } 956 957 void MainFrame::OnCmdReleaseCompile( UINT uNotifyCode, int nID, CWindow wndCtl ) 958 { 959 char temporary[1024], temp2[1024], temp3[1024]; 960 961 HWND hChild=::GetWindow(hClient,GW_CHILD); 962 if(ProjectInfo.name[0]){ 963 //プロジェクトが開かれている場合 964 if(!SetProjectToRun()) return; 965 966 //ソースファイル名をtemp2へ 967 ProjectInfo.pobj_DBFileInfo->ppobj_FileInfo[0]->GetFullPath(temp2); 968 969 //出力ファイル名をtemp3へ 970 lstrcpy(temp3,ProjectInfo.lpszOutput_Release); 971 GetFullPath(temp3,ProjectInfo.dir); 972 973 sprintf(temporary,"\"%s\" \"%s\" /wnd:%08x",temp2,temp3,m_hWnd); 974 975 //DLLオプション 976 if(ProjectInfo.dwModuleType==MT_DLL) lstrcat(temporary," /dll"); 977 978 //Unicodeオプション 979 if(ProjectInfo.dwOption & PJ_OP_UNICODE) lstrcat(temporary," /unicode"); 980 } 981 else{ 982 //単独ソースコード 983 if(!SetRunning(hChild)) return; 984 sprintf(temporary,"\"%s\" /wnd:%08x",MdiInfo[GetWndNum(hChild)].path,m_hWnd); 985 } 986 987 //コンパイルビューをクリップするかどうか 988 extern BOOL bClipCompileView; 989 if(bClipCompileView){ 990 lstrcat(temporary," /clip_compile_view"); 991 992 //コンパイラビューを閉じる 993 extern HWND hCompileView; 994 if(hCompileView==(HWND)-1) return; 995 if(hCompileView){ 996 hChild=hCompileView; 997 hCompileView=(HWND)-1; 998 SendMessage(hChild,WM_COMMAND,IDCANCEL,0); 999 } 1000 1001 //重複起動防止のため 1002 hCompileView=(HWND)-1; 1003 } 1004 1005 //インクルードディレクトリ 1006 sprintf(temp2," /include_dir:\"%s\"",pobj_nv->GetIncludeDirFullPath().c_str()); 1007 lstrcat(temporary,temp2); 1008 1009 extern ActiveBasic::Common::Platform::EnumType selectingPlatform; 1010 CreateProcessWithStdHandle( ActiveBasic::Common::Environment::GetCompilerExePath( selectingPlatform ), temporary ); 1011 } 1012 1013 void MainFrame::OnCmdReleaseRun( UINT uNotifyCode, int nID, CWindow wndCtl ) 1014 { 1015 char temporary[1024], temp2[1024], temp3[1024]; 1016 1017 HWND hChild=::GetWindow(hClient,GW_CHILD); 1018 if(ProjectInfo.name[0]){ 1019 /* //プロジェクトが開かれている場合 1020 if(!SetProjectToRun()) return; 1021 1022 //必要であればリリースコンパイル 1023 if(IsNeedCompileForProject(0)) 1024 SendMessage(WM_COMMAND,IDM_RELEASECOMPILE,0);*/ 1025 1026 if(ProjectInfo.dwModuleType==MT_DLL){ 1027 lstrcpy(temporary,ProjectInfo.szExePath); 1028 } 1029 else{ 1030 lstrcpy(temporary,ProjectInfo.lpszOutput_Debug); 1031 GetFullPath(temporary,ProjectInfo.dir); 1032 } 1033 } 1034 else{ 1035 /* //必要であればリリースコンパイル 1036 if(!SetRunning(hChild)) return; 1037 1038 if(IsNeedCompile(MdiInfo[GetWndNum(hChild)].path,0)) 1039 SendMessage(WM_COMMAND,IDM_RELEASECOMPILE,0);*/ 1040 1041 //単独ソースコード 1042 _splitpath(MdiInfo[GetWndNum(hChild)].path,temporary,temp2,temp3,NULL); 1043 lstrcat(temporary,temp2); 1044 lstrcat(temporary,temp3); 1045 lstrcat(temporary,".exe"); 1046 } 1047 1048 //インクルードディレクトリ 1049 sprintf(temp2," /include_dir:\"%s\"",pobj_nv->GetIncludeDirFullPath().c_str()); 1050 lstrcat(temporary,temp2); 1051 1052 ShellExecute(m_hWnd,"open",temporary,NULL,NULL,SW_SHOWNORMAL); 1053 }
Note:
See TracChangeset
for help on using the changeset viewer.