Come faccio a determinare se il pulsante di scorrimento è premuto o depresso e, in tal caso, premerlo! - pagina 4

 
Zhunko:

Se Leo è stato attento, il link alla libreria è il mio WinUser32.mqh. Ha tutti i comandi e le funzioni necessarie. Non c'è bisogno di esportare nulla.


33017 - rimuovere/impostare lo scorrimento automatico;
o qualcos'altro?
 
LEOK:

33017 - rimuovere/impostare lo scorrimento automatico;
o qualcos'altro?
Spy++ è un aiuto.
Prendete le informazioni direttamente dalla fonte.
 
LEOK:

33017 - rimuovere/impostare l'autoscroll;
o qualcos'altro?
Per il controllo, sì. Per lo stato, avete bisogno delle proprietà del grafico.
 

Personalmente, non capisco ancora quale sia il problema nell'usare TB_GETSTATE. Di quale attività della finestra stavamo parlando? È un normale messaggio di finestra inviato al controllo, proprio come WM_GETTEXT, BM_GETSTATE ecc. Ho sempre usato questi messaggi - nessun problema. E l'applicazione riceve informazioni dai controlli con questi messaggi nello stesso modo.

E non importa se la finestra è attiva o meno.

 
Meat:

Personalmente non capisco ancora quale sia il problema nell'usare TB_GETSTATE. Di quale attività della finestra stavamo parlando? È un normale messaggio di finestra inviato al controllo, proprio come WM_GETTEXT, BM_GETSTATE ecc. Ho sempre usato questi messaggi - nessun problema. E l'applicazione riceve informazioni dai controlli con questi messaggi nello stesso modo.

Non importa se la finestra è attiva o no.

Questo pannello funziona solo con il grafico attivo. Cosa succede se, nel momento prima di inviare il messaggio, l'attività della finestra cambia? Un'altra finestra del grafico diventerà attiva. Di conseguenza, otterrete la posizione del pulsante per l'altra finestra piuttosto che la vostra. In questo caso, come potete sincronizzare l'attività della finestra per la quale volete ottenere la posizione del pulsante con il messaggio da inviare? Se questo non viene fatto, ci saranno molti errori inaspettati. Anche con la DLL questo non è ovvio.

È più facile e più affidabile ottenerlo attraverso le proprietà del grafico.

 
Zhunko:

Questo pannello funziona solo con l'orario attivo. Cosa succede se l'attività della finestra cambia un momento prima dell'invio del messaggio? Un'altra finestra del grafico diventa attiva. Corrispondentemente, otterrete la posizione del pulsante per un'altra finestra piuttosto che la vostra. In questo caso, come potete sincronizzare l'attività della finestra per la quale volete ottenere la posizione del pulsante con il messaggio da inviare? Se questo non viene fatto, ci saranno molti errori inaspettati. Anche con la DLL questo non è ovvio.

È più facile e più affidabile ottenerlo attraverso le proprietà del grafico.


Per favore, datemi un esempio di utilizzo (codice): come ottenerlo tramite le proprietà del grafico?!
 
LEOK:
Per favore, datemi un esempio di come usare (codice): come ottenere questo attraverso le proprietà del grafico?!
Imita il comando per aprire le proprietà del grafico.
Attendere il dialogo modale.
Trovatelo.
Trova l'elemento richiesto.
Chiudi il dialogo modale.

Che domande hai...
 
Zhunko:

Questo pannello funziona solo con l'orario attivo. Cosa succede se l'attività della finestra cambia un momento prima dell'invio del messaggio? Un'altra finestra del grafico diventa attiva. Corrispondentemente, otterrete la posizione del pulsante per un'altra finestra piuttosto che la vostra. In questo caso, come potete sincronizzare l'attività della finestra per la quale volete ottenere la posizione del pulsante con il messaggio da inviare? Se questo non viene fatto, ci saranno molti errori inaspettati. Anche con la DLL questo non è ovvio.

È più facile e più affidabile ottenerlo attraverso le proprietà del grafico.

Beh, si può prima forzare l'attivazione del grafico richiesto. E anche per affidabilità, controllate il nome della finestra principale del terminale. Dovrebbe contenere il nome del grafico desiderato. Tuttavia, non insisto, forse la tua versione è ancora più conveniente, perché non è necessario cambiare il grafico. Ma la finestra delle proprietà del grafico sarà lampeggiante :)

 
Meat:

Bene, potete prima attivare forzatamente il grafico richiesto. Controllate anche il nome della finestra principale del terminale per essere sicuri. Dovrebbe contenere il nome del grafico richiesto. Tuttavia, non insisto, probabilmente, la tua versione è ancora più conveniente, perché non c'è bisogno di cambiare il grafico. Ma la finestra delle proprietà del grafico apparirà :).

Certamente, è possibile attivare. Ma come sincronizzarlo? L'attività della finestra può essere disattivata da qualsiasi programma o dall'utente stesso in qualsiasi momento. Come si può risolvere questo problema? È un modo molto scomodo.

Sì, la finestra sfarfalla, ma molto rapidamente. Se il computer non è occupato, è quasi impercettibile.

LEOK:

Dammi un caso d'uso (codice): come si può ottenere questo tramite le proprietà del grafico?!

Guarda nel mio WinUser32.mqh. Ci sono dei codici di comando. Non c'è bisogno di guardare in Spy. Il resto lo conoscete già.

Andrei ha scritto correttamente:

jartmailru:
Simula il comando per aprire le proprietà del grafico.
Attendere il dialogo modale.
Trovatelo.
Trova l'elemento desiderato.
Chiudi la finestra di dialogo modale.
Solo che dovrai cambiare la scheda prima di trovare l'oggetto.
 
Meat:

Bene, potete prima attivare forzatamente il grafico richiesto. Controllate anche il nome della finestra principale del terminale per essere sicuri. Dovrebbe contenere il nome del grafico richiesto. Tuttavia, non insisto, probabilmente, la tua versione è ancora più conveniente, perché non c'è bisogno di cambiare il grafico. Ma la finestra delle proprietà del grafico sarà lampeggiante :)

La velocità con cui MT aggiornerà lo stato del pulsante è sconosciuta. Perciò è auspicabile inserire una pausa tra l'attivazione della finestra e la lettura dello stato, che in alcuni casi sarà insufficiente e la logica del programma fallirà. Quindi quello che sta facendo Vadim è in un certo senso un "modo industriale".
Motivazione: