Ho fatto qualche ricerca ma non ve n'è la minima traccia.
Non mi è strettamente necessaria, ma era una curiosità...
Vorrei massimizzare la finestra del prompt dei comandi di un programma C++. CHe ne dite?
Ho fatto qualche ricerca ma non ve n'è la minima traccia.
Non mi è strettamente necessaria, ma era una curiosità...
Vorrei massimizzare la finestra del prompt dei comandi di un programma C++. CHe ne dite?
Sicuramente non c'è una via multipiattaforma, forse usando qualche trucco strano ce la puoi fare su Windows, molto difficilmente su Linux (anche trovassi un trucco strano che va con un emulatore di terminale, molto probabilmente non andrebbe con gli altri).
Tieni conto comunque che è "concettualmente" sbagliata come azione da parte di una applicazione console, che di base dovrebbe starsene confinata nella console ad essa assegnata e non cercare di fare cose strane all'esterno. Se iniziano a servire questo genere di finezze, forse è il caso di passare ad un'applicazione GUI.![]()
Amaro C++, il gusto pieno dell'undefined behavior.
Come ho detto era solo una curiosità... Non me ne faccio assolutamente nulla...
Concordio in pieno..Originariamente inviato da MItaly
Sicuramente non c'è una via multipiattaforma, forse usando qualche trucco strano ce la puoi fare su Windows, molto difficilmente su Linux (anche trovassi un trucco strano che va con un emulatore di terminale, molto probabilmente non andrebbe con gli altri).
Tieni conto comunque che è "concettualmente" sbagliata come azione da parte di una applicazione console, che di base dovrebbe starsene confinata nella console ad essa assegnata e non cercare di fare cose strane all'esterno. Se iniziano a servire questo genere di finezze, forse è il caso di passare ad un'applicazione GUI.![]()
In realtà per Windows esistono dei trucchetti più o meno efficaci:
1. simulare la pressione di ALT+ENTER
tuttavia non è supportato in Windows Vista.codice: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);
2. uso dell'API SetConsoleDisplayMode
Se sei veramente interessato ti posso scrivere anche il codice del 2° esempio.
Ciao![]()
Se non ti crea disturbo va bene... Grazie!
Io so che con le versioni dei common control 6.0 (windows vista e windows 7), windows non supporta la modalità schermo intero per il prompt...
Hai ragione, come ho già specificato nel mio precedente post..Originariamente inviato da kirakira93
Io so che con le versioni dei common control 6.0 (windows vista e windows 7), windows non supporta la modalità schermo intero per il prompt...
Per rispondere alla richiesta di m4l13n scrivo il codice che sfrutta la funzione API SetConsoleDisplayMode :
codice: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) { ret = FALSE; } else { ret = SetConsoleDisplayMode(hOutputHandle, dwNewMode, &tmp); } if (bFreeLib) FreeLibrary(hKernel32); return ret; } //e ovviamente si usa così: NT_SetConsoleDisplayMode( GetStdHandle( STD_OUTPUT_HANDLE ), 1 );
Ciao![]()
Un po' complicatuccio per la mia modesta conoscenza ma grazie comunque!
L'ho provato ma da errore alla linea 24 (le ho contate a mano potrei sbagliarmi).
Questa in pratica:
Identificatore non dichiarato: tmpcodice:ret = SetConsoleDisplayMode(hOutputHandle, dwNewMode, &tmp);
Come puoi vedere dalla documentazione MSDN (http://msdn.microsoft.com/en-us/libr...28(VS.85).aspx), il 3° argomento della funzione è optional per cui o lo elimini dalla funzione (cosa che io non ho fatto) oppure lo utilizzi.
Sempre guardando la documentazione ti accorgi che tale argomento è un puntatore ad una struttura COORD, che può essere così utilizzata:
Purtroppo non ho l'IDE in questo PC e quindi rispondo "a memoria"..codice:COORD coord; coord.X = 0; coord.Y = 20;
Ciao![]()