Browse Source

* try to get resizing to work

pierre 23 years ago
parent
commit
463d53271c
6 changed files with 81 additions and 30 deletions
  1. 7 4
      fv/app.pas
  2. 20 6
      fv/drivers.pas
  3. 7 4
      fvision/app.pas
  4. 20 6
      fvision/drivers.pas
  5. 15 7
      ide/fpmwnd.inc
  6. 12 3
      ide/fpusrscr.pas

+ 7 - 4
fv/app.pas

@@ -903,14 +903,14 @@ begin
   DoneMouse;
   DoneMouse;
   DoneMemory;
   DoneMemory;
   ScreenMode:=Mode;
   ScreenMode:=Mode;
+  InitMouse;
+  InitMemory;
+  InitScreen;
 {$ifdef USE_VIDEO_API}
 {$ifdef USE_VIDEO_API}
   Video.SetVideoMode(Mode);
   Video.SetVideoMode(Mode);
 {$else USE_VIDEO_API}
 {$else USE_VIDEO_API}
   SetVideoMode(Mode);
   SetVideoMode(Mode);
 {$endif USE_VIDEO_API}
 {$endif USE_VIDEO_API}
-  InitMouse;
-  InitMemory;
-  InitScreen;
 {$ifdef USE_VIDEO_API}
 {$ifdef USE_VIDEO_API}
   Buffer := Views.PVideoBuf(VideoBuf);
   Buffer := Views.PVideoBuf(VideoBuf);
 {$endif USE_VIDEO_API}
 {$endif USE_VIDEO_API}
