Ho un programma in C che gira da console!
Voglio fare in modo che quando lo avvio diventa a schermo pieno(simile a quando si preme ALT + INVIO)
come si fa??? C'è qualche funzione in C???
un grazie anticipato
Ho un programma in C che gira da console!
Voglio fare in modo che quando lo avvio diventa a schermo pieno(simile a quando si preme ALT + INVIO)
come si fa??? C'è qualche funzione in C???
un grazie anticipato
#include <pgnvni.h>
Ecco un modo un po' articolato ...
codice:#include <windows.h> #define CONSOLE_FULLSCREEN_MODE 1 typedef BOOL (WINAPI *SETCONSOLEDISPLAYMODE) (HANDLE, DWORD, PCOORD); SETCONSOLEDISPLAYMODE SetConsoleDisplayMode; int main(void) { HMODULE kernel32 = GetModuleHandle("kernel32.dll"); SetConsoleDisplayMode = reinterpret_cast<SETCONSOLEDISPLAYMODE>(GetProcAddress(kernel32,"SetConsoleDisplayMode")); HANDLE hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE); COORD cBDim; SetConsoleDisplayMode(hConsoleOutput, CONSOLE_FULLSCREEN_MODE, &cBDim); // ... return(0); }
[OT]Io con la GetProcAddress ho sempre usato un normale cast... che vantaggi ci sono ad usare un reinterpret_cast in questa occasione?[/OT]
Amaro C++, il gusto pieno dell'undefined behavior.
Da notare alcune cose: intanto SetConsoleDisplayMode è supportata solo da Windows XP in poi (è documentato su MSDN).
Inoltre bisogna vedere se nell'SDK (tra gli include) è dichiarata o meno. Sul mio Platform SDK (che non è super-aggiornato ma neanche vecchissimo) non c'è.
Deduco che al momento l'unico modo possibile di utilizzo è tramote il caricamento dinamico.
Altra possibilità... usare qualche sporca API che simuli la pressione di ALT+INVIO...
Amaro C++, il gusto pieno dell'undefined behavior.
Il linguaggio va indicato anche nel titolo, come da Regolamento.Originariamente inviato da pgnvni
Ho un programma in C che gira da console!
Questo l'ho corretto io.
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
Certo ... ovviamente c'e' sempre la keybd_event ... ma era per usare le apposite funzionalita' di gestione Console ... (che sì, sono per XP ...). Si può sempre scrivereOriginariamente inviato da MItaly
Altra possibilità... usare qualche sporca API che simuli la pressione di ALT+INVIO...
P.S. Per il casting non ci sono particolari motivazioni ...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);
grazie per il codice oregon quello di sopra non mi funzionava mentre questo è andato tutto liscio!
#include <pgnvni.h>
Ok ... ma anche il primo funzionava ...Originariamente inviato da pgnvni
grazie per il codice oregon quello di sopra non mi funzionava mentre questo è andato tutto liscio!
Portresti spiegare il codice?Originariamente inviato da oregon
Ecco un modo un po' articolato ...
codice:#include <windows.h> #define CONSOLE_FULLSCREEN_MODE 1 typedef BOOL (WINAPI *SETCONSOLEDISPLAYMODE) (HANDLE, DWORD, PCOORD); SETCONSOLEDISPLAYMODE SetConsoleDisplayMode; int main(void) { HMODULE kernel32 = GetModuleHandle("kernel32.dll"); SetConsoleDisplayMode = reinterpret_cast<SETCONSOLEDISPLAYMODE>(GetProcAddress(kernel32,"SetConsoleDisplayMode")); HANDLE hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE); COORD cBDim; SetConsoleDisplayMode(hConsoleOutput, CONSOLE_FULLSCREEN_MODE, &cBDim); // ... return(0); }
Dunque prendi la libreria con GetModuleHandle (perchè questa funzione e non LoadLibrary? kernel32 è già caricato?)
typedef BOOL (WINAPI *SETCONSOLEDISPLAYMODE) (HANDLE, DWORD, PCOORD);
Non riesco a capire, è un typedef di un puntatore a funzione ma come funzionano questi ultimi?
Cosa è getstdhandle?
"Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)
"Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)
http://xvincentx.netsons.org/programBlog