Resolved Function That works:
Code:// Prints out per-line at speed of delay in milliseconds for "int lines" amount of lines bool ScrollText(char Msg[MAX_LENGTH], int lines, int delay, int tabs) { using namespace std; CONSOLE_SCREEN_BUFFER_INFO consoleSBI; COORD tabCoord; // Get our cursor position if (!GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &consoleSBI)) return false; // Set X to equal 0 consoleSBI.dwCursorPosition.X = 0; // Add 1 to Y consoleSBI.dwCursorPosition.Y += 1; // Set our cursor position if(!SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), consoleSBI.dwCursorPosition)) return false; // Display any tabs the user wishes to use for (int i=tabs;i>0;--i) { // Instead of actually displaying tab characters, we will // set the cursor indented in by x amount of tabs // which is every 8 columns from the left if you start at // the left-most side of the screen consoleSBI.dwCursorPosition.X += 8; } // Set tabCoord tabCoord.X = consoleSBI.dwCursorPosition.X; tabCoord.Y = consoleSBI.dwCursorPosition.Y; // Set our cursor position if(!SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), consoleSBI.dwCursorPosition)) return false; for (i=0;i<lines;++i) { // Progress line-by-line consoleSBI.dwCursorPosition.Y = tabCoord.Y; for (int k=i+1;k>0;--k) { consoleSBI.dwCursorPosition.Y += 1; // Set our cursor position if(!SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), consoleSBI.dwCursorPosition)) return false; // Overwrite the previous data to erase it for (int j=strlen(Msg);j>0;--j) { cout << " "; } } // Set our cursor position if(!SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), consoleSBI.dwCursorPosition)) return false; // Display the message cout << Msg; // Pause for int delay Sleep(delay); } // Clean out cout buffer cout.flush(); return true; }



LinkBack URL
About LinkBacks




