Zusammenhang Zeilen/Spalten - Größe Windows-Konsole

  • Zusammenhang Zeilen/Spalten - Größe Windows-Konsole

    Hallo,

    bestimmt ne seltsame Frage, aber irgendwie komme ich nicht dahinter.

    Angenommen, man ändert wie folgt die Größe der Windows-Konsole zu NEW_X und NEW_Y (obwohl ich den Verdacht habe, das diese Vorgehensweise inzwischen stark veraltet ist),

    C-Quellcode

    1. HWND console = GetConsoleWindow();
    2. RECT orig;
    3. GetWindowRect(console, &orig);
    4. MoveWindow(console, orig.left, orig.top, NEW_X, NEW_Y, TRUE);
    Wie bekomme ich jetzt heraus, wieviele Zeilen und Spalten die neue Konsole dann hat? Ich gehe mal davon aus, das in obigen Vorgehen die neue Größe in Pixel angegeben wird, aber weiter?
  • Ich habe kein Windows und kann es daher nicht testen, doch ixquick zeigte mir diese Möglichkeit:
    (entnommen aus stackoverflow.com/questions/68…nal-size-in-c-for-windows)

    C-Quellcode

    1. #include <windows.h>
    2. int main(int argc, char *argv[]) {
    3. CONSOLE_SCREEN_BUFFER_INFO csbi;
    4. int columns, rows;
    5. GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi);
    6. columns = csbi.srWindow.Right - csbi.srWindow.Left + 1;
    7. rows = csbi.srWindow.Bottom - csbi.srWindow.Top + 1;
    8. printf("columns: %d\n", columns);
    9. printf("rows: %d\n", rows);
    10. return 0;
    11. }
    Alles anzeigen


    Vielleicht funktioniert das ja (immer noch)?
  • PS:
    Ausgeschrieben sieht das dann so aus:

    C-Quellcode

    1. #define _WIN32_WINNT 0x0500
    2. #include <windows.h>
    3. #include <iostream>
    4. void moveCWindow(HWND console,
    5. auto cwindow_left,
    6. auto cwindow_top,
    7. auto cwindow_right,
    8. auto cwindow_bottom)
    9. {
    10. MoveWindow(console, cwindow_left, cwindow_top, cwindow_right, cwindow_bottom, TRUE);
    11. }
    12. void getCsbi(HANDLE hndl,
    13. CONSOLE_SCREEN_BUFFER_INFO csbi,
    14. auto& cwindow_columns,
    15. auto& cwindow_rows)
    16. {
    17. GetConsoleScreenBufferInfo(hndl, &csbi);
    18. cwindow_columns = csbi.srWindow.Right - csbi.srWindow.Left + 1;
    19. cwindow_rows = csbi.srWindow.Bottom - csbi.srWindow.Top + 1;
    20. }
    21. int main()
    22. {
    23. HANDLE hndl = GetStdHandle(STD_OUTPUT_HANDLE);
    24. HWND console = GetConsoleWindow();
    25. CONSOLE_SCREEN_BUFFER_INFO csbi;
    26. auto cwindow_left = 50;
    27. auto cwindow_top = 50;
    28. auto cwindow_right = 800;
    29. auto cwindow_bottom = 600;
    30. auto cwindow_columns = 0, cwindow_rows = 0;
    31. moveCWindow(console, cwindow_left, cwindow_top, cwindow_right, cwindow_bottom);
    32. getCsbi(hndl, csbi, cwindow_columns, cwindow_rows);
    33. std::cout << "Groesse Konsole: " << cwindow_right << " x " << cwindow_bottom << '\n';
    34. std::cout << "Spalten: " << cwindow_columns << '\n';
    35. std::cout << "Zeilen: " << cwindow_rows << '\n';
    36. }
    Alles anzeigen
    Aber weshalb ich das schreibe, man kann die Werte auch zur Laufzeit ändern :)

    Dateien
    • code.zip

      (1,39 kB, 9 mal heruntergeladen, zuletzt: )

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von lemon03 ()

  • Benutzer online 1

    1 Besucher