Domanda

Il mio programma ha più thread. Sto usando MessageBox per visualizzare le informazioni per l'utente. C'è comunque (o in alternativa alla finestra di messaggio) che posso avere un altro aggiornamento filo / modificare il testo del display message-box, mentre la finestra di messaggio è ancora sullo schermo e visibile da parte dell'utente?

È stato utile?

Soluzione

Utilizzando ganci specifici del thread via GetCurrentThreadId () e SetWindowsHookEx (), è possibile collegare i messaggi che MessageBox () riceve internamente, così come l'accesso guadagno per handle della finestra principale della finestra di dialogo, che poi guadagna di accedere a tutti i controlli figlio della finestra di dialogo. È quindi possibile personalizzare la finestra di dialogo e il suo controllo, se necessario. Questa tecnica è comunemente utilizzato per implementare finestre a chiusura (prima MessageBoxTimeout () è stato introdotto), personalizzare il testo dei pulsanti, ecc.

Altri suggerimenti

Se si utilizza una finestra di messaggio Win32 standard di Io non credo che ci sia alcun modo di cambiare il testo una volta che la scatola è già mostrato (si entra in una pompa di messaggio modale).

Vorrei suggerire di creare la propria finestra che ascolta messaggi / aggiornamenti dai tuoi altri thread. In questo modo si è in controllo.

Non credo ci sia un modo diretto per fare questo, probabilmente si potrebbe provare a ottenere l'handle della finestra, ma questo è troppo disordinato. La cosa migliore è quello di creare il proprio finestra di dialogo in modo da avere il controllo totale su di esso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top