Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi
Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi
Con la prima rete 5G Standalone attiva in Italia, WINDTRE compie un passo decisivo verso un modello di connettività intelligente che abilita scenari avanzati per imprese e pubbliche amministrazioni, trasformando la rete da infrastruttura a piattaforma per servizi a valore aggiunto
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh
OPPO Find X9 Pro punta a diventare uno dei riferimenti assoluti nel segmento dei camera phone di fascia alta. Con un teleobiettivo Hasselblad da 200 MP, una batteria al silicio-carbonio da 7500 mAh e un display da 6,78 pollici con cornici ultra ridotte, il nuovo flagship non teme confronti con la concorrenza, e non solo nel comparto fotografico mobile. La dotazione tecnica include il processore MediaTek Dimensity 9500, certificazione IP69 e un sistema di ricarica rapida a 80W
DJI Romo, il robot aspirapolvere tutto trasparente
DJI Romo, il robot aspirapolvere tutto trasparente
Anche DJI entra nel panorama delle aziende che propongono una soluzione per la pulizia di casa, facendo leva sulla propria esperienza legata alla mappatura degli ambienti e all'evitamento di ostacoli maturata nel mondo dei droni. Romo è un robot preciso ed efficace, dal design decisamente originale e unico ma che richiede per questo un costo d'acquisto molto elevato
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 05-02-2007, 23: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, 10: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, 12: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, 14: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 14:49.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2007, 15: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, 17: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 17:20.
ArtificialBoy è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2007, 18: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, 18: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, 19: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, 19: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, 19: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, 19: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, 19: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, 19: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 20:08.
vizzz è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2007, 20: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, 20: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, 20: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, 21: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 15:24.
ArtificialBoy è offline   Rispondi citando il messaggio o parte di esso
Old 07-02-2007, 15: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, 16: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 16:16.
ArtificialBoy è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi Wind Tre 'accende' il 5G Standalone in Italia: s...
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh OPPO Find X9 Pro: il camera phone con teleobiett...
DJI Romo, il robot aspirapolvere tutto trasparente DJI Romo, il robot aspirapolvere tutto trasparen...
DJI Osmo Nano: la piccola fotocamera alla prova sul campo DJI Osmo Nano: la piccola fotocamera alla prova ...
FUJIFILM X-T30 III, la nuova mirrorless compatta FUJIFILM X-T30 III, la nuova mirrorless compatta
HONOR sta lavorando a uno smartphone con...
Thermaltake MAGFloe 360 Ultra ARGB Sync:...
Xiaomi 15T ora in super offerta su Amazo...
Si stringe il cerchio attorno a TP-Link ...
Amazon cambia i prezzi ancora una volta:...
Imperdibili i Google Pixel 10 a questi p...
Dyson OnTrac in super offerta su Amazon:...
Amazon: la nuova ondata di licenziamenti...
Questo portatile è un mostro: MSI...
Apple Watch Series 11 GPS + Cellular cro...
JBL Clip 5 in forte sconto su Amazon: lo...
Il nuovo top di gamma compatto di OnePlu...
Cresce il divario tra dispositivi elettr...
La missione con equipaggio Shenzhou-21 h...
Il Galaxy S26 Edge potrebbe essere ancor...
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: 13:59.


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