Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 24
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    83

    Fullscreen mode

    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>

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    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);
    }

  3. #3
    [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.

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    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.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  5. #5
    Altra possibilità... usare qualche sporca API che simuli la pressione di ALT+INVIO...
    Amaro C++, il gusto pieno dell'undefined behavior.

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296

    Moderazione

    Originariamente inviato da pgnvni
    Ho un programma in C che gira da console!
    Il linguaggio va indicato anche nel titolo, come da Regolamento.

    Questo l'ho corretto io.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da MItaly
    Altra possibilità... usare qualche sporca API che simuli la pressione di ALT+INVIO...
    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 scrivere

    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);
    P.S. Per il casting non ci sono particolari motivazioni ...

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    83
    grazie per il codice oregon quello di sopra non mi funzionava mentre questo è andato tutto liscio!
    #include <pgnvni.h>

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da pgnvni
    grazie per il codice oregon quello di sopra non mi funzionava mentre questo è andato tutto liscio!
    Ok ... ma anche il primo funzionava ...

  10. #10
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565
    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);
    }
    Portresti spiegare il codice?
    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

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.