Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Измениние размера окна (реальный размер)


Автор: mgkit 21.3.2010, 15:29
Привет всем. С помощью Api функции можно изменять размер окна в самой программе. 
Код

conts
  NewSize: TCoord = (x: 4000; y: 8000);
...

  SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE), NewSize);


Размер действительно увеличивается, но в самой программе (т.е. ползунками можно раздвинуть окно до макс.). Так же можно раздвинуть за уголки. Вот собственно вопрос. Как сделать так, что бы раздвигать за уголки не пришлось, а с помощью программного кода установить размер самого окна консоли.

Автор: Rennigth 21.3.2010, 20:15
mgkit, 
Для примера:
Код

var
  lSTDHandle: Cardinal;
  lBufInfo:   _CONSOLE_SCREEN_BUFFER_INFO;
  lsRect: _SMALL_RECT;
begin
  ZeroMemory(@lBufInfo, SizeOf(_CONSOLE_SCREEN_BUFFER_INFO));
  lSTDHandle := GetStdHandle(STD_OUTPUT_HANDLE);
  if lSTDHandle <> INVALID_HANDLE_VALUE then
  begin
    if GetConsoleScreenBufferInfo(lSTDHandle, lBufInfo) then
    begin
      Readln;
      lsRect:= lBufInfo.srWindow;
      lsRect.Bottom := lsRect.Bottom - 10; // уменьшаем на 10 строк
      SetConsoleWindowInfo(lSTDHandle, True, lsRect);
    end;
  end;
  Readln;
end.

ConsoleScreenBufferInfo это не размер окна. Нужно использовать SetConsoleWindowInfo.
Но есть один ньюанс, буффер должен быть обязательно больше размера нужного тебе размера окна, в обратном случае SetConsoleWindowInfo несработает.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)