Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Jak zmaksymalizować konsolę Windows?

Ostatnio zmodyfikowano 2010-07-30 15:26
Autor Wiadomość
pekfos
Temat założony przez niniejszego użytkownika
Jak zmaksymalizować konsolę Windows?
» 2010-07-28 19:45:13
Chcę móc zmieniać, na poziomie inicializacji mojej biblioteki rozmiar konsoli.
mam już na to sposób ale przy powiększaniu konsoli zachowuje ona dawny rozmiar,
ale dodane zostają paski przesuwu a po zmaksymalizowaniu konsoli okno ma właściwe
wymiary.
jak (z poziomu kodu) zmaksymalizować konsolę? (mam jej uchwyt, używam windows.h).
P-20253
DDD
» 2010-07-28 20:06:02
Spróbuj tego :
C/C++
HANDLE okno = GetStdHandle( STD_OUTPUT_HANDLE );

COORD size;

size.X = 80;
size.Y = 25;

SetConsoleScreenBufferSize( okno, size );
Ale nie wiem czy to będzie działać na 100% ;] Tą funkcje znalazłem u wujka Google.;]
P-20254
021995
» 2010-07-28 21:05:00
możesz użyć symulacji klawiszy alt + enter

C/C++
keybd_event( VK_MENU, 0x38, 0, 0 );
keybd_event( VK_RETURN, 0x1c, 0, 0 );
keybd_event( VK_RETURN, 0x1c, KEYEVENTF_KEYUP, 0 );
keybd_event( VK_MENU, 0x38, KEYEVENTF_KEYUP, 0 );
tu mam drugi kod konsola automatycznie się włącza full screen

C/C++
#include <windows.h>
#include <iostream>
BOOL NT_SetConsoleDisplayMode( HANDLE hOutputHandle, DWORD dwNewMode )
{
    typedef BOOL( WINAPI * SCDMProc_t )( HANDLE, DWORD, LPDWORD );
    SCDMProc_t SetConsoleDisplayMode;
    HMODULE hKernel32;
    BOOL bFreeLib = FALSE, ret;
    const char KERNEL32_NAME[] = "kernel32.dll";
    hKernel32 = GetModuleHandleA( KERNEL32_NAME );
    if( hKernel32 == NULL )
    {
        hKernel32 = LoadLibraryA( KERNEL32_NAME );
        if( hKernel32 == NULL )
             return FALSE;
       
        bFreeLib = true;
    }
    SetConsoleDisplayMode =
    ( SCDMProc_t ) GetProcAddress( hKernel32, "SetConsoleDisplayMode" );
    if( SetConsoleDisplayMode == NULL )
    {
        SetLastError( ERROR_CALL_NOT_IMPLEMENTED );
        ret = FALSE;
    }
    else
    {
        DWORD dummy;
        ret = SetConsoleDisplayMode( hOutputHandle, dwNewMode, & dummy );
    }
    if( bFreeLib )
         FreeLibrary( hKernel32 );
   
    return ret;
}
int main( void )
{
    NT_SetConsoleDisplayMode( GetStdHandle( STD_OUTPUT_HANDLE ), 1 );
    std::cin.get();
    return 0;
}
tu masz kod trochę krótszy bez wywołania w głównej funkcji int main()

C/C++
#include <windows.h>

void FullScr() {
   
    typedef BOOL WINAPI( * SetConsoleDisplayModeT )( HANDLE, DWORD, DWORD * );
   
   
    SetConsoleDisplayModeT SetConsoleDisplayMode;
   
    HINSTANCE hLib = LoadLibrary( "KERNEL32.DLL" );
   
    SetConsoleDisplayMode =( SetConsoleDisplayModeT )
    GetProcAddress( hLib, "SetConsoleDisplayMode" );
   
    DWORD oldmode;
   
    SetConsoleDisplayMode( GetStdHandle( STD_OUTPUT_HANDLE )
    , 1, & oldmode );
   
    FreeLibrary( hLib );
   
}
P-20261
pekfos
Temat założony przez niniejszego użytkownika
» 2010-07-29 16:28:25
Domdziu przeczytaj mój post jeszcze raz bo piszesz mi to co określiłem że już mam.

Według MSDN to SetConsoleDisplayMode wygląda tak:
BOOL WINAPI SetConsoleDisplayMode( HANDLE, DWORD, PCOORD )
a nie
BOOL WINAPI SetConsoleDisplayMode( HANDLE, DWORD, DWORD * )

Czy twój kod jest zatem poprawny? (tak i tak nie działa)

testowałem symulację klawiszy ale nie daje to żadnego skutku poza komunikatem "ten system nie obsługuje trybu pełnoekranowego"
P-20273
VND
» 2010-07-29 17:45:33
Oba kody jak najbardziej działają... ale na XP, Vista nie obsługuje pełnoekranowego DOSa. Podobnie zapewne jest z Win7.
P-20276
Elaine
» 2010-07-29 19:23:06
DOSa? Windowsowa konsola nie ma nic wspólnego z DOSem. Poza tym, system nie ma nic do tego, to sterowniki karty graficznej nie obsługują, nie system jako taki.
P-20284
VND
» 2010-07-29 21:48:17
DOS - ale mi się wyrwało, oczywiście miałem na myśli konsolę, to chyba oczywiste było. Prawda to jest wina sterowników dla Visty co nie zmienia faktu, że nadal nie działa. Na upartego można zainstalować te dla XP, ale czy warto żeby mieć tylko konsole na fullscreen?
P-20288
DejaVu
» 2010-07-30 02:46:37
Myślę, że nie ma sensu na siłę wymuszać pełnoekranowej konsoli. Konsolę powinieneś używać do tworzenia aplikacji przetwarzających dane, a nie do tworzenia aplikacji, w której użytkownik ma na czymś pracować. Zaręczam Ci, że prędzej ktoś będzie szukał analogicznej aplikacji zbudowanej na WinAPI czy czymkolwiek podobnym np. QT, aniżeli katował się użytkowaniem konsoli. Fullscreen ma również tę wadę, że nie widać paska startu, a wielu użytkowników jest do niego przywiązanych poprzez komunikatory pracujące w tle itp. Przemyśl więc dobrze czy na pewno cel uświęca środki.
P-20293
« 1 » 2
  Strona 1 z 2 Następna strona