BUG: Gestore messaggi BN_DOUBLECLICKED riscontri non nella finestra di dialogo MFC

Traduzione articoli Traduzione articoli
Identificativo articolo: 247323 - Visualizza i prodotti a cui si riferisce l?articolo.
Questo articolo è stato archiviato. L?articolo, quindi, viene offerto ?così come è? e non verrà più aggiornato.
Espandi tutto | Chiudi tutto

In questa pagina

Sintomi

In Windows CE utilizzando le classi MFC, quando si è aggiungere che un gestore di messaggi BN_DOUBLECLICKED per un pulsante in una finestra di dialogo o una finestra, il gestore non viene chiamato quando si fa doppio clic sul pulsante. Il gestore viene chiamato su Microsoft Windows 95, Microsoft Windows 98, Microsoft Windows NT 4.0 e Microsoft Windows 2000.

Cause

Questo problema è a causa di un bug nel sistema operativo Windows CE.

Risoluzione

Una possibile soluzione consiste nell'aggiungere un gestore BN_CLICKED per il pulsante. All'interno del gestore, è necessario utilizzare codice simile al seguente per verificare se il è stato pulsante negli ultimi alcuni millisecondi:
  static BOOL s_bLastClicked = TRUE;
  static DWORD s_dwTickCount = 0;
  if (s_bLastClicked)
  {
    DWORD dwTickCount = GetTickCount();
    if ((dwTickCount - s_dwTickCount) < 500) //Last click less than 500ms?
    {
      s_bLastClicked = FALSE; //Was double-clicked, don't test next time...

      //Assume a double click...
      //Do your double-click code here...
    }
    s_dwTickCount = dwTickCount;
  }
  else
     s_bLastClicked = TRUE;
				
manuale aggiunta di CS_DBLCLKS lo stile di classe finestra e l'aggiunta di BS_NOTIFY stile per il pulsante non consente di. Tuttavia, questo processo manuale consente il messaggio da inviare durante l'esecuzione in altre piattaforme, oltre a Windows CE.

Status

Microsoft ha confermato che questo un bug nei prodotti Microsoft elencati all'inizio di questo articolo.

Informazioni

Procedura per riprodurre il problema

  1. Crea una nuova applicazione finestra di dialogo utilizzando il WCE MFC AppWizard . Accettare tutti i valori predefiniti e scegliere Fine .
  2. Nel metodo OnInitDialog , aggiungere il seguente codice prima dell'istruzione return:
    SetClassLong(m_hWnd, GCL_STYLE, GetClassLong(m_hWnd, GCL_STYLE) | CS_DBLCLKS);
  3. Aggiungere un pulsante nella finestra di dialogo. Fare clic con il pulsante destro del mouse sul pulsante e scegliere Proprietà . Fare clic sulla scheda stili e selezionare la casella di controllo notifica .
  4. Utilizzare Creazione guidata classe dal menu Visualizza e selezionando la voce di menu ClassWizard . Nella sezione ID di oggetto , fare clic su IDC_BUTTON1 . Nella sezione messaggi , fare clic sul messaggio BN_DOUBLECLICKED . Fare clic su Aggiungi funzione e quindi fare clic su Modifica codice .
  5. Inserire un punto di interruzione nel gestore messaggio BN_DOUBLECLICKED per il pulsante.
  6. Generare l'applicazione e l'esecuzione al termine della creazione.
Si noterà che il punto di interruzione non ottenere raggiunto quando in esecuzione nell'emulatore oppure quando in esecuzione nel dispositivo. Se si esegue la procedura descritta in precedenza in un'applicazione Win32 non in esecuzione su Windows CE, il gestore funziona come previsto.

Proprietà

Identificativo articolo: 247323 - Ultima modifica: domenica 23 febbraio 2014 - Revisione: 2.0
Le informazioni in questo articolo si applicano a:
  • Microsoft Windows CE Toolkit for Visual C++ 6.0 alle seguenti piattaforme
    • Microsoft Foundation Class Library 4.2
Chiavi: 
kbnosurvey kbarchive kbmt kbbug kbbutton KB247323 KbMtit
Traduzione automatica articoli
Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 247323
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com