@@ -1193,7 +1193,10 @@ END;
 END.
 END.
 {
 {
  $Log$
  $Log$
- Revision 1.17  2002-06-06 20:34:19  pierre
+ Revision 1.18  2002-06-07 14:12:21  pierre
+  * try to get resizing to work
+
+ Revision 1.17  2002/06/06 20:34:19  pierre
   + also check for system events
   + also check for system events
 
 
  Revision 1.16  2002/05/25 23:24:29  pierre
  Revision 1.16  2002/05/25 23:24:29  pierre

+ 20 - 6
fv/drivers.pas

@@ -1301,6 +1301,9 @@ VAR
   Ts, Fs: Sw_Integer; Ps: HPs; Tm: FontMetrics;
   Ts, Fs: Sw_Integer; Ps: HPs; Tm: FontMetrics;
 {$ENDIF}
 {$ENDIF}
 {$ENDIF}
 {$ENDIF}
+{$ifdef USE_VIDEO_API}
+    StoreScreenMode : TVideoMode;
+{$endif USE_VIDEO_API}
 BEGIN
 BEGIN
 if VideoInitialized then
 if VideoInitialized then
   DoneVideo;
   DoneVideo;
@@ -1366,17 +1369,25 @@ if Not TextmodeGFV then
 else
 else
 {$endif GRAPH_API}
 {$endif GRAPH_API}
   begin
   begin
+{$ifdef USE_VIDEO_API}
+    StoreScreenMode:=ScreenMode;
+{$endif USE_VIDEO_API}
     Video.InitVideo;
     Video.InitVideo;
+{$ifdef USE_VIDEO_API}
+    GetVideoMode(ScreenMode);
+    If (StoreScreenMode.color<>ScreenMode.color) or
+       (StoreScreenMode.row<>ScreenMode.row) or
+       (StoreScreenMode.col<>ScreenMode.col) then
+      begin
+        Video.SetVideoMode(StoreScreenMode);
+        GetVideoMode(ScreenMode);
+      end;
+{$endif USE_VIDEO_API}
     if ScreenWidth > MaxViewWidth then
     if ScreenWidth > MaxViewWidth then
       ScreenWidth := MaxViewWidth;
       ScreenWidth := MaxViewWidth;
     ScreenWidth:=Video.ScreenWidth;
     ScreenWidth:=Video.ScreenWidth;
     ScreenHeight:=Video.ScreenHeight;
     ScreenHeight:=Video.ScreenHeight;
     SetViewPort(0,0,ScreenWidth,ScreenHeight,true,true);
     SetViewPort(0,0,ScreenWidth,ScreenHeight,true,true);
-{$ifndef USE_VIDEO_API}
-   {ScreenMode  : Sw_Word;   }                             { Screen mode }
-{$else not USE_VIDEO_API}
-    GetVideoMode(ScreenMode);
-{$endif USE_VIDEO_API}
     I := ScreenWidth*8 -1;                         { Mouse width }
     I := ScreenWidth*8 -1;                         { Mouse width }
     J := ScreenHeight*8 -1;                        { Mouse height }
     J := ScreenHeight*8 -1;                        { Mouse height }
     SysScreenWidth := I + 1;
     SysScreenWidth := I + 1;
@@ -1652,7 +1663,10 @@ BEGIN
 END.
 END.
 {
 {
  $Log$
  $Log$
- Revision 1.27  2002-06-06 20:33:35  pierre
+ Revision 1.28  2002-06-07 14:08:28  pierre
+  * try to get resizing to work
+
+ Revision 1.27  2002/06/06 20:33:35  pierre
   * remove system event by calling sysmsg.getsystemevent
   * remove system event by calling sysmsg.getsystemevent
 
 
  Revision 1.26  2002/06/06 13:57:50  pierre
  Revision 1.26  2002/06/06 13:57:50  pierre

+ 7 - 4
fvision/app.pas

@@ -903,14 +903,14 @@ begin
   DoneMouse;
   DoneMouse;
   DoneMemory;
   DoneMemory;
   ScreenMode:=Mode;
   ScreenMode:=Mode;
+  InitMouse;
+  InitMemory;
+  InitScreen;
 {$ifdef USE_VIDEO_API}
 {$ifdef USE_VIDEO_API}
   Video.SetVideoMode(Mode);
   Video.SetVideoMode(Mode);
 {$else USE_VIDEO_API}
 {$else USE_VIDEO_API}
   SetVideoMode(Mode);
   SetVideoMode(Mode);
 {$endif USE_VIDEO_API}
 {$endif USE_VIDEO_API}
-  InitMouse;
-  InitMemory;
-  InitScreen;
 {$ifdef USE_VIDEO_API}
 {$ifdef USE_VIDEO_API}
   Buffer := Views.PVideoBuf(VideoBuf);
   Buffer := Views.PVideoBuf(VideoBuf);
 {$endif USE_VIDEO_API}
 {$endif USE_VIDEO_API}
@@ -1193,7 +1193,10 @@ END;
 END.
 END.
 {
 {
  $Log$
  $Log$
- Revision 1.17  2002-06-06 20:34:19  pierre
+ Revision 1.18  2002-06-07 14:12:21  pierre
+  * try to get resizing to work
+
+ Revision 1.17  2002/06/06 20:34:19  pierre
   + also check for system events
   + also check for system events
 
 
  Revision 1.16  2002/05/25 23:24:29  pierre
  Revision 1.16  2002/05/25 23:24:29  pierre

+ 20 - 6
fvision/drivers.pas

@@ -1301,6 +1301,9 @@ VAR
   Ts, Fs: Sw_Integer; Ps: HPs; Tm: FontMetrics;
   Ts, Fs: Sw_Integer; Ps: HPs; Tm: FontMetrics;
 {$ENDIF}
 {$ENDIF}
 {$ENDIF}
 {$ENDIF}
+{$ifdef USE_VIDEO_API}
+    StoreScreenMode : TVideoMode;
+{$endif USE_VIDEO_API}
 BEGIN
 BEGIN
 if VideoInitialized then
 if VideoInitialized then
   DoneVideo;
   DoneVideo;
@@ -1366,17 +1369,25 @@ if Not TextmodeGFV then
 else
 else
 {$endif GRAPH_API}
 {$endif GRAPH_API}
   begin
   begin
+{$ifdef USE_VIDEO_API}
+    StoreScreenMode:=ScreenMode;
+{$endif USE_VIDEO_API}
     Video.InitVideo;
     Video.InitVideo;
+{$ifdef USE_VIDEO_API}
+    GetVideoMode(ScreenMode);
+    If (StoreScreenMode.color<>ScreenMode.color) or
+       (StoreScreenMode.row<>ScreenMode.row) or
+       (StoreScreenMode.col<>ScreenMode.col) then
+      begin
+        Video.SetVideoMode(StoreScreenMode);
+        GetVideoMode(ScreenMode);
+      end;
+{$endif USE_VIDEO_API}
     if ScreenWidth > MaxViewWidth then
     if ScreenWidth > MaxViewWidth then
       ScreenWidth := MaxViewWidth;
       ScreenWidth := MaxViewWidth;
     ScreenWidth:=Video.ScreenWidth;
     ScreenWidth:=Video.ScreenWidth;
     ScreenHeight:=Video.ScreenHeight;
     ScreenHeight:=Video.ScreenHeight;
     SetViewPort(0,0,ScreenWidth,ScreenHeight,true,true);
     SetViewPort(0,0,ScreenWidth,ScreenHeight,true,true);
-{$ifndef USE_VIDEO_API}
-   {ScreenMode  : Sw_Word;   }                             { Screen mode }
-{$else not USE_VIDEO_API}
-    GetVideoMode(ScreenMode);
-{$endif USE_VIDEO_API}
     I := ScreenWidth*8 -1;                         { Mouse width }
     I := ScreenWidth*8 -1;                         { Mouse width }
     J := ScreenHeight*8 -1;                        { Mouse height }
     J := ScreenHeight*8 -1;                        { Mouse height }
     SysScreenWidth := I + 1;
     SysScreenWidth := I + 1;
@@ -1652,7 +1663,10 @@ BEGIN
 END.
 END.
 {
 {
  $Log$
  $Log$
- Revision 1.27  2002-06-06 20:33:35  pierre
+ Revision 1.28  2002-06-07 14:08:28  pierre
+  * try to get resizing to work
+
+ Revision 1.27  2002/06/06 20:33:35  pierre
   * remove system event by calling sysmsg.getsystemevent
   * remove system event by calling sysmsg.getsystemevent
 
 
  Revision 1.26  2002/06/06 13:57:50  pierre
  Revision 1.26  2002/06/06 13:57:50  pierre

+ 15 - 7
ide/fpmwnd.inc

@@ -28,14 +28,19 @@ end;
 procedure TIDEApp.ResizeApplication(x, y : longint);
 procedure TIDEApp.ResizeApplication(x, y : longint);
 var
 var
   OldR, R : TRect;
   OldR, R : TRect;
+  Mode: TVideoMode;
 begin
 begin
   GetBounds(OldR);
   GetBounds(OldR);
-  R.A.X:=0;
-  R.B.X:=X;
-  R.A.Y:=0;
-  R.B.Y:=Y;
-  ChangeBounds(R);
-  ReDraw;
+  { adapt to new size }
+  if (OldR.B.Y-OldR.A.Y<>y) or
+     (OldR.B.X-OldR.A.X<>x) then
+    begin
+      Mode.color:=ScreenMode.Color;
+      Mode.col:=x;
+      Mode.row:=y;
+      SetScreenVideoMode(Mode);
+      Redraw;
+    end;
 end;
 end;
 
 
 type
 type
@@ -254,7 +259,10 @@ end;
 
 
 {
 {
   $Log$
   $Log$
-  Revision 1.2  2002-05-30 15:03:24  pierre
+  Revision 1.3  2002-06-07 14:09:56  pierre
+   * try to get resizing to work
+
+  Revision 1.2  2002/05/30 15:03:24  pierre
    + ResizeApplication pethod for fvision
    + ResizeApplication pethod for fvision
 
 
   Revision 1.1  2001/08/04 11:30:23  peter
   Revision 1.1  2001/08/04 11:30:23  peter

+ 12 - 3
ide/fpusrscr.pas

@@ -640,11 +640,12 @@ begin
   if not res then
   if not res then
     error:=GetLastError;
     error:=GetLastError;
 {$endif win32bigwin}
 {$endif win32bigwin}
-  { make sure that both Screen Handle have the sme buffer }
   GetConsoleScreenBufferInfo(StartScreenBufferHandle,
   GetConsoleScreenBufferInfo(StartScreenBufferHandle,
     @ConsoleScreenBufferInfo);
     @ConsoleScreenBufferInfo);
+  { make sure that the IDE Screen Handle has the maximum display size
+    this removes the scroll bars if it is maximized }
   res:=SetConsoleScreenBufferSize(NewScreenBufferHandle,
   res:=SetConsoleScreenBufferSize(NewScreenBufferHandle,
-         ConsoleScreenBufferInfo.dwSize);
+         ConsoleScreenBufferInfo.dwMaximumWindowSize);
   if not res then
   if not res then
     error:=GetLastError;
     error:=GetLastError;
   IDEScreenBufferHandle:=NewScreenBufferHandle;
   IDEScreenBufferHandle:=NewScreenBufferHandle;
@@ -908,6 +909,11 @@ begin
       GetConsoleScreenBufferInfo(IDEScreenBufferHandle,
       GetConsoleScreenBufferInfo(IDEScreenBufferHandle,
         @ConsoleScreenBufferInfo);
         @ConsoleScreenBufferInfo);
       SetConsoleActiveScreenBuffer(IDEScreenBufferHandle);
       SetConsoleActiveScreenBuffer(IDEScreenBufferHandle);
+{$ifdef fvision}
+      { Needed to force InitSystemMsg to use the right console handle }
+      DoneEvents;
+      InitEvents;
+{$endif fvision}
       IdeMode:=(IdeMode or ENABLE_MOUSE_INPUT or ENABLE_WINDOW_INPUT) and not ENABLE_PROCESSED_INPUT;
       IdeMode:=(IdeMode or ENABLE_MOUSE_INPUT or ENABLE_WINDOW_INPUT) and not ENABLE_PROCESSED_INPUT;
       SetConsoleMode(GetStdHandle(Std_Input_Handle), IdeMode);
       SetConsoleMode(GetStdHandle(Std_Input_Handle), IdeMode);
       WindowPos.left:=0;
       WindowPos.left:=0;
@@ -969,7 +975,10 @@ end;
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.11  2002-06-06 14:10:34  pierre
+  Revision 1.12  2002-06-07 14:10:24  pierre
+   * try to get resizing to work
+
+  Revision 1.11  2002/06/06 14:10:34  pierre
    * allow window input for fvsion system messages
    * allow window input for fvsion system messages
 
 
   Revision 1.10  2002/06/06 06:46:28  pierre
   Revision 1.10  2002/06/06 06:46:28  pierre