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


Автор: YourLastSong 9.1.2012, 20:59
Здравствуйте, уважаемые господа.

Можно ли каким-то образом запретить изменение размеров окна консоли?

Заранее благодарю за возможные ответы.

Автор: feodorv 10.1.2012, 02:00
Гм. Думал, такое проскочет:
Код

#include <stdio.h>
#include <windows.h>

void main( void )
{
  HWND hWnd;
  DWORD style;

  if( (hWnd = GetConsoleWindow()) == NULL )
  {
    printf( "No console window!?\n" );
    return;
  }

  if( (style = GetWindowLong( hWnd, GWL_STYLE)) == 0 )
  {
    printf( "Error of 'GetWindowLong', error code %u\n", GetLastError());
    return;
  }

  style &= ~(WS_THICKFRAME | WS_MAXIMIZEBOX);

  SetLastError(0);
  if( SetWindowLong( hWnd, GWL_STYLE, style) == 0 && GetLastError() != 0 )
    printf( "Error of 'SetWindowLong', error code %u\n", GetLastError());

  Sleep( 60*60*1000 );
}


Но нет. Пишет:
Цитата

Error of 'SetWindowLong', error code 1413


ERROR_INVALID_INDEX, однако... smile 

Автор: feodorv 10.1.2012, 08:07
А вот так получилось:
Код

#include <stdio.h>
#include <windows.h>

void main( void )
{
  HWND hWnd;
  HMENU hm;

  if( (hWnd = GetConsoleWindow()) == NULL )
  {
    printf( "No console window!?\n" );
    return;
  }
  hm = GetSystemMenu( hWnd, FALSE);

  RemoveMenu(hm, SC_SIZE, MF_BYCOMMAND | MF_REMOVE);
  RemoveMenu(hm, SC_MAXIMIZE, MF_BYCOMMAND | MF_REMOVE);
  DrawMenuBar(hWnd);

  Sleep( 60*60*1000 );
}


Добавлено через 5 минут и 58 секунд
Может быть, вопрос можно решить и через WM_GETMINMAXINFO...

Автор: Absinthe 10.1.2012, 08:32
YourLastSong, а зачем это нужно? Консольное приложение должно при изменении размера консоли перестраивать свое отображение. Либо просто работать с вводом/выводом.

Иначе в твою сторону будет тонна лучей ненависти от обладателей немелких мониторов.

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