Estoy desarrollando una aplicación dirigida a un dispositivo POCKET PC 2003 (Windows CE 4.2) usando C++ y WINAPI nativo (es decir, sin MFC o similar). En él tengo un control de edición de línea única que parte de la ventana principal (no un diálogo); por lo tanto, el comportamiento normal de Windows al presionar ENTER es no hacer nada más que un pitido.¿Cómo desactivar el pitido al presionar ENTRAR en un control de EDIT de línea única bajo Windows CE?
He subclases el procedimiento de ventana para el control de edición para anular el comportamiento por defecto usando el siguiente código:
LRESULT CALLBACK Gui::ItemIdInputProc(HWND hwnd, UINT message, WPARAM wParam,
LPARAM lParam) {
switch (message) {
case WM_KEYDOWN :
switch (wParam) {
case VK_RETURN :
addNewItem();
return 0;
}
}
return CallWindowProc(oldItemIdInputProc_, hwnd, message, wParam, lParam);
}
Esto hace que el comportamiento equivalente a pulsar el botón 'OK'.
Ahora al problema en cuestión: este procedimiento de ventana no anula el comportamiento predeterminado de hacer un pitido. Sospecho que debe haber algún otro mensaje o mensaje que se active cuando se presiona ENTER que no puedo capturar; Simplemente no puedo entender cuál. Realmente quiero detener el pitido del dispositivo ya que interfiere con otros sonidos que se reproducen en ciertas circunstancias cuando se produce una colisión del elemento, y es crucial que el usuario reciba una alerta al respecto.
Gracias de antemano.
No sé si esto es cierto para Windows CE también, pero con el escritorio de Windows se obtiene navegación mediante el teclado en una ventana estándar llamando [IsDialogMessage ] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms645498.aspx) como parte del envío de mensajes. Entre otras cosas, esto también trata con la tecla [Intro], invocando el botón predeterminado (si hay uno). – IInspectable