4 Stimmen

Wie deaktiviere ich das Piepen beim Drücken von ENTER auf einem einzeiligen EDIT-Steuerelement unter Windows CE?

Ich entwickle eine Anwendung für ein POCKET PC 2003 (Windows CE 4.2) Gerät mit C++ und nativem WINAPI (also kein MFC oder ähnliches). Darin habe ich eine Einzeilige Bearbeitungssteuerung, die Teil des Hauptfensters ist (nicht ein Dialog); daher ist das normale Verhalten von Windows beim Drücken von ENTER, nichts zu tun, sondern zu piepen.

Ich habe das Fensterverfahren für die Bearbeitungssteuerung untergeordnet, um das Standardverhalten mit folgendem Code zu überschreiben:

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 );
}

Dies führt zum gleichen Verhalten wie das Drücken der 'OK'-Schaltfläche.

Nun zum aktuellen Problem: Dieses Fensterverfahren überschreibt das Standardverhalten des Piepsens nicht. Ich vermute, dass es andere Nachrichten oder Nachrichten gibt, die ausgelöst werden, wenn ENTER gedrückt wird, die ich nicht erfassen kann; Ich kann einfach nicht herausfinden, welche. Ich möchte wirklich verhindern, dass das Gerät piept, da es andere Geräusche durcheinander bringt, die in bestimmten Situationen abgespielt werden, wenn eine Kollision mit einem Element auftritt, und es ist entscheidend, dass der Benutzer darüber informiert wird.

Vielen Dank im Voraus.

0voto

vkchavda Punkte 93

In einer Windows-Desktop-App hatte ich dasselbe Problem beim Umgang mit VK_TAB in WM_GETDLGCODE. Also habe ich die folgende Lösung gefunden.

SystemParametersInfo(SPI_SETBEEP, FALSE, NULL, 0); // schalte den Ton aus
// etwas machen ... //
SystemParametersInfo(SPI_SETBEEP, TRUE, NULL, 0); // schalte den Ton ein

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X