8
votes

Comment supprimer des barres de défilement dans la console Windows C ++

J'ai vérifié certains Rogue comme des jeux (Larn, Rogue, etc.) qui sont Écrit en C et C ++, et j'ai remarqué qu'ils n'ont pas les barres de défilement à droite de la fenêtre de la console.

Comment puis-je accomplir cette même fonctionnalité?


0 commentaires

4 Réponses :


9
votes

Pour retirer la barre de défilement, définissez simplement la hauteur du tampon d'écran pour avoir la même taille que la hauteur de la fenêtre: xxx


5 commentaires

J'ai eu ceci setConsolescreenbufferSize () échoué! Raison: 6


@Haseebmir code 6 est pour ERROR_INVALID_HANDLE . Votre Hout n'est certainement pas valide.


Il semble que le code fourni produit une erreur. Le didacticiel lié au forum fourni est également inaccessible maintenant.


C'est une réponse de plus de 10 ans et plus. Le contenu sur Stackoverflow n'est pas censé être mis à jour pour toujours. Quoi qu'il en soit, quelle est l'erreur?


@karlphillip citant l'utilisateur qui a affiché le code: "L'appel à SetConsolescreenbuffer échoue, avec le message d'erreur" 87 "". J'ai posté une nouvelle réponse qui semble fonctionner bien.



4
votes

Vous devez faire la tampon d'écran de la console de la même taille que la fenêtre de la console. Obtenez la taille de la fenêtre avec GetConsoleCreenbufferInfo, SRWindow. Réglez la taille du tampon avec SETCONSORECREENBufferSize ().


0 commentaires

0
votes

Utiliser #include , vous pouvez simplement faire xxx

vous pouvez Spécifiez Quelle barre de défilement pour masquer à l'aide de différents paramètres.


1 commentaires

winuser.h est inclus dans windows.h , que vous auriez besoin de toute façon pour utiliser getconsolewindow



1
votes

Pour supprimer les barres de défilement de la console, nous pouvons rendre la mémoire tampon d'écran de la console de la même taille que la fenêtre de la console. Cela peut être fait comme suit:

#include <Windows.h>
#include <iostream>

int main() {
    CONSOLE_SCREEN_BUFFER_INFO screenBufferInfo; 

    // Get console handle and get screen buffer information from that handle.
    HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
    GetConsoleScreenBufferInfo(hConsole, &screenBufferInfo);

    // Get rid of the scrollbar by setting the screen buffer size the same as 
    // the console window size.
    COORD new_screen_buffer_size;

    // screenBufferInfo.srWindow allows us to obtain the width and height info 
    // of the visible console in character cells.
    // That visible portion is what we want to set the screen buffer to, so that 
    // no scroll bars are needed to view the entire buffer.
    new_screen_buffer_size.X = screenBufferInfo.srWindow.Right - 
    screenBufferInfo.srWindow.Left + 1; // Columns
    new_screen_buffer_size.Y = screenBufferInfo.srWindow.Bottom - 
    screenBufferInfo.srWindow.Top + 1; // Rows

    // Set new buffer size
    SetConsoleScreenBufferSize(hConsole, new_screen_buffer_size);

    std::cout << "There are no scrollbars in this console!" << std::endl;

    return 0;
}


2 commentaires

L'idée est correcte. Cependant, le code n'est pas actuellement compilable car HConsole n'a pas été déclaré. Il y a aussi un commentaire qui fait référence à temp_screenbufferinfo qui n'est pas défini sur le code mais je suppose que vous vouliez dire SCRIMBufferInfo .


Merci pour l'information! J'avais utilisé le code dans un autre contexte. Je l'ai mis à jour.