logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak ustawić pełnoekranowy tryb konsoli w C++ w Microsoft Visual?

chrobry 27 Kwi 2005 15:36 1601 16
REKLAMA
  • #1 1442130
    chrobry
    Poziom 13  
    Posty: 136
    Pomógł: 2
    Ocena: 7
    Co należałoby wklepać do kodu programu na konsolę w Microsoft Viusalu, aby uzyskać następujący efekt, mianowicie po jego uruchomieniu okno programu rozciągało by sie na cały ekran. W wyniku czego mielibyśmy pełnokerkanowy program, i analogiczna operacja w drugą stronę.

    Może do systemu terzeba byłoby poprostu przesłać informacje o kombinacji ALT+ENTER, ale ja za bardzo nie wiem w jai sposób.
  • REKLAMA
  • #2 1443126
    powerm
    Poziom 23  
    Posty: 631
    Pomógł: 43
    Ocena: 43
    Poszukaj odpowiedniego wywolania w Windows API. W najgorszym wypadku moze sie uda wyslac Alt plus enter.
  • #3 1443190
    john_t
    Poziom 29  
    Posty: 1070
    Pomógł: 127
    Ocena: 89
    chrobry napisał:
    Co należałoby wklepać do kodu programu na konsolę w Microsoft Viusalu, aby uzyskać następujący efekt, mianowicie po jego uruchomieniu okno programu rozciągało by się na cały ekran. W wyniku czego mielibyśmy pełnokerkanowy program, i analogiczna operacja w drugą stronę.

    Może do systemu terzeba byłoby po prostu przesłać informacje o kombinacji ALT+ENTER, ale ja za bardzo nie wiem w jai sposób.

    To dość proste, w opcji Form1 (formularza aplikacji) ustaw w kategorii "Position" podpunkt "StartUpPosition" opcję "CenterScreen"
    Wtedy form1 wyświetli się w środku ekranu. Potem prosta pętla z opóżnieniem (aby była animacja) lub wpisanie wartości (dobierz doświadczalnie bo zależy to od rozdzielczości ekranowej)
    w VB studio wygląda to tak (w C++ podobnie tyle że pętla ma inną postać):
    For n=1 to 10000
    Form1.Height = n
    Form1.Width = 2 * n
    (to można wpisać jakieś opóźnienie)
    next n
    Pętla ta zwiększa rozmiary Form1
    zmniejszanie spróbuj już sam.
  • REKLAMA
  • #4 1443206
    Samuraj
    Poziom 35  
    Posty: 2792
    Pomógł: 286
    Ocena: 619
    Niestety VB to nie to samo co VC++.
    Najłatwiej bedzie pobrac uchwyt okna i zmienic jego rozmiar, poszukaj w API powinno byc. Zwróc uwage ze mozna odpalic program przy róznych rozdzielczościach pulpitu. Należało by najpier sprawdzic jaka jest rozdzielczośc.
  • #5 1443335
    chrobry
    Poziom 13  
    Posty: 136
    Pomógł: 2
    Ocena: 7
    API a co to takiego ? to mi nic niemówi

    Dodano po 2 [minuty]:

    Ja narazie uzywalem: prostych plikow naglowkowych o ile to plik naglowkowy

    Dodano po 19 [minuty]:

    Może źle się wyraziłem ja mam Visual C++

    i robie pod konsolę programy :/
  • #6 1443451
    apstynent
    Poziom 22  
    Posty: 636
    Pomógł: 31
    Ocena: 5
    hmm... te dane są zapisane w pliku xxx.pif gdzie xxx to nazwa pliku wykonywalnego do którego jest ten plik
  • #7 1443465
    chrobry
    Poziom 13  
    Posty: 136
    Pomógł: 2
    Ocena: 7
    hmm, ale jakie dane?
  • REKLAMA
  • #8 1443479
    apstynent
    Poziom 22  
    Posty: 636
    Pomógł: 31
    Ocena: 5
    żebym ja to wiedział... :)
    windows se sam robi taki plik jak odpalisz coś dosowego .exe
    i jak będziesz program kopiował razem z tym plikiem to mysle ze efekt bedzie taki o jaki Ci chodzi [dawno juz takich prog nie przenosiłem ale to raczej dziala z tego co pamietam]
  • #9 1443546
    chrobry
    Poziom 13  
    Posty: 136
    Pomógł: 2
    Ocena: 7
    ale te programy maja zwyczajne rozszerzenie exe i są wyświetlanwe w małych oknach :( a ja chće na cły ekran :(
  • #10 1447587
    cyberkid
    Poziom 15  
    Posty: 137
    Pomógł: 7
    z całym szacunkiem ale jak nie wiesz co to API to moze nie bierz sie za programowanie pod okienka tylko wpierw sie dowiedz, a Twoj problem moze da sie rozwiazac poprzez funkcje ShowWindow chociaz pewien nie jestem. Reszty poszukaj w SDK
  • REKLAMA
  • #11 1447652
    MiL999
    Poziom 26  
    Posty: 1173
    Pomógł: 59
    Ocena: 75
    Ja bym powiedzial ze nie da sie tego tak prosto zrobic. Program pisany pod konsole uruchamiany jest w emulatorze DOSa i to okno ktore sie pojawia to nie okno aplikacji ale tego emulatora. W takim przypadku nie ma mozliwosci odwolania sie do tego okna.
    Narazie jedyne co mi przychodzi do glowy to uruchamianie aplikacji tak zeby okno automatycznie wlaczalo na pelnym ekranie. W windowsie jest chyba taka opcja "Uruchom zmaksymalizowane" albo jakos tak.
  • #12 1447725
    alfrednovi
    Poziom 19  
    Posty: 294
    Pomógł: 22
    Ocena: 1
    Cześć!

    MiL999 napisał:
    Ja bym powiedzial ze nie da się tego tak prosto zrobic. Program pisany pod konsole uruchamiany jest w emulatorze DOSa i to okno ktore się pojawia to nie okno aplikacji ale tego emulatora. W takim przypadku nie ma mozliwosci odwolania się do tego okna.
    Narazie jedyne co mi przychodzi do glowy to uruchamianie aplikacji tak zeby okno automatycznie wlaczalo na pelnym ekranie. W windowsie jest chyba taka opcja "Uruchom zmaksymalizowane" albo jakos tak.


    Może od początku....
    Konsola w windowsie to nie jest emulator dosa, programy konsolowe pisane w VC++ są w 100% programami windowsowymi - nie da się ich uruchomić w dosie.Konsola jest integralną częscią windowsa.
    A co do uruchamiania w pełnym oknie to najprościej stworzyć skrót do programu - mamy wtedy duże możliwości ustawienia sposobu jego uruchomienia (zmaksymalizowane, pełny ekran itp, do wyboru, do koloru).

    Pozdrawiam!
    Alfrednovi
  • #13 1448080
    MiL999
    Poziom 26  
    Posty: 1173
    Pomógł: 59
    Ocena: 75
    A no racja :) Myslalem o dosowych programach.
  • #14 1448488
    apstynent
    Poziom 22  
    Posty: 636
    Pomógł: 31
    Ocena: 5
    MiL999 napisał:
    Narazie jedyne co mi przychodzi do glowy to uruchamianie aplikacji tak zeby okno automatycznie wlaczalo na pelnym ekranie. W windowsie jest chyba taka opcja "Uruchom zmaksymalizowane" albo jakos tak.


    No i to właśnie zapisane jest we wspomnianym wcześniej pliku .pif bo Windows nie zmienia przecież pliku .exe tylko zapisuje sobie sposób w jaki ma uruchomić program w tym pliku .pif.
    Dzięki Ci za ludzkie opisanie tego o co mi chodziło :)

    alfrednovi napisał:
    A co do uruchamiania w pełnym oknie to najprościej stworzyć skrót do programu - mamy wtedy duże możliwości ustawienia sposobu jego uruchomienia (zmaksymalizowane, pełny ekran itp, do wyboru, do koloru).

    Ale jeśli skrót to w tym samym folderze co program i nie używający ścieżki bezwzględnej [np: nie d:\sratatata\bum.exe tylko bum.exe]
    no i powiem to po raz ostatni: taką funkcję skrótu pełni właśnie plik .pif
  • #15 1448532
    chrobry
    Poziom 13  
    Posty: 136
    Pomógł: 2
    Ocena: 7
    Ale mi chodziło o to czy da się to ustawić w kodzie programu przed jego skompilowaniem. NIE CHODZIŁO MI TU o rozwiązania typu naciśnij "enter" i "alt" tylko co trzeba wstukać do kodu. Czy wogóle jest taka możliwość, bo zaczynam wątpić.
  • #16 1449451
    simson2
    Poziom 12  
    Posty: 18
    Pomógł: 1
    Ocena: 1
    #include <windows.h>
    
    void FullScreenConsole()
    {
            typedef bool (WINAPI *PROCSETCONSOLEDISPLAYMODE)(HANDLE,DWORD,LPDWORD);
            typedef bool (WINAPI *PROCGETCONSOLEDISPLAYMODE)(LPDWORD);
            PROCSETCONSOLEDISPLAYMODE SetConsoleDisplayMode;
            PROCGETCONSOLEDISPLAYMODE GetConsoleDisplayMode;
            HMODULE hKernel32 = GetModuleHandle("kernel32");
            SetConsoleDisplayMode = (PROCSETCONSOLEDISPLAYMODE )GetProcAddress(hKernel32,"SetConsoleDisplayMode");
            GetConsoleDisplayMode = (PROCGETCONSOLEDISPLAYMODE)GetProcAddress(hKernel32,"GetConsoleDisplayMode");
            HANDLE hStd = GetStdHandle(STD_OUTPUT_HANDLE);
            DWORD dOldMode;
            SetConsoleDisplayMode(hStd,1,&dOldMode);
    }


    Wlasciwie nie wiem czy to u ciebie zadziala. U mnie w kazdym razie hula.
    MSDN:
    Requirements:
    Client Requires Windows XP.
    Server Requires Windows Server 2003.
    Header Declared in Wincon.h; include Windows.h.

    Jakby coś to pisz.
  • Pomocny post
    #17 1469073
    electric00
    Poziom 12  
    Posty: 183
    Pomógł: 2
    Ocena: 4
    API -> to sąbiblioteki systemowe odpowiedzialne m.in. za wyświetlanie okienek komunikatów itp...itd...chodzi tutaj o programowanie pod systemem operacyjnym a nie pod konsolą>>>:)

