Torna indietro   Hardware Upgrade Forum > Software > Programmazione

iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre
iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre
Apple ha rinnovato iPhone 18 Pro soprattutto dentro: chip A20 Pro a 2 nm con memoria affiancata al SoC, camera di vapore tre volte più ampia, Dynamic Island più piccola del 25% grazie a Face ID sotto il display e fotocamera principale con diaframma variabile da f/1.48 a f/4. Lo abbiamo misurato al colorimetro e nei benchmark, usato con iOS 27 e messo alla prova in fotografia tra laghi, borghi e interni poco illuminati
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34
A Londra, per il trentennale dei Toughbook, Panasonic ha presentato il tablet G3 e il 2-in-1 34. Con Jon Tucker, a capo dell'ingegneria europea, abbiamo parlato di ciò che non si vede: batterie, antenne, porte seriali e accorgimenti nati sul campo
realme C100x, lo smartphone economico con la batteria da 7500 mAh. La recensione
realme C100x, lo smartphone economico con la batteria da 7500 mAh. La recensione
realme C100x scommette tutto, forse troppo, sulla batteria da 7500 mAh e sulla certificazione ArmorShell per farsi notare nella fascia più economica del mercato: lo abbiamo messo alla prova per capire a chi è rivolto questo smartphone che sacrifica un po' prestazioni, display e fotocamera per offrire l'autonomia migliore possibile a un prezzo decisamente contenuto
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 05-02-2007, 22:50   #1
ArtificialBoy
Senior Member
 
Iscritto dal: Oct 2001
Città: Modugno (BA)
Messaggi: 165
[C++] Intercettare movimento cursore in un editor

Ho un editor di testo. In realtà è quello che si ottiene nell'ambiente Visual C++ 6 quando con il wizard si crea una nuova applicazione MFC single document, scegliendo la CEditView come classe base per la vista.
A questo editor ho aggiunto delle funzioni accessibili da menù per fare delle elaborazioni sui file di testo aperti. Ma questo non è importante ora.

Ciò che vorrei sapere è come poter visualizzare il numero di linea (e magari di colonna) corrispondenti alla posizione del cursore, nella status bar in basso (come nel notepad, tanto per capirci).
Diciamo che a ricavare il numero di riga dalla posizione del cursore, ci sono più o meno riuscito. Però questo calcolo dovrebbe essere fatto ad ogni spostamento del cursore, quindi mi servirebbe intercettare l'evento di spostamento del cursore. Infine dovrei mandare l'informazione alla status bar (ma penso che a questo ci penserò dopo).

Spero di essermi spiegato bene, non saprei come meglio rendere il concetto, avendo poca esperienza di programmazione.

Grazie per eventuali suggerimenti.
ArtificialBoy è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2007, 09:21   #2
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Provo a ti faccio sapere...comunque con MFC non ti aspettare di poter fare grandi cose
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2007, 11:46   #3
franklar
Senior Member
 
L'Avatar di franklar
 
Iscritto dal: Oct 2000
Città: Prov. Bari
Messaggi: 1771
mi iscrivo, dato che la cosa interessa anche me
__________________
Слава Україні!
franklar è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2007, 13:36   #4
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Mi sa che ho trovato un altro metodo...un attimo...

Ultima modifica di cionci : 06-02-2007 alle 13:49.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2007, 14:02   #5
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Ecco qua:

CEdit &edit = this->GetEditCtrl();

int startchr, endchr;
edit.GetSel(startchr, endchr);


edit.LineFromChar(endchr) //per la riga
endchr-edit.LineIndex(edit.LineFromChar(endchr)) //per la colonna
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2007, 16:11   #6
ArtificialBoy
Senior Member
 
Iscritto dal: Oct 2001
Città: Modugno (BA)
Messaggi: 165
Uhm, cionci grazie. Purtroppo non è quello che mi serve. ^^

Ti spiego. Il numero di linea sono riuscito a ricavarmelo, il problema è che quando muovi il cursore con i tasti freccia, con il mouse o in altro modo, ogni volta va ricalcolato il numero di linea. Quello che mi serve appunto, come dicevo nel primo post, è un evento (appartenente al ceditview, al cedit, al cframe, al cwnd o quello che è) che risponda agli spostamenti del cursore, in modo da richiamare ogni volta le operazioni che hai detto anche tu.

Ho visto che nel cwnd ci sono metodi, tipo OnKeyUp, che forse potrebbero essere associati alla pressione dei tasti freccia, ma sinceramente non capisco bene come funzionano (per l'esatezza nn capisco gli argomenti) e non so se fanno al caso mio.

Comunque grazie ancora per esserti sbattuto. Se dovessi avere qualche altra idea sono tutto orecchie.

Ultima modifica di ArtificialBoy : 06-02-2007 alle 16:20.
ArtificialBoy è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2007, 17:25   #7
vizzz
Senior Member
 
L'Avatar di vizzz
 
Iscritto dal: Mar 2006
Città: Bergamo
Messaggi: 2499
Codice:
void CTuaView::OnMouseMove(UINT nFlags, CPoint point) 
{
    // TODO: Add your message handler code here and/or call default
    POINT pt;
    GetCursorPos( &pt );
    TRACE2("pos: x=%d - y=%d\n", pt.x, pt.y);
    CView::OnMouseMove(nFlags, point);
}
in class wizard cerca WM_MOUSEMOVE, doppio click e ti crea l'evento.
ciao
vizzz è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2007, 17:56   #8
ArtificialBoy
Senior Member
 
Iscritto dal: Oct 2001
Città: Modugno (BA)
Messaggi: 165
Grazie anche a te per l'intervento. Purtroppo muovere il mouse sulla finestra non equivale a muovere il cursore. Dovrei clickare col sinistro per spostare il cursore altrove. Credo ci sia anche l'evento per il click sinistro ma non ne capisco gli arogmenti come per OnKeyUp.
Inoltre dovrei comunque implementare altri eventi legati alla frecce direzionali o alla pressione del tasto Invio che manda a capo e sposta il cursore o anche dei tasti Home e Fine.
Magari però esiste un modo più semplcie di tutto questo e nella mia ignoranza non so vederlo. °°
ArtificialBoy è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2007, 18:03   #9
vizzz
Senior Member
 
L'Avatar di vizzz
 
Iscritto dal: Mar 2006
Città: Bergamo
Messaggi: 2499
sono un po fuso ho letto cursore e ho pensato al mouse
cerco ancora...
vizzz è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2007, 18:12   #10
vizzz
Senior Member
 
L'Avatar di vizzz
 
Iscritto dal: Mar 2006
Città: Bergamo
Messaggi: 2499
ok, ho la mente lucida ora:

Codice:
void CTuaView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
	// TODO: Add your message handler code here and/or call default

    if (nChar == VK_PRIOR)
        TRACE0("pgup\n");
    else if (nChar == VK_NEXT)
        TRACE0("pgdown\n");
    else if (nChar == VK_UP)
        TRACE0("arrowup\n");
    else if (nChar == VK_DOWN)
        TRACE0("arrowdown\n");
    else if (nChar == VK_RETURN)
        TRACE0("return\n");
	
	CView::OnKeyDown(nChar, nRepCnt, nFlags);
}
vizzz è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2007, 18:17   #11
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Tanto vale aggiornarlo per ogni tasto rilasciato e per ogni click.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2007, 18:41   #12
ArtificialBoy
Senior Member
 
Iscritto dal: Oct 2001
Città: Modugno (BA)
Messaggi: 165
Uh, ecco, allora funziona così quell'evento. °° A guardarlo così codificato mi pare debba essere quello che mi serve, dunque domani proverò a implementarlo.

Grazie.


Se tutto va bene, poi magari vi chiedo come mandare le info alla status bar. Ovviamente prima ci proverò da solo.
ArtificialBoy è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2007, 18:54   #13
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Mi sa che ti serve OnKeyUp anche perchè altrimenti rilevi il valore prima dell'inserimento del carattere
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2007, 18:59   #14
vizzz
Senior Member
 
L'Avatar di vizzz
 
Iscritto dal: Mar 2006
Città: Bergamo
Messaggi: 2499
Quote:
Originariamente inviato da cionci
Mi sa che ti serve OnKeyUp anche perchè altrimenti rilevi il valore prima dell'inserimento del carattere
giusto
per la status bar guardati in giro, esistono molti esempi in rete
i miei siti di riferimento sono: codeproject e codeguru

edit:
http://msdn2.microsoft.com/en-us/lib...y6(VS.80).aspx
per i parametri della funzione onkeyup

Ultima modifica di vizzz : 06-02-2007 alle 19:08.
vizzz è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2007, 19:09   #15
ArtificialBoy
Senior Member
 
