Jak wyłączyć Scrollbar w aplikacji konsolowej w C++/Dev C++?
Scrollbar nie jest częścią aplikacji działającej w trybie tekstowym. Można co najwyżej wyłączyć w go w opcjach emulatora terminala, a to jest zależne od tego jakiego się używa.
Nie prawda, nr47, można wyłączyć scroll bar kawałkiem kodu. Wystarczy wywołać kilka funkcji API, m.in.:
http://msdn2.microsoft.com/en-us/library/ms686044.aspx
Jeśli dobrze pamiętam manipulacja ScreenBufferSize i WindowInfo jest wystarczająca. Nie mogę niestety znaleźć kodu, który to robi, ale wykonałem to kiedyś i wiem, że działa (w C# za pomocą P/Invoke, ale jednak).
//edit
To powyżej to nie musi wcale być okno konsoli.
Dzięki Ryan.
Znalazłem.
Jakby ktoś kiedyś szukał to zamieszczam tu :
#include
static HANDLE hStdIn;
static HANDLE hStdOut;
static DWORD SavedMode;
static CONSOLE_CURSOR_INFO SavedCursor;
static void resizeConBufAndWindow(HANDLE hConsole, SHORT xSize, SHORT ySize)
{
CONSOLE_SCREEN_BUFFER_INFO csbi;
BOOL bSuccess;
SMALL_RECT srWindowRect;
COORD coordScreen;
bSuccess = GetConsoleScreenBufferInfo(hConsole, &csbi);
coordScreen = GetLargestConsoleWindowSize(hConsole);
srWindowRect.Right = (SHORT) (min(xSize, coordScreen.X) - 1);
srWindowRect.Bottom = (SHORT) (min(ySize, coordScreen.Y) - 1);
srWindowRect.Left = srWindowRect.Top = (SHORT) 0;
coordScreen.X = xSize;
coordScreen.Y = ySize;
if ((DWORD) csbi.dwSize.X * csbi.dwSize.Y > (DWORD) xSize * ySize)
{
bSuccess = SetConsoleWindowInfo(hConsole, TRUE, &srWindowRect);
bSuccess = SetConsoleScreenBufferSize(hConsole, coordScreen);
}
if ((DWORD) csbi.dwSize.X * csbi.dwSize.Y < (DWORD) xSize * ySize)
{
bSuccess = SetConsoleScreenBufferSize(hConsole, coordScreen);
bSuccess = SetConsoleWindowInfo(hConsole, TRUE, &srWindowRect);
}
}
static BOOL CreateConsole( int Columns, int Rows )
{
BOOL bSuccess;
CONSOLE_SCREEN_BUFFER_INFO csbi;
CONSOLE_CURSOR_INFO cci;
bSuccess = GetConsoleScreenBufferInfo( GetStdHandle(STD_OUTPUT_HANDLE),&csbi);
if ( bSuccess )
{
if (csbi.dwCursorPosition.X | csbi.dwCursorPosition.Y)
{
bSuccess = FreeConsole();
bSuccess = AllocConsole();
}
bSuccess = SetConsoleTitle("Game Client");
hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
hStdIn = GetStdHandle(STD_INPUT_HANDLE);
bSuccess = SetConsoleMode(hStdIn, (unsigned long) (~(ENABLE_LINE_INPUT | ENABLE_ECHO_INPUT)) | ENABLE_WINDOW_INPUT | ENABLE_MOUSE_INPUT);
cci.dwSize = 25;
cci.bVisible = TRUE;
bSuccess = SetConsoleCursorInfo(hStdOut, &cci);
bSuccess = SetConsoleTextAttribute(hStdOut, 0 | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE );
resizeConBufAndWindow( hStdOut, (short) Columns, (short) Rows );
}
return bSuccess;
}
static BOOL Puts(HANDLE hConsole, PCHAR s)
{
DWORD cCharsWritten;
return WriteConsole(hConsole, s, strlen(s), &cCharsWritten, NULL);
}
int main()
{
int c, v;
CreateConsole(80,30);
Puts( hStdOut, "Hello!!" );
system("pause");
}