Domanda

Nel caso wm_key town ha un messagebox() per comprendere la funzionalità di questo caso.

Qualcuno può aiutarmi perché questo caso non ha avuto risposta?

Sto cercando di eseguire il debug mentre inserisco una certa lettera dalla tastiera e il debugger che non viene a WM_KeyDown Case.

Grazie a tutti!

Questo è il mio codice:

LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
  switch( msg )
  {
  case WM_CREATE:
    break;
  case WM_COMMAND:
    break;
  case WM_KEYDOWN:
    MessageBox(NULL,L"test",L"Information",MB_ICONINFORMATION);
    break;
  case WM_DESTROY:
    // DESTROY WINDOW
    break;
  default:
    return DefWindowProc( hwnd, msg, wParam, lParam );
  }
  return  0;
}
.

È stato utile?

Soluzione

MessageBox() Visualizza una finestra di dialogo popup e quindi esegue il proprio cambio di messaggi modale in base ai messaggi di servizio per quella finestra di dialogo finché non si chiude.Mentre la finestra di dialogo è attiva, i tuoi tasti stanno andando a quella finestra di dialogo e non alla finestra a cui appartiene il WndProc().Questo è il motivo per cui non stai ottenendo più messaggi WM_KEYDOWN.Non è necessario utilizzare MessageBox() come strumento di debug per i messaggi UI, perché cambia il flusso dei messaggi UI.Utilizzare invece OutputDebugString().In questo modo, il tuo debugger (o un visualizzatore esterno come Sysinternals Debugview) può visualizzare i tuoi messaggi di debug senza influire sul comportamento del tuo UI.

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