|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Nov 2000
Messaggi: 279
|
[.NET]&[Win32]Intercettare il momento precedente all'acquisto del Focus
Sto realizzando una tastiera su schermo per una mia applicazione. In pratica essa funzionerà solo all'interno della Form in cui l'ho inserità! (sarà un controllo figlio della form e interagirà solo con controlli figlio di quella stessa form)
Ora la tastiera è costituita da Button...ad esempio [A] [b] e alla pressione del tasto vorrei che il rispettivo pulsante fosse mandato al controllo selezionato nel momento in cui lo premo. Ed ecco il problema...come faccio ad inviare la pressione al controllo giusto? In pratica devo sapere quale controllo sia attivo al momento in cui premo il pulsante. Io pensavo esistesse un evento che precedesse la perdita definitiva del focus(in modo da scrivermi da qualche parte quale controllo stava perdendo il focus)...ed un altro che precedesse il set del focus sul nuovo controllo(per eseguire il Send del tasto PRIMA che il vecchio controllo avesse perso il focus)..e in effetti la documentazione così mi lasciava supporre, non tanto per quanto scritto qua.. Evento Control.Leave: Viene generato quando lo stato attivo esce dall'area del controllo. ma per quello spiegato qua: Gli eventi di attivazione si verificano nel seguente ordine: 1)Enter 2)GotFocus 3)Leave 4)Validating 5)Validated 6)LostFocus detta così semprerebbe che se io intercetto l'evento leave del controllo quello non ha ancora "lostfocus"...invece non è così!! Idee alternative? [managed e non] (spero non mi proponiate di controllare continuamente con un timer qual è il controllo attivo nel form e scrivermelo da qualche parte perchè mi sembra lento e poco elegante) (Mi basterebbe ![]() Grazie!
__________________
In un arco di tempo abbastanza lungo l'indice di sopravvivenza di ognuno scende a zero |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Apr 2002
Città: Vigevano(PV)
Messaggi: 2123
|
up
__________________
Gnu/Linux User ![]() |
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Jul 2003
Città: pisa
Messaggi: 141
|
un'idea Win32 potrebbe essere questa: quando una qualunque casella di testo (controllo edit) acquista il focus, la finestra madre riceve tramite il messaggio WM_COMMAND la notifica EN_SETFOCUS, a questo punto basta salvare l'handle del controllo (contenuto in lparam) in una variabile, che poi verrà letta nel momento in cui si preme il tasto per inserire una lettera
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 12:51.