Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra integra un sensore da 1 pollice 8K, ottiche Leica e triplo chip IA. Tra schermo OLED rimovibile, workflow I-Log a 10 bit e stabilizzazione a tre assi, analizziamo le doti tecniche di una gimbal camera pensata per i professionisti
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
DJI Romo 2: tante novità lo rendono un robot completo
DJI Romo 2: tante novità lo rendono un robot completo
Romo 2 è la seconda generazione di robot lavapavimenti di DJI, un modello che si caratterizza per la precisione nel sistema di navigazione e per il funzionamento particolarmente silenzioso. Con le modifiche introdotte in questa seconda versione, e un posizionamento di prezzo più allineato alla concorrenza, rappresenta una valida alternativa sul mercato delle soluzioni di pulizia domestica
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 22-01-2006, 18:36   #1
17Qwerty71
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
__________________
17Qwerty71 è offline   Rispondi citando il messaggio o parte di esso
Old 23-01-2006, 08:45   #2
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da 17Qwerty71
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?
Ciao, se sei tu che devi scrivere direttamente il testo su un HDC, le funzioni da usare sono:

- 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, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 23-01-2006, 11:54   #3
kk3z
Senior Member
 
L'Avatar di kk3z
 
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);
Così hai tutte le caratteristiche del font che stai usando attualmente + corsivo e sottilineato.

Quote:
Originariamente inviato da 17Qwerty17
Mentre per impostare l'handle di un font dandogli come parametro la locazione del font stesso?
Spiegati meglio, non ho capito na mazz

Ultima modifica di kk3z : 23-01-2006 alle 11:57.
kk3z è offline   Rispondi citando il messaggio o parte di esso
Old 23-01-2006, 12:02   #4
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da 17Qwerty71
Mentre per impostare l'handle di un font dandogli come parametro la locazione del font stesso?
Forse intendi dire come ottenere un handle di font partendo dal nome di un file true-type (o altro tipo) come ad esempio "C:\Documenti\tahoma.ttf"???
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 23-01-2006, 12:21   #5
17Qwerty71
Senior Member
 
Iscritto dal: Jul 2005
Città: San Marino
Messaggi: 309
Quote:
Originariamente inviato da andbin
Forse intendi dire come ottenere un handle di font partendo dal nome di un file true-type (o altro tipo) come ad esempio "C:\Documenti\tahoma.ttf"???
esatto
__________________
17Qwerty71 è offline   Rispondi citando il messaggio o parte di esso
Old 23-01-2006, 15:29   #6
17Qwerty71
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?
__________________
17Qwerty71 è offline   Rispondi citando il messaggio o parte di esso
Old 23-01-2006, 16:16   #7
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da 17Qwerty71
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?
Sì, viene inviato dal sistema.

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, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 23-01-2006, 16:21   #8
17Qwerty71
Senior Member
 
Iscritto dal: Jul 2005
Città: San Marino
Messaggi: 309
Quote:
Originariamente inviato da andbin
Sì, viene inviato dal sistema.

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
Grazie, perchè cercando un po' in giro trovavo diverse interpretazioni.
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
__________________
17Qwerty71 è offline   Rispondi citando il messaggio o parte di esso
Old 23-01-2006, 16:28   #9
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da 17Qwerty71
esatto
Non c'è una funzione, tra le API Win32, per ottenere direttamente un handle di font partendo da un nome di file di font true-type (o simile).
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, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 23-01-2006, 16:31   #10
17Qwerty71
Senior Member
 
Iscritto dal: Jul 2005
Città: San Marino
Messaggi: 309
Quote:
Originariamente inviato da andbin
Non c'è una funzione, tra le API Win32, per ottenere direttamente un handle di font partendo da un nome di file di font true-type (o simile).
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).

Grazie, mi serviva soprattutto per sfizio (potrebbe tornarmi utile)
__________________
17Qwerty71 è offline   Rispondi citando il messaggio o parte di esso
Old 23-01-2006, 16:39   #11
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da 17Qwerty71
Grazie, perchè cercando un po' in giro trovavo diverse interpretazioni.
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
Secondo la documentazione su MSDN, per lo stile SS_NOTIFY dice:
"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:
Originariamente inviato da 17Qwerty71
Non ho poi ben capito a che servono le macro che si possono inserire nel wParam del messaggio WM_LBUTTONDBLCLK
Il wParam per WM_LBUTTONDBLCLK è una semplice combinazione di flag come: MK_CONTROL, MK_LBUTTON, MK_MBUTTON, ecc...
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 23-01-2006, 16:42   #12
17Qwerty71
Senior Member
 
Iscritto dal: Jul 2005
Città: San Marino
Messaggi: 309
Quote:
Originariamente inviato da andbin
Secondo la documentazione su MSDN, per lo stile SS_NOTIFY dice:
"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 ).