Podsumowanie tematu

LABEL_AI_GENERATED
Dyskusja dotyczy sposobu ustawienia pełnoekranowego trybu konsoli w programie napisanym w C++ w środowisku Microsoft Visual C++. Poruszono kwestie techniczne związane z tym, że programy konsolowe w Windows nie są emulatorami DOS, a konsola jest integralną częścią systemu Windows. Wskazano, że nie ma prostego, uniwersalnego sposobu na wymuszenie pełnoekranowego trybu konsoli z poziomu kodu programu, gdyż okno konsoli jest zarządzane przez system operacyjny. Zaproponowano kilka podejść: użycie funkcji Windows API, takich jak ShowWindow do zmiany rozmiaru okna, pobranie uchwytu okna i manipulację jego rozmiarem, a także wykorzystanie funkcji SetConsoleDisplayMode dostępnej w Windows API, która może przełączyć konsolę w tryb pełnoekranowy. Podkreślono, że ustawienia uruchamiania programu (np. skróty z opcją "uruchom zmaksymalizowane") mogą być prostszym rozwiązaniem. Wspomniano także o plikach .pif, które w starszych wersjach Windows przechowywały ustawienia uruchamiania programów DOS, ale nie są one rozwiązaniem dla nowoczesnych aplikacji konsolowych w Windows. Autor pytania poszukiwał konkretnego kodu do wpisania w programie, aby osiągnąć efekt pełnoekranowego okna konsoli, jednak większość odpowiedzi wskazywała na ograniczenia i konieczność użycia Windows API lub ustawień systemowych.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA