2012-03-29 9 views

Antwort

2

sollte die Bearbeitungssteuer ES_WANTRETURN style haben Verhalten gewünscht zu ändern:

Spezifiziert

dass ein Wagenrücklauf eingesetzt werden, wenn der Benutzer die ENTER-Taste, während Text in eine mehrzeiliges Bearbeitungssteuerung in einem Dialogfeld eingeben . Wenn Sie diesen Stil nicht angeben, hat das Drücken der EINGABETASTE die gleiche Wirkung wie das Drücken der Standardschaltfläche des Dialogfelds. Dieser Stil hat keine Auswirkungen auf ein einzeiliges Bearbeitungssteuerelement.

Um diesen Stil zu ändern, nachdem das Steuerelement erstellt wurde, verwenden Sie SetWindowLong.

+0

Ich hätte klarer sein sollen. Ich möchte, dass die Eingabetaste die Standardschaltfläche auslöst, aber ich möchte, dass der Fokus auf dem Bearbeitungssteuerelement verbleibt (und keinen Zeilenumbruch einfügen). – user1299863

+0

Dann brauchst du nicht den 'ES_WANTRETURN'-Stil, sonst wäre es von der Kontrolle gefressen worden, oder? Sie übergeben es und lassen die Standardwerte den Fokus übertragen und die Schaltfläche auslösen. Jetzt haben Sie die Benachrichtigung "BN_CLICKED" aufgerufen und Sie gehen damit um. Hier haben Sie die Möglichkeit, Ihre Aufgabe mit der Benachrichtigung zu erledigen und sie dann mit "SetFocus" zu vervollständigen, indem Sie den Fokus auf das Bearbeitungssteuerelement übertragen. –

+0

Die Dinge werden komplizierter, wenn Sie mehrere Bearbeitungssteuerelemente haben und Sie den Fokus auf den zurückstellen möchten, der es zuvor hatte. Dann sollten Sie sich die 'EN_KILLFOCUS'-Benachrichtigungen anhören und sich an die letzte vor dem Klick erinnern. Oder Sie können das Button-Steuerelement ableiten und dessen 'WM_SETFOCUS' behandeln, um zu sehen, welcher Kontrollfokus von der Schaltfläche ausging. Oder es könnte zusätzliche Dialognachrichten geben, die nützlich für den Zweck sind, den Sie mit dem Spy ++ - Tool sehen können, und den Sie nutzen können. –