|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jul 2005
Città: San Marino
Messaggi: 309
|
[API windows] Formattazione del testo e handle font
Quale api occorre utilizzare per formattare del testo, per renderlo italic o in grassetto per esempio?
Mentre per impostare l'handle di un font dandogli come parametro la locazione del font stesso? Grazie
__________________
|
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
- CreateFont/CreateFontIndirect per creare un handle HFONT. - SelectObject per selezionare un HFONT in un HDC. - TextOut/ExtTextOut/TabbedTextOut/DrawText/DrawTextEx per disegnare il testo sul HDC. Poi naturalmente ci sono tutta una serie di altre funzioni per ottenere informazioni sui font e sulla loro metriche.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Nov 2003
Messaggi: 980
|
Di solito io faccio così:
Codice:
//Un tuo font HFONT tuoFont = ...; //oppure, il font di default delle finestre HFONT tuoFont = (HFONT)GetStockObject(DEFAULT_GUI_FONT); //Troviamo le caratteristiche di questo font LOGFONT lf; GetObject(tuoFont, sizeof(LOGFONT), &lf); //Trasformiamo le caratteristiche del font attuale: //italic e underlined lf.lfItalic = TRUE; lf.lfUnderline = TRUE; //Creiamo il font vero e proprio HFONT newFont = CreateFontIndirect(&lf); Quote:
Ultima modifica di kk3z : 23-01-2006 alle 12:57. |
|
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Jul 2005
Città: San Marino
Messaggi: 309
|
Quote:
__________________
|
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jul 2005
Città: San Marino
Messaggi: 309
|
Un'altra domanda; ma il messaggio WM_LBUTTONDBLCLK viene inviato dal sistema al doppio click o è un messaggio che deve essere inviato dal nostro codice per simularlo?
__________________
|
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
C'è da tenere presente inoltre che: - Solo le finestre che hanno lo stile (della classe) CS_DBLCLKS ricevono il WM_LBUTTONDBLCLK. - La sequenze di invio dei messaggi è: 1) WM_LBUTTONDOWN, 2) WM_LBUTTONUP, 3) WM_LBUTTONDBLCLK e 4) WM_LBUTTONUP
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Jul 2005
Città: San Marino
Messaggi: 309
|
Quote:
Cmq possibile che se invio questo messaggio ad un'elemento (ad esempio uno STATIC con lo stile SS_NOTIFY), viene generata una simulazione della pressione? Perchè successivamente mi arriva la notifica di doppio click Non ho poi ben capito a che servono le macro che si possono inserire nel wParam del messaggio WM_LBUTTONDBLCLK
__________________
|
|
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Tutte le funzioni che hanno a che fare con un handle di font, presuppongono che il font sia già installato/registrato nel sistema. Esistono però le funzioni: - AddFontResource/RemoveFontResource e - AddFontResourceEx/RemoveFontResourceEx (da Win2000 in poi) per installare/rimuovere un font. Se hai bisogno di fare cose "particolari" con i font, puoi usare librerie esterne come la libreria FreeType (www.freetype.org).
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Jul 2005
Città: San Marino
Messaggi: 309
|
Quote:
Grazie, mi serviva soprattutto per sfizio (potrebbe tornarmi utile)
__________________
|
|
|
|
|
|
|
#11 | ||
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
"Sends the parent window STN_CLICKED, STN_DBLCLK, STN_DISABLE, and STN_ENABLE notification messages when the user clicks or double-clicks the control". Quindi il parente del controllo static riceve la notifica STN_DBLCLK (attraverso WM_COMMAND) se qualcuno fa doppio click sul controllo static. Se vuoi inviare tu di proposito il WM_LBUTTONDBLCLK al controllo, dovrebbe funzionare (non ho mai provato comunque Quote:
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
||
|
|
|
|
|
#12 | |
|
Senior Member
Iscritto dal: Jul 2005
Città: San Marino
Messaggi: 309
|
Quote:
__________________
|
|
|
|
|
|
|
#13 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Codice:
if (wParam & MK_MBUTTON)
{
/* Pulsante centrale mouse premuto */
}
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#14 | |
|
Senior Member
Iscritto dal: Jul 2005
Città: San Marino
Messaggi: 309
|
Quote:
Ma in lParam troverò le coordinate del cursore, ma in riferimento a quale elemento? E poi perchè se metto un'elemento static con stile SS_NOTIFY e se vado a cliccarci sopra il messaggio non viene inviato, cosa che invece succese non non aggiungo lo stile? Ancora grazie
__________________
Ultima modifica di 17Qwerty71 : 23-01-2006 alle 18:35. |
|
|
|
|
|
|
#15 | ||
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Puoi usare questo codice per "spacchettare" i dati: Codice:
xPos = GET_X_LPARAM(lParam); yPos = GET_Y_LPARAM(lParam); Quote:
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
||
|
|
|
|
|
#16 | |
|
Senior Member
Iscritto dal: Jul 2005
Città: San Marino
Messaggi: 309
|
Quote:
__________________
|
|
|
|
|
|
|
#17 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Quando fai un doppio click su un controllo, al controllo stesso viene mandato il messaggio WM_LBUTTONDBLCLK, con le coordinate del punto in lParam.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#18 | |
|
Senior Member
Iscritto dal: Jul 2005
Città: San Marino
Messaggi: 309
|
Quote:
Grazie
__________________
|
|
|
|
|
|
|
#19 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#20 |
|
Senior Member
Iscritto dal: Jul 2005
Città: San Marino
Messaggi: 309
|
ok, capito
__________________
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 02:43.


















