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). |
|
DDD |
» 2010-07-28 20:06:02 Spróbuj tego : 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.;] |
|
021995 |
» 2010-07-28 21:05:00 możesz użyć symulacji klawiszy alt + enter 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 #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() #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 ); } |
|
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" |
|
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. |
|
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. |
|
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? |
|
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. |
|
« 1 » 2 |