Iscritto dal: Oct 2001
Città: Modugno (BA)
Messaggi: 165
Sì, avevo pensato anche io di usare il KeyUp.

Terrò presente quei due siti. Grazie. E comunque aggiornerò sui risultati.
ArtificialBoy è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2007, 19:51   #16
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Comunque non basta quell'evento e nemmeno quelli per il mouse a meno di gestire una combinazione di eventi...in ogni caso ci deve essere qualcos'altro...un messaggio magari che viene lanciato per qualsiasi modifica fatta nell'edit box...compreso il cambiamento di posizione del cursore...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2007, 19:56   #17
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Allora...il migliore è:

ON_CONTROL_REFLECT_EX(EN_CHANGE, OnEditChange)

In combinazione con WM_KEYUP per prendere i tasti freccia...

Il problema ora è il mouse...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2007, 20:03   #18
ArtificialBoy
Senior Member
 
Iscritto dal: Oct 2001
Città: Modugno (BA)
Messaggi: 165
Effettivamente se io faccio un paste da menù o da tasto destro dle mouse, non intercetterebbe lo spostamento. Ora guardo quest'altro evento che mi dici.
Comunque, prima di chiedere qui, non riuscivo a capire come funzionasse l'OnKeyUp perché non ci pensavo che venisse chiamato dal framework e quindi i parametri non dovessi passarli io. Poi vedendo il codice scritto, ho capito quanto ero fesso ed infatti i parametri non mi serve affatto usarli.


EDIT: cmq a me sembra strano che nn esista un metodo un po' più rapido per fare il tutto °°

Ultima modifica di ArtificialBoy : 07-02-2007 alle 14:24.
ArtificialBoy è offline   Rispondi citando il messaggio o parte di esso
Old 07-02-2007, 14:28   #19
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
L'evento che ti ho detto serve anche per catturare le ripetizioni dei tasti...se tenevi premuto un tasto WM_KEYUP non aggiornava il conteggio.

Per aggiornare la status bar ho aggiunto un indicator e poi con un messaggio utente (con costante WM_USER + 1) ho usato la SendMessage per notificarlo dal CEditView al CFrameWnd.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 07-02-2007, 15:14   #20
ArtificialBoy
Senior Member
 
Iscritto dal: Oct 2001
Città: Modugno (BA)
Messaggi: 165
Quote:
Originariamente inviato da cionci
Allora...il migliore è:

ON_CONTROL_REFLECT_EX(EN_CHANGE, OnEditChange)

In combinazione con WM_KEYUP per prendere i tasti freccia...

Il problema ora è il mouse...

Sinceramente non ho capito bene come funziona sta cosa dei messaggi riflessi. °°
Effettivamente in questo modo mi intercetta eventuali paste da menù e ripetizioni di tasti, solo che non mi chiama più il SaveModified() quando chiudo l'editor o anche solo i ldocumento. °°

Ultima modifica di ArtificialBoy : 07-02-2007 alle 15:16.
ArtificialBoy è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre iPhone 18 Pro: la recensione del miglior iPhone ...
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34 Panasonic, 30 anni di Toughbook: la "Bibbia...
realme C100x, lo smartphone economico con la batteria da 7500 mAh. La recensione realme C100x, lo smartphone economico con la bat...
Star Wars Zero Company è l'erede di XCOM 2 Star Wars Zero Company è l'erede di XCOM ...
Test ride Can-Am Origin: la moto elettrica che fa dimenticare il motore a scoppio (ma occhio all'autonomia) Test ride Can-Am Origin: la moto elettrica che f...
Nothing e CMF in offerta Prime: Ear (3) ...
Football Manager 27 sta arrivando: ecco ...
NASA verso l'addio a Dragon dopo il 2030...
Theras porta in Italia Maestro, il robot...
Un iPhone bloccato si riavvia dopo 72 or...
Radeon RX 7000, Sapphire rilascia un nuo...
Dell presenta Pro Rugged 13 Extreme e Pr...
La Luna di Raccolto sull'Etna diventa fo...
Sondaggio Steam: NVIDIA GeForce RTX 5070...
Nuance Audio Plus, EssilorLuxottica pres...
Cloudflare rilascerà certificati ...
Offerte Prime anticipate: portatile con ...
Da 110 anni a 19 secondi: IBM Nighthawk ...
Europol accusa un sedicenne di essere il...
Meno frammentazione, più controll...
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: 14:08.


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