浏览代码

* add CtrlC for go32v2 and checks for windows calls

git-svn-id: trunk@6120 -
pierre 18 年之前
父节点
当前提交
07327f9301
共有 1 个文件被更改,包括 16 次插入3 次删除
  1. 16 3
      ide/wconsole.pas

+ 16 - 3
ide/wconsole.pas

@@ -48,8 +48,13 @@ Procedure RestoreConsoleMode(const ConsoleMode : TConsoleMode);
 implementation
 implementation
 {$ifdef Windows}
 {$ifdef Windows}
   uses
   uses
+    wutils,
     windows;
     windows;
 {$endif Windows}
 {$endif Windows}
+{$ifdef GO32V2}
+  uses
+    Dpmiexcp;
+{$endif GO32V2}
 
 
 Procedure SaveConsoleMode(var ConsoleMode : TConsoleMode);
 Procedure SaveConsoleMode(var ConsoleMode : TConsoleMode);
 Begin
 Begin
@@ -57,10 +62,15 @@ Begin
   TCGetAttr(1,ConsoleMode);
   TCGetAttr(1,ConsoleMode);
 {$endif UNIX}
 {$endif UNIX}
 {$ifdef Windows}
 {$ifdef Windows}
-  GetConsoleMode(GetStdHandle(STD_INPUT_HANDLE),ConsoleMode);
+  if not GetConsoleMode(GetStdHandle(STD_INPUT_HANDLE),ConsoleMode) then
+    DebugMessage('','Call to GetConsoleMode failed, GetLastError='+
+        IntToStr(GetLastError),0,0);
 {$endif Windows}
 {$endif Windows}
 {$ifdef go32v2}
 {$ifdef go32v2}
-  ConsoleMode:=0;
+  if djgpp_set_ctrl_c(false) then
+    ConsoleMode:=1
+  else
+    ConsoleMode:=0;
 {$endif go32v2}
 {$endif go32v2}
 {$ifdef netware}
 {$ifdef netware}
   ConsoleMode:=0;
   ConsoleMode:=0;
@@ -73,9 +83,12 @@ Begin
   TCSetAttr(1,TCSANOW,ConsoleMode);
   TCSetAttr(1,TCSANOW,ConsoleMode);
 {$endif UNIX}
 {$endif UNIX}
 {$ifdef Windows}
 {$ifdef Windows}
-  SetConsoleMode(GetStdHandle(STD_INPUT_HANDLE),ConsoleMode);
+  if not SetConsoleMode(GetStdHandle(STD_INPUT_HANDLE),ConsoleMode) then
+    DebugMessage('','Call to SetConsoleMode failed, GetLastError='+
+        IntToStr(GetLastError),0,0);
 {$endif Windows}
 {$endif Windows}
 {$ifdef go32v2}
 {$ifdef go32v2}
+  djgpp_set_ctrl_c((ConsoleMode and 1)<>0);
 {$endif go32v2}
 {$endif go32v2}
 End;
 End;