Una delle chiavi della programmazione tradizionale di Windows è la gestione di messaggi inviato da Windows alle applicazioni. In poche parole, un messaggio è alcune informazioni inviate da un luogo all'altro. Per la maggior parte, Delphi semplifica la gestione dei messaggi attraverso l'uso di eventi, in genere un evento viene generato in risposta a un messaggio di Windows inviato a un'applicazione.
Tuttavia, un giorno potresti voler elaborare alcuni messaggi non comuni come: CM_MOUSEENTER che si verifica (è pubblicato da Windows) quando il cursore del mouse entra nell'area client di un componente (o modulo).
Gestire i messaggi da soli richiede alcune tecniche di programmazione extra, questo articolo è qui per aiutarci a trovare la strada giusta attraverso il messaggio fiume e raccogliere le informazioni necessarie.
Strategie per manipolare i messaggi di Windows con Delphi
Trascina una finestra: nessuna barra del titolo! Come puoi trascinare una finestra del genere? È facile e divertente: muoviamo un modulo Delphi facendo clic (e trascinandolo) nell'area client. L'idea principale è mettere le mani sul messaggio di Windows wm_NCHitTest.
Come inviare informazioni (String, Image, Record) tra due applicazioni Delphi (WM_CopyData): Scopri come inviare il messaggio WM_CopyData tra due applicazioni Delphi per scambiare informazioni e far comunicare due applicazioni. Il codice sorgente allegato mostra come inviare una stringa, registrare (tipo di dati complessi) e persino grafica a un'altra applicazione.
Windows appiccicoso: questa strategia consente di agganciare i moduli Delphi ai bordi dello schermo del desktop.
Monitoraggio delle modifiche al Registro di sistema: è necessario ricevere notifiche sulle modifiche agli attributi o al contenuto di una chiave del Registro di sistema specificata? Allora sei pronto per questo tuo toolkit di codice Delphi.
Invio di messaggi ad applicazioni senza finestre: questa strategia viene utilizzata per inviare messaggi (segnali) ad applicazioni senza finestre utilizzando AllocateHWND e DefWindowProc. Dovresti capire cosa fa Delphi in background per intercettare i messaggi di Windows, come puoi scrivere il tuo gestore di messaggi per un'applicazione con finestra e come ottenere un identificatore di messaggio univoco che puoi usare in sicurezza nelle tue applicazioni. C'è anche un piccolo bug nella procedura Delphi DeallocateHWND che puoi correggere lungo la strada.
Controllo del numero di istanze dell'applicazione: in questo articolo imparerai come "abilitare run-once" un'applicazione Delphi che può verificare la sua precedente istanza (in esecuzione). Nel corso del processo, verranno discusse diverse tecniche di attuazione di tale controllo; nonché come portare in primo piano l'applicazione già in esecuzione, se un utente tenta di eseguirla "ancora una volta". Entro la fine dell'articolo avrai un codice copia per andare a controllare il comportamento delle istanze multiple della tua applicazione: con l'opzione per limitare il numero di istanze in esecuzione.
Come gestire la modifica dell'ora di sistema utilizzando il codice Delphi: se è necessario reagire quando l'ora della data di sistema è cambiata, è possibile gestire il messaggio Windows WM_TimeChange.
Come disegnare testo personalizzato su una barra dei sottotitoli di un modulo Delphi: se si desidera aggiungere del testo personalizzato sulla barra dei sottotitoli di un modulo, senza modificare la proprietà Caption del modulo è necessario gestire un messaggio Windows speciale: WM_NCPAINT (insieme a WM_NCACTIVATE ).
Come visualizzare i suggerimenti sulle voci di menu: in base alla progettazione (Windows), nelle applicazioni Delphi, i suggerimenti assegnati alle voci di menu non vengono visualizzati nella finestra della descrizione comandi (quando il mouse passa sopra un menu).
Ottieni, imposta e gestisci le modalità del dispositivo di visualizzazione (risoluzione dello schermo e profondità del colore): questa strategia ti consente di modificare le impostazioni della modalità di visualizzazione di Windows (risoluzione e profondità del colore) dal codice Delphi. Puoi anche gestire il messaggio WM_DISPLAYCHANGE di Windows inviato a tutte le finestre quando la risoluzione del display è cambiata.
Ottieni URL corrente da IE: esiste una tattica di Delphi per recuperare l'URL completo di tutte le istanze di Internet Explorer aperte.
Rilevamento e prevenzione dell'arresto di Windows: è possibile utilizzare Delphi per annullare a livello di codice l'azione di spegnimento di Windows.
Visualizza una finestra di dialogo password: supponi di avere un tipo di applicazione critica per i dati in cui non vorresti che un utente non autore lavorasse con i dati. Cosa succede se è necessario visualizzare una finestra di dialogo password * prima * l'applicazione viene ripristinata per assicurarsi che un utente autorizzato acceda ad essa.
Rimuovere il vincolo di Windows sulla dimensione minima del modulo: in base alla progettazione di Windows, un modulo (finestra) ha un vincolo di dimensione che imposta l'altezza minima del modulo all'altezza della barra della didascalia e la larghezza a 112 pixel (tema 118 in XP).
Come rilevare un evento OnClose (OnPopDown) di TPopupMenu: Sfortunatamente, TPopupMenu non espone un evento che è possibile gestire che verrà generato quando il menu viene chiuso - dopo che un utente ha selezionato un elemento dal menu o ha attivato qualche altro elemento dell'interfaccia utente.
Trapping dei messaggi inviati a un'applicazione: "... Delphi presenta l'evento OnMessage per l'oggetto Application. Il gestore eventi OnMessage è" supposto "per permetterti di intercettare ogni messaggio inviato all'applicazione ..."