Il modo più semplice di emettere un messaggio per l'utente
è attraverso la prima API che vedremo, MessageBox:
Il tipo HWND
, "handle di window", è un "tipo opaco" usato da
Windows per permettere al nostro programma di identificare le
finestre in gioco; di questi tipi HANDLE
, ovvero "opachi", ne
esistono tanti nelle API di Windows. Spesso, dove è prevista
una handle, si può passare zero per dire "nulla/nessuno/come
da default"; qui, in particolare, possiamo passare zero come
primo argomento e non preoccuparcene oltre per ora.
Handle, alla lettera, significa "maniglia"; come molti altri termini tecnici, però, è più normale lasciarlo, anche in un testo italiano, nell'originale inglese -- pensate a "stress", "standard", "bar", "sport", e tanti altri termini inglesi ormai entrati nell'uso comune -- ci andreste, alla "Sbarra Diporto", invece che al "Bar Sport"?-)
Il "tipo opaco" è un comune idioma C, usato anche nella
libreria C standard (si pensi ad esempio a FILE*
): un
tipo "dentro" al quale non si guarda (per cui "opaco"),
bensì ci si limita a passarlo a "funzioni di sistema" che
sanno cosa farci. Tutti i tipi di Windows i cui nomi (come
macro, in maiuscolo) iniziano con H ("handle") sono "tipi
opachi" in questo preciso senso.
LPCTSTR
, almeno per ora (senza #define UNICODE
...) è
const char*
, cioè: una stringa standard C terminata da 0,
tale che la funzione che la riceve come argomento "si impegna"
ad usarla solo "in lettura", cioè senza modificarla.
MessageBox
ha due argomenti-stringa in input: lpText
è
il messaggio che la finestra conterrà, mentre lpCaption
sarà il suo titolo.
uType
, infine (di tipo UINT
, cioè in pratica unsigned
int
), è l'argomento che determina (come "maschera di bit") il tipo di
finestra di messaggio da mostrare. Usando, come uType
, la
macro MB_OK
, avremo la più semplice delle message box:
senza icone, e con l'unico bottone di "OK".
Ecco dunque il nostro programma "Hello world", per intero:
MessageBox
ha anche un valore di ritorno, che ci interessa
nei casi in cui la finestra mostrata ha diverse combinazioni
di bottoni (codificate dal campo uType
). Ad esempio, se noi
passiamo come ultimo parametro MB_YESNO
, la finestra
avrà i due bottoni "Yes" e "No" ("Si" e "No" in italiano); e la
funzione MessageBox
tornerà IDYES
se l'utente clicca Yes,
IDNO
se l'utente clicca No. Questo può servire per fare
operazioni di input molto rudimentali e immediate. In questi
casi, il testo del messaggio sarà una "domanda", ed è
abituale usare anche un'icona adeguata; ciò si ottiene
usando per uType
il
valore MB_YESNO|MB_ICONQUESTION
.
Capitolo 2: disimparare ancora
Capitolo 4: dialoghi
Elenco dei capitoli