콘솔 창의 크기를 바꾸는 방법

다음처럼 하면 됩니다.

// 참고: http://sourceforge.net/p/dosbox/code-0/HEAD/tree/dosbox/trunk/src/debug/debug_win32.cpp
void set_console_window_size(HANDLE console_handle, int width, int window_height, int buffer_height)
{
	CONSOLE_SCREEN_BUFFER_INFO current_console_screen_buffer_info;
	GetConsoleScreenBufferInfo(console_handle, &current_console_screen_buffer_info);

	COORD new_console_screen_buffer_size { static_cast<SHORT>(width), static_cast<SHORT>(buffer_height) };

	COORD largest_console_window_size = GetLargestConsoleWindowSize(console_handle);

	SMALL_RECT new_console_window_rect
	{
		0,
		0,
		static_cast<SHORT>(__min(width, largest_console_window_size.X) - 1),
		static_cast<SHORT>(__min(window_height, largest_console_window_size.Y) - 1)
	};
	
	if (current_console_screen_buffer_info.dwSize.X * current_console_screen_buffer_info.dwSize.Y < new_console_screen_buffer_size.X * new_console_screen_buffer_size.Y)
	{
		SetConsoleScreenBufferSize(console_handle, new_console_screen_buffer_size);
		SetConsoleWindowInfo(console_handle, TRUE, &new_console_window_rect);
	}
	else
	{
		SetConsoleWindowInfo(console_handle, TRUE, &new_console_window_rect);
		SetConsoleScreenBufferSize(console_handle, new_console_screen_buffer_size);
	}
}
Advertisements

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중