Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Dimensione e tipo di Font nella Console
Forum - C/C++ - Dimensione e tipo di Font nella Console - Pagina 2

Pagine: [ 1 2 3 4 ] Precedente | Prossimo
Avatar
Oneiros (Normal User)
Newbie


Messaggi: 15
Iscritto: 05/06/2010

Segnala al moderatore
Postato alle 17:03
Sabato, 05/06/2010
Testo quotato

Allora basta semplicemente una linea, ovvero

HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);



Conosco la funzione GetStdHandle, l'ho utilizzata per modificare il colore del testo e per spostare il cursore nella console. In altre funzioni però non funziona.

Ad esempio, questa è la funzione (funzionante) che ritorna la larghezza della finestra:

Codice sorgente - presumibilmente C/C++

  1. unsigned int getConsoleWidth() {
  2.     RECT r;
  3.     GetWindowRect(getConsoleHwnd(), &r);
  4.     return (r.right - r.left);
  5. }



se la scrivo invece in questo modo

Codice sorgente - presumibilmente C/C++

  1. unsigned int getConsoleWidth() {
  2.     RECT r;
  3.     GetWindowRect(GetStdHandle(STD_OUTPUT_HANDLE), &r);
  4.     return (r.right - r.left);
  5. }



il risultato non è quello che mi aspetto (ho appena provato per esserne sicuro).

E' per questo motivo che ho avuto necessità di definirmi la funzione getConsoleHwnd

Ultima modifica effettuata da Oneiros il 05/06/2010 alle 17:05
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 17:10
Sabato, 05/06/2010
Perchè tu stai mischiando le due modalità.

L'handle di una console si ottiene per essere usata con le API di gestione della console.

La GetWindowRect invece, si riferisce alle Window (che è nel suo nome infatti), ovvero alle finestre create con la programmazione GUI (con la CreateWindow). L'handle, non ha niente a che fare con quello della console.

E la "larghezza" ottenuta, non ti serve a molto per programmare con una console, anzi, non ti serve proprio.

Insomma, un bel po' di confusione.


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
Oneiros (Normal User)
Newbie


Messaggi: 15
Iscritto: 05/06/2010

Segnala al moderatore
Postato alle 21:12
Sabato, 05/06/2010
A me serve la posizione della finestra per poterla poi centrare all'interno dello schermo... quindi non credo di aver utilizzato la funzione sbagliata...
In altre parole, a me serve l'handle della Window della mia applicazione :)

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 21:52
Sabato, 05/06/2010
Allora ti basta una

GetConsoleWindow()


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
Oneiros (Normal User)
Newbie


Messaggi: 15
Iscritto: 05/06/2010

Segnala al moderatore
Postato alle 10:04
Lunedì, 07/06/2010
Testo quotato

Postato originariamente da nessuno:

Allora ti basta una

GetConsoleWindow()



Non mi trova il comando :(
Sto utilizzando Netbeans + Mingw

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 10:10
Lunedì, 07/06/2010
Testo quotato

Postato originariamente da Oneiros:

Testo quotato

Postato originariamente da nessuno:

Allora ti basta una

GetConsoleWindow()



Non mi trova il comando :(
Sto utilizzando Netbeans + Mingw



Comando? Quella è una funzione ... e che vuol dire "non mi trova"? Hai un errore specifico?

In ogni caso, se scrivi

#include <windows.h>

e poi

HWND h = GetConsoleWindow();

non dovresti avere problemi.

Ho compilato con Visual C++ 2008.


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
Oneiros (Normal User)
Newbie


Messaggi: 15
Iscritto: 05/06/2010

Segnala al moderatore
Postato alle 10:17
Lunedì, 07/06/2010
perdona la mia terminologia, certo, intendevo funzione XD

Comunque netbeans me lo sottolinea come errore e il compilatore dice:
Codice sorgente - presumibilmente C/C++

  1. undefined reference to `GetConsoleWindow' collect2: ld returned 1 exit status



Ho importato ovviamente l'header windows.h...

EDIT:
qui (http://msdn.microsoft.com/en-us/library/ms683175(VS.85).aspx) mi dice che ho bisogno della libreria Kernel32.lib e del DLL Kernel32.dll... come potrei verificare se ce li ho?

Ultima modifica effettuata da Oneiros il 07/06/2010 alle 10:22
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 10:54
Lunedì, 07/06/2010
Prova a scrivere, prima dell'include di windows.h, la riga

#define _WIN32_WINNT 0x0500


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Pagine: [ 1 2 3 4 ] Precedente | Prossimo