Il wParam per WM_LBUTTONDBLCLK è una semplice combinazione di flag come: MK_CONTROL, MK_LBUTTON, MK_MBUTTON, ecc...
Nel senso che se mi arriva la macro MK_MBUTTON in wParam significa che mentre è stato fatto il doppio click si teneva premuto anche il tasto centrale del muose?
__________________
17Qwerty71 è offline   Rispondi citando il messaggio o parte di esso
Old 23-01-2006, 16:47   #13
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da 17Qwerty71
Nel senso che se mi arriva la macro MK_MBUTTON in wParam significa che mentre è stato fatto il doppio click si teneva premuto anche il tasto centrale del muose?
Esatto:
Codice:
if (wParam & MK_MBUTTON)
{
    /* Pulsante centrale mouse premuto */
}
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 23-01-2006, 17:31   #14
17Qwerty71
Senior Member
 
Iscritto dal: Jul 2005
Città: San Marino
Messaggi: 309
Quote:
Originariamente inviato da andbin
Esatto:
Codice:
if (wParam & MK_MBUTTON)
{
    /* Pulsante centrale mouse premuto */
}
Non ho ben chiara un'altra cosa
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 17:35.
17Qwerty71 è offline   Rispondi citando il messaggio o parte di esso
Old 23-01-2006, 18:13   #15
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da 17Qwerty71
Non ho ben chiara un'altra cosa
Ma in lParam troverò le coordinate del cursore, ma in riferimento a quale elemento?
lParam contiene i valori x/y "impacchettati" nella parte bassa/alta di lParam.
Puoi usare questo codice per "spacchettare" i dati:
Codice:
xPos = GET_X_LPARAM(lParam);
yPos = GET_Y_LPARAM(lParam);
La posizione che ti viene indicata è quella del punto in cui si è fatto il click/doppio click ed è relativa all'angolo in alto/sinistra dell'area client del controllo su cui si è generato l'evento.

Quote:
Originariamente inviato da 17Qwerty71
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?
Non ho capito bene cosa vuoi dire ... faccio poi delle prove.
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 23-01-2006, 18:19   #16
17Qwerty71
Senior Member
 
Iscritto dal: Jul 2005
Città: San Marino
Messaggi: 309
Quote:
Originariamente inviato da andbin
lParam contiene i valori x/y "impacchettati" nella parte bassa/alta di lParam.
Puoi usare questo codice per "spacchettare" i dati:
Codice:
xPos = GET_X_LPARAM(lParam);
yPos = GET_Y_LPARAM(lParam);
La posizione che ti viene indicata è quella del punto in cui si è fatto il click/doppio click ed è relativa all'angolo in alto/sinistra dell'area client del controllo su cui si è generato l'evento.


Non ho capito bene cosa vuoi dire ... faccio poi delle prove.
Ma il controllo da cui prende le coordinate come fa a riconoscerlo?
__________________
17Qwerty71 è offline   Rispondi citando il messaggio o parte di esso
Old 23-01-2006, 18:26   #17
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da 17Qwerty71
Ma il controllo da cui prende le coordinate come fa a riconoscerlo?
Scusa ... non ho capito cosa non hai capito.
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, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 23-01-2006, 18:28   #18
17Qwerty71
Senior Member
 
Iscritto dal: Jul 2005
Città: San Marino
Messaggi: 309
Quote:
Originariamente inviato da andbin
Scusa ... non ho capito cosa non hai capito.
Quando fai un doppio click su un controllo, al controllo stesso viene mandato il messaggio WM_LBUTTONDBLCLK, con le coordinate del punto in lParam.
Ah, quindi lui prende come controllo per il calcolo delle coordinate quello sul quale ci clicchi?
Grazie
__________________
17Qwerty71 è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2006, 08:24   #19
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da 17Qwerty71
Ah, quindi lui prende come controllo per il calcolo delle coordinate quello sul quale ci clicchi?
Sì, l'ho già specificato qualche post sopra ma lo ripeto: le coordinate del punto sono relative all'angolo in alto/sinistra dell'area client del controllo.
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2006, 10:29   #20
17Qwerty71
Senior Member
 
Iscritto dal: Jul 2005
Città: San Marino
Messaggi: 309
ok, capito
__________________
17Qwerty71 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema Insta360 Luna Ultra: la potenza del sensore da 1...
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
SpaceX ha confermato che Flight 14 sar&a...
Googlebook pronto al debutto: Google apr...
Guida all'acquisto: quale lavapavimenti ...
Google Maps su Android Auto introduce fi...
AMD Ryzen 5 5500F: fino al 16% di presta...
L'ecosistema partner di Microsoft cresce...
Oracle registra un boom nella divisione ...
Amazon Prime Video sfida TikTok con le n...
L'uscita di Rayman Legends Retold &egrav...
Dazio UE sui pacchi extra UE, in Italia ...
La nuova lavatrice smart di Xiaomi ha tr...
Hai una PSP nel cassetto? Questo nuovo p...
Oracle presenta Java 27 con diverse novi...
Il microscopio dell'EPFL vede più...
Volvo avvia la produzione dei nuovi cami...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 23:49.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v